【2021/7/19 更新】【梳理】简明操作系统原理 第三章 高级调度策略(docx)

配套教材:
Operating Systems: Three Easy Pieces Remzi H. Arpaci-Dusseau Andrea C. Arpaci-Dusseau Peter Reiher
参考书目:
1、计算机操作系统(第4版) 汤小丹 梁红兵 哲凤屏 汤子瀛 编著 西安电子科技大学出版社

在线阅读:
http://pages.cs.wisc.edu/~remzi/OSTEP/
University of Wisconsin Madison 教授 Remzi Arpaci-Dusseau 认为课本应该是免费的
————————————————————————————————————————
这是专业必修课《操作系统原理》的复习指引。
需要掌握的概念在文档中以蓝色标识,并用可读性更好的字体显示 Linux 命令和代码。代码部分语法高亮。
文档下载地址:
链接:https://pan.baidu.com/s/1yf4TPKPGvMfmQshWKLlG2g
提取码:0000

三 高级调度策略

虽然这些假设显得不真实,但是为了方便,在接下来的对高级调度策略(区别于定时器中断、上下文切换等底层机制)的讨论中,我们暂时假定所有进程(任务)都遵循完全可操作的调度规则,本指导简称“五个假设”:
(1)所有的任务都运行相同时间;
(2)所有的任务都同时分发下来;
(3)一旦开始运行,所有任务都一直运行到完成;
(4)所有任务只使用CPU(也就是说,没有IO);
(5)所有任务需要的运行时间都是已知的。
在必要情形下,可能解除上面的一条或几条限制。
高级调度策略与底层调度机制是相对独立的:机制与策略分离的基本原理,是计算机科学与工程中的常用原理。

性能和公平性在调度中一般是矛盾的。如果一个调度器的调度规则偏向性能,那么可能会导致一些程序几乎分不到多少时间执行。如果优先保证每个程序都尽可能分到足够的时间执行,那么程序的性能有时并不能完全发挥出来。

FIFO(First in first out,先进先出)也称先来先服务(first come first serve,FCFS),是最基础的一种调度算法。这个算法简单且易于实现。在“五个假设”下,该方法的效果一般较好;但是在一些特殊情形下效果不佳。例如,如果每项任务的耗时不再是等时的,其中某项任务的耗时远大于其它任务,且比其它任务都早那么一点到达。那么,直到把这项最耗时的任务执行完毕以后,操作系统才会分配其它任务到这个处理器核。当任务的结束时间是影响效果或评价等指标的主要因素时,这种调度方式带来的结果就令人不满。
生活中有很多这样的情境。例如:如果一个末日生存狂为了应对核冬天而到超市大量扫货,那么假设因为他比别人先到一小会儿就开始忙于对他的结算,后面的许多个只需要买一点东西准备明天的早餐的顾客就会等待很久。再例如:你的计算机硬盘损坏,现从某网盘紧急下载备份文件。但由于网站技术故障,你无法开通它的会员,所以被限制一次只能下载一个文件。如果先下载最先添加的很大的文件(如:刚立项的为期两年的科研项目的神经网络训练模型),那么急用的小文件(如:即将到达提交截止期限的未完成的实验报告)也需要等到大文件下载完毕后才开始下载。这样做的后果可想而知。

SJF(Shortest Job First,最短作业优先)算法总是优先安排耗时最少的任务先行执行。在要求每个任务都尽早结束的情形下,如果任务都是同时到达的,那么SJF调度算法比FIFO调度算法能让更多任务尽快执行完毕。但是,还是套用刚才的例外:某项任务的耗时远大于其它任务,且比其它任务都早那么一点到达。在这个情形下,仍然需要等待耗时最长的任务完成后才能开始执行其它任务,对最终结果也是不利的。

非抢占(non-preemptive)调度一旦把CPU分配给某进程后,就一直让它运行下去,不会因为时钟中断或任何其它原因去抢占当前正在运行的进程占用的CPU,直至该进程完成。当
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值