- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 进程调度和时间
第八章 进程调度和时间;8.1 进程调度;;8.1.1 算法;8.1.2 调度参数;;内核在特定的进程状态下计算一个进程的优先权: 1.内核将优先权赋给一个即将进入睡眠的进程。 在低层算法中睡眠的进程的不活动的时间越长,就越容易引起系统瓶颈问题,因此,它们比可能引起较少系统瓶颈的进程得到较高的优先权。 例:一个 睡眠等待磁盘I/O 的进程比 等待一个自由缓冲区 的进程具有较高优先权。这是因为等待磁盘I/O的进程已经有了缓冲区,当它醒来时就有机会做足够的处理,从而释放该缓冲区以及可能的其他资源。它释放的资源越多,其他进程的运气就会越好,不用挤在那里等待资源。 其次,一个等待自由缓冲区的进程,可能正在等待由一个等待I/O完成的进程所占用的缓冲区。 2.内核调整从核心态返回到用户态的进程的优先权。 3.时钟处理程序以1秒钟的间隔调整用户态下的所有进程的优先权,并使内核运行调度算法防止某个进程垄断CPU的使用。; 在一个进程的时间片中,时钟可能使它中断若干次,每次时钟中断时,时钟处理程序都要使该进程表中的一个字段增值。该字段记录了该进程的最近CPU使用时间。 时钟处理程序每秒一次地根据一个衰减函数来调整每个进程的最近CPU使用时间: decay(CPU)=CPU/2 当时钟处理程序重新计算最近CPU使用时间时会重新计算在“被抢先”和“就绪”状态下的每个进程的优先权。 priority=(“recent CPU usage”/2)+(base level user priority) 优先权值 最近CPU使用时间 基级用户优先权值 优先级数越低,优先权越高。; 内核试图每秒一次计算所有活动进程的优先权,这个时间间隔可以稍有变化: 当内核正在执行一段临界区代码时,如果时钟中断已经到来,内核并不重新计算优先权,因为那会使内核在临界区呆的时间过长。 每个进程中访问临界资源的那段代码称为临界区(临界资源是一次仅允许一个进程使用的共享资源)。;8.1.3 进程调度的例子; 内核可能会先于进程B而调度进程A,因为进程A在“就绪”状态的时间较长。这是对具有相同优先权的进程进行调度的原则。;8.1.4 进程优先权的控制;8.1.5 公平共享调度;公平共享组优先权;进程A在一个组,进程B和C在另一个组。 内核按A,B,A,C,A,B这样的次序进行调度。 在第一组中的进程所得到的cpu时间是第二组中的进程的两倍。 ;8.1.6 实时处理;8.2 有关时间的系统调用;times给出调用进程在用户态和核心态执行时所花费的累积时间,及它的所有僵死子进程在在用户态和核心态执行时曾花费的累积时间。 times(tbuffer) struct tms* tbuffer tms含有查询到的时间。;使用系统调用times的程序;系统调用alarm来设置闹钟软中断信号。 stat通过文件名fliename获取文件信息,保存在buf所指的结构体中。 struct stat{ time_t st_atime } 最后一次使用时间 GIGALRM 在用alarm函数设置的计时器超时时会产生此信号。;;8.3 时钟;8.3.2 系统的内部定时;函数a的表项的时间字段为-2,意味着a在有资格被调用之后,系统已经过去了2个时钟中断的时间。;时钟中断处理程序在每次时钟中断时,检查callout表中是否有表项。 如果有,使第一个表项的字段减1.,相应的其他表项的时间字段也会减1. 如果表中第一项的时间字段小于或等于0,就调用对应函数。 如果该函数的运行时间超过一个时钟滴答,下次的时钟中断(以及所有其他发生的中断)就会被屏蔽掉。 时钟中断处理程序通过引起一个“软件中断”来调度该函数。软件中断的优先级比其他中断的优先级低。 在内核准备好调callout表中的某个函数时刻和软件中断发生的时刻之间,许多中断,包括时钟中断都可能发生。因此,callout表中第一项的时间字段可能被减为负值。 当软件中断发生时,中断处理程序清除时间字段已经过时的callout表项,并调用相应函数。;8.3.3 直方图分析;图中给出的是几个假象的内核子程序的地址,内核在用户态花费20%时间,在bread算法花费50%时间。由于内核不能中断临界区代码,不能在那里调用直方图中断处理程序。必须有保留地对待内核直方图分析结果。;用
文档评论(0)