调度算法的评价指标
1.CPU利用率
由于早期的 CPU 造价极其昂贵,因此人们会 希望让 CPU 尽可能多地工作
CPU 利用率 :指 CPU “忙碌”的时间占总时间的比例。
Eg :某计算机只支持单道程序,某个作业刚开始需要在 CPU 上运行 5 秒,
再用打印机打印输出 5 秒,之后再执行 5 秒,才能结束。在此过程中,
CPU 利用率、打印机利用率分别是多少?
2.系统吞吐量
对于计算机来说,希望能用尽可能少的时间处理完尽可能多的作业
系统吞吐量 :单位时间内完成作业的数量
Eg :某计算机系统处理完 10 道作业,共花费 100 秒,则系统吞吐量为?
10/100 = 0.1 道 / 秒
3.周转时间
对于计算机的用户来说,他很关心自己的作业从提交到完成花了多少时间。
周转时间 ,是指从 作业被提交给系统开始 ,到 作业完成为止 的这段时间间隔。
它包括四个部分:作业在外存后备队列上等待作业调度(高级调度)的时间、进程在就绪队列上等
待进程调度(低级调度)的时间、进程在 CPU 上执行的时间、进程等待 I/O 操作完成的时间。后三项在一个作业的整个处理过程中,可能发生多次。
4.等待时间
计算机的用户希望自己的作业尽可能少的等待处理机
等待时间 ,指进程 / 作业 处于等待处理机状态时间之和 ,等待时间越长,用户满意度越低。
对于 进程 来说,等待时间就是指进程建立后 等待被服务的时间之和 ,在等待 I/O 完成的期间其实进
程也是在被服务的,所以不计入等待时间。
对于 作业 来说,不仅要考虑 建立进程后的等待时间 , 还要加上作业在外存后备队列中等待的时间。
一个作业总共需要被 CPU 服务多久,被 I/O 设备服务多久一般是确定不变的,因此调度算法其实只会影响作业/ 进程的等待时间。当然,与前面指标类似,也有“ 平均等待时间 ”来评价整体性能。
5.响应时间
对于计算机用户来说,会希望自己的提交的请求(比如通过键盘输入了一个调试命令)尽早地开始被系统服务、回应。 响应时间 ,指从用户 提交请求 到 首次产生响应 所用的时间。
调度算法
Tips :各种调度算法的学习思路
1. 算法思想
2. 算法规则
3. 这种调度算法是用于 作业调度 还是 进程调度?
4. 抢占式?非抢占式?
5. 优点和缺点
6. 是否会导致 饥饿
1.先来先服务(FCFS, First Come First Serve)
例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用 先来先服务 调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。
先来先服务调度算法:按照到达的先后顺序调度,事实上就
是等待时间越久的越优先得到服务。
因此, 调度顺序 为:
2.短作业优先(SJF, Shortest Job First)
非抢占式
抢占式
注意几个小细节:
1. 如果题目中 未特别说明 ,所提到的“短作业 / 进程优先算法” 默认 是 非抢占式 的
2. 很多书上都会说“ SJF 调度算法的平均等待时间、平均周转时间最少”
严格来说,这个表述是错误的,不严谨的。之前的例子表明,最短剩余时间优先算法得到的平均等待时间、平均周转时间还要更少
应该加上一个条件“在 所有进程同时可运行 时,采用 SJF 调度算法的平均等待时间、平均周转时间最少”;
或者说“在 所有进程都几乎同时到达 时,采用 SJF 调度算法的平均等待时间、平均周转时间最少”;
如果不加上述前提条件,则应该说“ 抢占式的 短作业 / 进程优先调度算法( 最短剩余时间优先 , SRNT 算法)的平均等待时间、平均周转时间最少”
3. 虽然严格来说, SJF 的平均等待时间、平均周转时间并不一定最少,但相比于其他算法(如 FCFS ), SJF依然可以获得较少的平均等待时间、平均周转时间
4. 如果选择题中遇到“ SJF 算法的平均等待时间、平均周转时间最少”的选项,那最好判断其他选项
是不是有很明显的错误,如果没有更合适的选项,那也应该选择该选项
对FCFS和SJF两种算法的思考…
3.高响应比优先(HRRN, Highest Response Ratio Next)
知识回顾与重要考点