- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 调度与死锁 在多道程序环境下,进程数目往往多于处理机数目,这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之执行。 高级、中级和低级调度 高级调度的主要任务是按给定的原则从外存后备作业中挑选若干作业调入内存,为它们建立进程并分配必要的资源,以使它们获得竞争处理机的权利。 中级调度的主要任务是按给定的原则将处于外存对换区中的具备运行条件的就绪进程调入内存,或将内存中处于就绪状态或阻塞状态的进程交换到外存对换区中。 低级调度的主要任务是按照某种原则选取一个处于就绪状态的进程,将处理机分配给它。 进程调度算法 1.进程调度 进程调度的任务是控制协调进程对CPU的竞争即按一定的调度算法从就绪队列中选中一个进程,把CPU的使用权交给被选中的进程 2.确定算法的原则 具有公平性 资源利用率高(特别是CPU利用率) 在交互式系统情况下要追求响应时间(越短越好) 在批处理系统情况下要追求系统吞吐量 3.各种进程调度算法 先来先服务进程调度算法(FCFS) 按照进程就绪的先后次序来调度进程 优点:实现简单 缺点:没考虑进程的优先级 (1)先来先服务(FCFS)算法 先来先服务作业调度算法是一种较简单的作业调度算法,即每次调度是从后备作业队列中选择一个最先进入该队列的作业,将它调入内存,分配资源、创建相应的进程,放入进程就绪队列准备运行。 FCFS算法利于长作业,不利于短作业,而大多数的作业是I/O繁忙的短作业。以FCFS作为主调度算法是不常用的。 (2)短作业优先调度算法(SJF) 短作业优先调度算法是指操作系统在进行作业调度时以作业长短作为优先级进行调度。该调度算法可以照顾到实际上占作业总数绝大部分的短作业,使它们能比长作业优先调度执行。这时后备作业队列按作业优先级由高到低顺序排列,当作业进入后备队列时要按该作业优先级放置到后备队列相应的位置。 实践证明,该调度算法的性能是最好的,单位时间的作业吞吐量也最大,但也存在缺点:对长作业极为不利。 (3)动态优先级调度算法 当几个作业几乎同时进入后备队列时,短作业的优先级高,它先被调度执行。但随着时间的推移,长作业的优先级逐渐增大,长作业就可能在后进入后备队列的短作业之前被操作系统调度执行。 分析动态优先级调度算法,可以认为该算法既照顾了短作业,又不会使长作业长期得不到服务,从而实现了一种良好的折中。 高优先权优先调度算法 优先选择就绪队列中优先级最高的进程投入运行 优先级根据优先数来决定 确定优先数的方法 静态优先数法: 在进程创建时指定优先数,在进程运行时优先数不变 动态优先数法: 在进程创建时创立一个优先数,但在其生命周期内优先数可以动态变化。如等待时间长优先数可改变 时间片轮转程序调度算法(RR—Round Robin) 把CPU划分成若干时间片,并且按顺序赋给就绪队列中的每一个进程,进程轮流占有CPU,当时间片用完时,即使进程未执行完毕,系统也剥夺该进程的CPU,将该进程排在就绪队列末尾。同时系统选择另一个进程运行 分时系统中常用时间片轮转法 时间片选择问题: 固定时间片 可变时间片 与时间片大小有关的因素: 系统响应时间 就绪进程个数 CPU能力 时间片轮转调度算法 多队列反馈调度算法: 将就绪队列分为N级,每个就绪队列分配给不同的时间片,队列级别越高,时间片越小,级别越低,时间片越长,最后一级采用时间片轮转,其他队列采用先进先出; 系统从第一级调度,当第一级为空时,系统转向第二个队列,.....当运行进程用完一个时间片,放弃CPU时,进入下一级队列;等待进程被唤醒时,进入原来的就绪队列;当进程第一次就绪时,进入第一级队列 * 首先系统中设置多个就绪队列,并为各个队列赋予不同的优先级。 * 每个就绪队列分配给不同时间片,优先级高的为第一级队列,时间片最小,随着队列级别的降低,时间片加大 * 各个队列按照先进先出调度算法 一个新进程就绪后进入第一级队列的末尾,按FCFS原则排队等待调度,当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,…,如到第n队列,便采取按时间片轮转的方式运行。 * 进程由于等待而放弃CPU后,进入等待队列,一旦等待的事件发生,则回到原来的就绪队列 * 当有一个优先级更高的进程就绪时,可以抢占CPU,被抢占进程回到原来一级就绪队列末尾 * 当第一级队列空时,就去调度第二级队列,如此类推 * 当时间片到后,进程放弃CPU,回到下一级队列 进程调度的时机 当一个进程运行完毕,或由于某种错误而终止运行 当一个进程在运行
原创力文档


文档评论(0)