Windows操作系统-处理机管理(下)资料.ppt

Windows操作系统-处理机管理(下)资料.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实时优先级 在应用程序中,要把线程的优先级提升到实时优先级,用户必须有升高线程优先级的权限。 如果用户进程在实时优先级运行时间过多,它将可能阻塞关键系统功能的执行,阻塞系统线程的运行;但不会阻塞硬件中断处理。 在被其他线程抢先时,具有实时优先级线程与具有可变优先级线程的行为是不同的。 Windows 并不是通常意义上的实时,并不提供实时操作系统服务。 Windows的线程调度 中断优先级与线程优先级的关系 Windows的线程调度 线程时间配额 时间配额是一个线程从进入运行状态到Windows 检查是否有其他优先级相同的线程需要开始运行之间的时间总和。 一个线程用完了自己的时间配额时,如果没有其它相同优先级线程,Windows将重新给该线程分配一个新的时间配额,并继续运行。 时间配额不是一个时间长度值,而一个称为配额单位(quantum unit)的整数。 Windows的线程调度 提高前台线程优先级的问题 假设用户首先启动了一个运行时间很长的电子表格计算程序,然后切换到一个计算密集型的应用(如一个需要复杂图形显示的游戏)。 如果前台的游戏进程提高它的优先级,后台的电子表格将会几乎得不到CPU时间。 但增加游戏进程的时间配额,则不会停止电子表格计算的执行,只是给游戏进程的CPU时间多一些。 线程时间配额 Windows的线程调度 调度器数据结构 Windows的线程调度 就绪位图(KiReadySummary) 为了提高调度速度,Windows维护了一个称为就绪位图(KiReadySummary)的32位量。就绪位图中的每一位指示一个调度优先级的就绪队列中是否有线程等待运行。B0与调度优先级0相对应,B1与调度优先级1相对应,等等。 空闲位图(KiIdleSummary) Windows 还维护一个称为空闲位图(KiIdleSummary)的32位量。空闲位图中的每一位指示一个处理机是否处于空闲状态。 调度器数据结构 Windows的线程调度 调度策略 Windows严格基于线程的优先级来确定哪一个线程将占用处理机并进入运行状态。 Windows 在单处理机系统和多处理机系统中的线程调度是不同的。 Windows的线程调度 1. 主动切换 Windows的线程调度 2. 抢先 当一个高优先级线程进入就绪状态时,正在处于运行状态的低优先级线程被抢先。 Windows的线程调度 用户态下运行的线程可以抢先内核态下运行的线程。 在判断一个线程是否被抢先时,并不考虑线程处于用户态还是内核态,调度器只是依据线程优先级进行判断。 当线程被抢先时,它被放回相应优先级的就绪队列的队首。 处于实时优先级的线程在被抢先时,时间配额被重置为一个完整的时间配额; 处于动态优先级的线程在被抢先时,时间配额不变,重新得到处理机使用权后将运行到剩余的时间配额用完。 2. 抢先 Windows的线程调度 3. 时间配额用完 Windows的线程调度 如果刚用完时间配额的线程优先级降低了,Windows 将寻找一个优先级高于刚用完时间配额线程的新设置值的就绪线程。 如果刚用完时间配额的线程的优先级没有降低,并且有其他优先级相同的就绪线程,Windows 将选择相同优先级的就绪队列中的下一个线程进入运行状态,刚用完时间配额的线程被排到就绪队列的队尾(即分配一个新的时间配额并把线程状态从运行状态改为就绪状态)。 如果没有优先级相同的就绪线程可运行,刚用完时间配额的线程将得到一个新的时间配额并继续运行。 3. 时间配额用完 Windows的线程调度 4. 线程结束 当线程完成运行时,它的状态从运行状态转到终止状态。 线程完成运行的原因可能是 通过调用ExitThread而从主函数中返回 通过被其他线程通过调用TerminateThread来终止。 如果处于终止状态的线程对象上没有未关闭的句柄,则该线程将被从进程的线程列表中删除,相关数据结构将被释放。 Windows的线程调度 在下列5种情况下,Windows 会提升线程的当前优先级: I/O操作完成 信号量或事件等待结束 前台进程中的线程完成一个等待操作 由于窗口活动而唤醒图形用户接口线程 线程处于就绪状态超过一定时间,但没能进入运行状态(处理机饥饿) 线程优先级提升的目的是改进系统吞吐量、响应时间等整体特征,解决线程调度策略中潜在的不公正性。但它也不是完美的,它并不会使所有应用都受益。 Windows 永远不会提升实时优先级范围内(16至31)的线程优先级。 线程优先级提升 Windows的线程调度 1. I/O操作完成后的线程优先级提升 在完成I/O操作后,Windows 将临时提升等待该操作的线程的优先级,以保证等待I/O操作的线程能有更多的机会立即开始处理得到的结果。 为了避免I/O操作导致对某些线程

您可能关注的文档

文档评论(0)

喵咪147 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档