操作系统实例分析-WS03线程调度.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows Server 2003 进程管理概述 进程是系统分配资源的基本单位 进程对象 WS03把进程视为对象(Object),以句柄(handle)来引用 进程对象属性;PID, Access Token, Base Priority, 默认处理器集合等 一个WS03进程必须包含一个线程,该线程可能创建别的线程。 一个进程内的多个线程可以在不同的处理器上并行运行 WS03进程结构 执行体进程块(ENPROCESS) WS03的线程管理 WS03的线程管理 32个优先级:0-31 每个优先级的就绪线程在每个处理机上排成一个先进先出队列; 当一个线程状态变成就绪时,它可能立即运行或排到相应优先级队列的尾部; 总运行优先级最高的就绪线程; 完全的事件驱动机制: 时间片用完事件; 等待结束事件; 主动挂起事件; 在同一优先级的各线程按时间片轮转算法进行调度; 在多处理机系统中多个线程并行运行; WS03的线程状态 待调度就绪状态(Deferred Ready):线程已获得除处理机外的所需资源,正等待选择一个空闲处理机或抢先一个处理机正在执行的线程,进行调度执行。 就绪状态(Ready):线程已获得除处理机外的所需资源,并已确定了执行该线程的处理机,正等待成为该处理机上的最高优先级线程,以调度执行。 备用状态(Standby):线程已变成当前处理机上的最高优先级线程,正进行描述表切换,以进入运行状态。系统中每个处理器上只能有一个处于备用状态的线程。 运行状态(Running):已完成描述表切换,线程进入运行状态。线程会一直处于运行状态,直到被抢先、时间片用完、线程终止或进入等待状态。 等待状态(Waiting):线程正等待某对象,以同步线程的执行。当等待事件出现时,等待结束,并根据优先级进入运行或就绪状态。 就绪挂起状态(Ready process swapped):线程已结束等待状态,但线程所在进程的所有线程的内核堆栈都在外存(内存管理模块可能把线程占用的内存置换到外存)。 转换状态(Transition kernel stack swapped):线程已结束等待状态,但线程的内核堆栈位于外存。这时线程进入转换状态,当线程的内核堆栈被调回内存时,线程进入待调度就绪状态。 终止状态(Terminated):线程执行完就进入终止状态; 初始化状态(Initialized):线程创建过程中的线程状态; 需要注意的转换 从等待状态到待调度就绪状态 如果该线程的内核堆栈在内存,则变成待调度就绪状态 如果该线程的内核堆栈在外存,但不是其所在进程的所有线程的内核堆栈都在外存,则变成转换状态 其所在进程的所有线程的内核堆栈都在外存,则变成就绪挂起状态 从待调度就绪状态到运行状态 有空闲处理机 没有,判断是否可抢占某处理器上处于运行或备用状态的线程,如可抢先 不可抢先 被抢占的运行或备用状态的线程会回到 就绪态(下次还会在该处理机运行) 待调度就绪状态(下次不会在该处理机运行) WS03支持多处理机 每个处理机都有自己的一套线程调度数据结构: 一个待调度就绪线程队列 一个32级的就绪线程队列 一个备用线程变量 一个运行线程变量 WS03线程的API CreateThread()函数在调用进程的地址空间上创建一个线程,以执行指定的函数;返回值为所创建线程的句柄 ExitThread()函数用于结束本线程 SuspendThread()函数用于挂起指定的线程 ResumeThread()函数递减指定线程的挂起计数,挂起计数为0时,线程恢复执行 WS03线程的挂起和激活 WS03线程的优先级 实时(real-time):从16到31,如设备监控线程, 不可变。 可变优先级(variable-priority):从1到15(级别0保留为系统使用)。 线程的基本优先级 = [进程的基本优先级 - 2,进程的基本优先级 + 2],由应用程序控制 线程的动态优先级 = [进程的基本优先级 - 2, 16],由WS03核心控制 一个系统线程优先级(0),用于对系统中空闲的物理页面进行清零的零页线程。 WS03的线程优先级(Base Priority)由进程优先级类(Priority Class)和线程优先级偏移(Priority Level)构成,分别由相关函数控制。 与线程优先级控制有关的API 进程优先级类函数: GetPriorityClass(读取) SetPriorityClass(设置) 线程优先级偏移: GetThreadPriority(读取) SetThreadPriority(设置) 线程时间配额(Quantum) 时间配额是一个线程从进入运行状态到WS03检查是否有其他优先级相同的线程需要开始运行之间的时间总和。 时间配额不是一个时间长

文档评论(0)

bhl0572 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档