1.1 系统根据进程的优先级在当前所有的进程中选择一个优先级最高的,让他获得cpu,然后在该进程中(设该进程有多个线程),根据线程的优先级,在该进程中的所有线程中选择一个优先级最高的线程,最终把cpu的时间片分给他
1.2 系统根据线程的优先级
    在当前(整个系统中)所有的线程中选择一个优先级最高的,最终把cpu的时间片分给他.
2.进程是不会获得时间片的,获得时间片的是线程.请问:1.1和1.2哪种理解是正确的,或者是都不正确,或者是哪里有不对的地方,请指正??
     
     2的理解对吗???

解决方案 »

  1.   

    这个跟操作系统的结构很有关系第一种理解应该差不多符合windowsnt系统的结构吧
      

  2.   

    os的线程分发算法是很复杂的,基本上可以以1.2的理解,但低优先级的线程长时间不能获得时间片,会变成线程饥渴状态,系统会临时提高该线程的优先级以获得cpu时间,进程是不可派发对象,2的理解是对的。
      

  3.   

    用1.2 的解释,进程就优先级类(注意:是优先级类)只是影响该进程的线程优先级分配,不会参与cpu分配 
      

  4.   

    这个问题,起始操作系统书上已经讲的很清楚了进程是资源分配单元,代理了应用程序的示例线程是操作系统调度的单元,即cpu占有的代理对于不同的操作系统,其实现有区别,不能一概而论,对于windows系列,1.2是正确的,但是不意味着没有1.1的做法
      

  5.   

    关键是在像window系统中,进程是没有优先级的,如果哪个系统对进程也采取优先级管理,那到是可能用1.1的方法
      

  6.   

    我的意思是,系统直接调度线程,不需要进程参与。
    系统是根据每个线程的Base Priority来分配CPU时间片的,Base Priority由Process Priority Class和Thread Priority Level共同决定。
      

  7.   

    window中有几种优先级类,不同的优先级类,该进程的线程分配到的默认优先级不同,关于优先级类,可以看看MSDN的SetPriorityClass函数, ok
      

  8.   

    还有一点,为什么不去掉进程的优先级这个概念,而直接用线程的优先级,反正系统是根据线程的优先级来调度的,而要那么麻烦,让Base Priority由Process Priority Class和Thread Priority Level共同决定。直接Base Priority由Thread Priority Level决定不好吗