首页
社区
课程
招聘
[求助]请教关于windows的调度方式?
发表于: 2011-2-17 18:18 5410

[求助]请教关于windows的调度方式?

2011-2-17 18:18
5410
最近学习遇到疑惑,windows在进行线程调度时是根据优先级来的,这边的优先级是只考虑线程的优先级吗,还是也要考虑线程所在进程的优先级?~~在网上还看到windows的进程调度,既然windows是以线程为单位进行调度,那进程调度有什么意义~还是应该这么理解:先进行进程调度,在选中的进程里面再进行线程调度?求朋友帮忙解惑·~

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 233
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
原来我跟你一样 模模糊糊
看了几本书后就清晰多了
WINDOWS内核情景分析看下吧
2011-2-17 21:42
0
雪    币: 96
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
能帮忙解释下嘛,还没回校,借不到《WINDOWS内核情景分析》~~
2011-2-18 15:48
0
雪    币: 246
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
  1、首先,windows是以线程为调度单位的,但有时人们叙述不严谨,有时是一种习惯,特别是叙述单线程进程的时候,会使用进程调度的说法。实际上所有的调度是针对线程的。
  2、线程被调度时,分为32个优先级数,分别为0~31优先级。线程的优先级不是使用0-31级直接设置的,而是通过进程优先级(分为6级)和线程相对进程优先级(分为7级)来设置的,即需要设置进程优先级和线程相对优先级(通常也称为线程优先级),操作系统会根据这两个优先级确定出线程调度的实际优先级。
  3、windows支持6个进程优先级类(进程是不可调度的,进程优先级是Microsoft提出的一个抽象概念,有助于用户理解,所有的线程优先级是相对于进程优先级的),如下:
      优先级类            标识符
      实时            REALTIME_PRIORITY_CLASS
      高               HIGH_PRIORITY_CLASS
      高于默认            ABOVE_NORMAL_PRIORITY_CLASS
      默认            NROMAL_PRIORITY_CLASS
      低于默认            BELOW_NORMAL_PRIORITY_CLASS
      空闲            IDLE_PRIORITY_CLASS
  4、线程的相对优先级有7级,分别是:
      相对优先级         常量标识符
      时间关键            THREAD_PRIORITY_TIME_CRITICAL
      最高            THREAD_PRIORITY_HIGHEST
      高于默认            THREAD_PRIORITY_ABOVE_NORMAL
      默认            THREAD_PRIORITY_NORMAL
      低于默认    THREAD_PRIORITY_BELOW_NORMAL
      最低            THREAD_PRIORITY_LOWEST
      空闲            THREAD_PRIORITY_IDLE
  5、线程真正优先级与上面进程优先级、线程相对优先级的对应关系:

      进程优先级和线程优先级之间的映射表:

[进程优先级 空闲 低于默认 默认 高于默认 高 实时]
       
相对优先级
 时间关键   15  15    5          15   15          31
 最高     6          8    10          12   15   26
 高于默认   5   7    9   11  14   25
 默认     4   6    8   10  13   24
 低于默认   3   5    7   9   12   23
 最低            2          4            6          8           11          22
 空闲     1          1            1          1           1          16

线程优先级值没有为0的。这是因为0优先级保留给页面清零线程了。对于17,18,19,20,21,27,28,29,30.如果编写一个以内核方式运行的设备驱动程序,可以获得这些优先级的等级,而用户方式的应用程序则不能
2011-2-20 00:04
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看不懂
2011-2-20 00:23
0
游客
登录 | 注册 方可回帖
返回
//