- 1、本文档共51页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第05讲_进程调度
优点: 公平性:各个就绪进程平均地分配CPU的使用 时间。假设有n个就绪进程,时间片大小为q, 那么每个进程将得到1/n的CPU时间; 活动性:每个进程最多等待(n-1)q时间就能够 再次得到CPU去运行; 一般来说,平均周转时间较SJF算法为长,但 能够得到较短的平均响应时间; 缺点:q的大小难以确定(一般在20-50ms)。 q太大:退化为FCFS算法,进程在一个时间片 内都执行完,响应时间长。如q=100ms; q太小:每个进程都需要更多的时间片才能处理 完,进程切换次数增加,增大系统开销。如q=4ms 时间片轮转法的特点 进程 CPU时间 P1 53 P2 17 P3 68 P4 24 一个例子:时间片长度q=20 P3 P3 P1 P4 P3 P1 P4 P3 P2 P1 0 20 37 57 77 97 117 121 134 154 162 平均周转时间: (134 + 37 + 162 + 121) / 4=113.5 SJF的平均周转时间: (94 + 17 + 162 + 41) / 4=78.5 2. 优先级算法 轮转法有一个缺省的前提,即各进程同等重要; “人人生而平等”? 恐怕不太现实!同样,并 不是每个进程都同等重要, 怎么办?分等级! 优先级算法(Priority Scheduling):给每个进 程设置一个优先级,然后在所有就绪进程中选择 优先级最高的那个进程去运行; SJF就是一个优先级算法,每个进程的优先级是 它的CPU运行时间(时间越短,优先级越高); 分为可抢占和不可抢占两种方式;各进程优先级 的确定方式可分为静态和动态两种。 静态优先级方式 确定优先级的依据: 进程类型(系统进程优先级高于用户进程,交互式进程高于批处理进程); 对系统资源的需求(对CPU和内存需求较少的进程,优先级较高); 用户要求(用户级别和付费情况,如军用电脑、商用电脑)。 静态方式的缺点:高优先级的进程一直占用CPU,低优先级的进程“饥饿”。 静态优先级方式是指在创建进程时确定进程优先级,并保持不变到进程结束。 动态优先级方式 为防“饥饿”, 根据运行时间和等待时间调整优先级 进程每执行一个时间片就降低其优先级。当一个进程持续执行时,其优先级降低到让出CPU; 在就绪队列中,等待时间延长则优先级提高,从而使优先级较低的进程在等待足够的时间后,其优先级提高到可被调度执行。 为了让I/O忙起来,可提高I/O繁忙进程的优先级。但如何判定一个进程是I/O繁忙的?可把进程优先级设为1/f,f是在上一个时间片中所用的时间比例 动态优先级方式是指在创建进程时赋予给进程的优先级,在进程运行过程中可以动态改变,以便获得更好的调度性能。 优先级类别 (本图摘自Andrew S. Tanenbaum: “Modern Operating Systems” ) 可以把进程按照不同的优先级别分组,然后在不同级别之间使用优先级算法,而在同一级别的各个进程之间使用时间片轮转法。 3. 多级队列算法 多级队列算法(Multilevel Queue)引入多个就绪队列,通过各个队列的区别对待,达到一个综合的调度目标。 根据进程的性质或类型的不同,将就绪队列再分 为若干个子队列,如系统进程、用户交互进程、 批处理进程等; 不同的队列可以有不同的优先级; 不同的队列可以采用各自不同的调度算法,如前 台的交互式进程可采用RR算法,后台的批处理进 程可采用FCFS算法。 在各个队列之间也必须进行调度: 固定优先级调度:按照各种类型的进程的优先 级别从高到低地进行,先运行最高优先级的所 有进程,再运行次一级所有进程,依此类推。 问题:可能导致“饥饿”; 时间片方法:把CPU时间按比例分配给不同的 队列,然后再由各个队列的调度算法去调度, 如80%给前台的交互式进程队列(RR算法), 20%给后台的批处理进程队列(FCFS)。 (本图摘自Silberschatz, Galvin and Gagne: “Operating System Concepts”) 多级队列算法的一个例子 4. 多级反馈队列算法 多级队列算法把每个进程按照它的类型固定在一 个队列中,但问题是如何来确定进程的类型? 而且有的进程其类型可能动态变化,怎么办? “路遥知马力,日久见人心”! 多级反馈队列算法 (Multilevel F
文档评论(0)