第7章 线程的调度、优先级和亲缘性.PDFVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 线程的调度、优先级和亲缘性.PDF

下载 第7章 线程的调度、优先级和亲缘性 抢占式操作系统必须使用某种算法来确定哪些线程应该在何时调度和运行多长时间。本章 将要介绍Microsoft Windows 98和Windows 2000使用的一些算法。 上一章介绍了每个线程是如何拥有一个上下文结构的,这个结构维护在线程的内核对象中。 这个上下文结构反映了线程上次运行时该线程的 C P U寄存器的状态。每隔2 0 m s左右,Wi n d o w s 要查看当前存在的所有线程内核对象。在这些对象中,只有某些对象被视为可以调度的对象。 Wi n d o w s选择可调度的线程内核对象中的一个,将它加载到 C P U 的寄存器中,它的值是上次保 存在线程的环境中的值。这项操作称为上下文转换。 Wi n d o w s实际上保存了一个记录,它说明 每个线程获得了多少个运行机会。使用 M i c r o s o f t S p y + +这个工具,就可以了解这个情况。图 7 - 1显 示了一个线程的属性。注意,该线程已经被调度 了37 379 次。 目前,线程正在执行代码,并对它的进程的 地址空间中的数据进行操作。再过 2 0 m s 左右, Wi n d o w s就将C P U 的寄存器重新保存到线程的上 下文中。线程不再运行。系统再次查看其余的可 调度线程内核对象,选定另一个线程的内核对象, 将该线程的上下文加载到 C P U 的寄存器中,然后 继续运行。当系统引导时,便开始加载线程的上 下文,让线程运行,保存上下文和重复这些操作, 图7-1 线程的属性 直到系统关闭。 总之,这就是系统对线程进行调度的过程。这很简单,是不是? Wi n d o w s被称为抢占式多 线程操作系统,因为一个线程可以随时停止运行,随后另一个线程可进行调度。如你所见,可 以对它进行一定程度的控制,但是不能太多。记住,无法保证线程总是能够运行,也不能保证 线程能够得到整个进程,无法保证其他线程不被允许运行等等。 注意 程序员常常问我,如何才能保证线程在某个事件的某个时间段内开始运行,比 如,如何才能确保某个线程在数据从串行端口传送过来的 1 m s内开始运行呢?我的回 答是,办不到。实时操作系统才能作出这样的承诺,但是 Wi n d o w s不是实时操作系统。 实时操作系统必须清楚地知道它是在什么硬件上运行,这样它才能知道它的硬盘控制 器和键盘等的等待时间。 M i c r o s o f t对Wi n d o w s规定的目标是,使它能够在各种不同的 硬件上运行,即能够在不同的 C P U 、不同的驱动器和不同的网络上运行。简而言之, Wi n d o w s没有设计成为一种实时操作系统。 尽管应强调这样一个概念,即系统只调度可以调度的线程,但是实际情况是,系统中的大 多数线程是不可调度的线程。例如,有些线程对象的暂停计数大于 1。这意味着该线程已经暂 停运行,不应该给它安排任何 C P U 时间。通过调用使用 C R E AT E _ S U S P E N D E D 标志的 C r e a t e P r o c e s s 或C r e a t e T h r e a d 函数,可以创建一个暂停的线程。(本章后面还要介绍S u s p e n d 第 7章 线程的调度、优先级和亲缘性计计143 下载 T h r e a d和R e s u m e T h r e a d 函数。) 除了暂停的线程外,其他许多线程也是不可调度的线程,因为它们正在等待某些事情的发 生。例如,如果运行N o t e p a d ,但是并不键入任何数据,那么N o t e p a d 的线程就没有什么事情要 做。系统不给无事可做的线程分配 C P U 时间。当移动N o t e p a d 的窗口时,或者N o t e p a d 的窗口需 要刷新它的内容,或者将数据键入N o t e p a d ,系统就会自动使N o t e p a d 的线程成为可调度的线程。 这并不意味着N o t e p a d 的线程立即获得了C P U时间。它只是表示N o t e p a d 的线程有事情可做,系 统将设法在某个

文档评论(0)

专业好文档 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6110200002000000

1亿VIP精品文档

相关文档