文章目录
调度算法的评价指标
CPU利用率
CPU利用率:指CPU”忙碌“的时间占总时间的比例
利用率 = 忙碌的时间 / 总时间
系统吞吐量
系统吞吐量:单位时间内完成作业的数量
系统吞吐量 = 总共完成的作业量 / 总共花费的时间
周转时间
周转时间:从作业被提交给系统开始,到作业完成为止的这段时间间隔
(作业)周转时间 = 作业完成时间 - 作业提交时间
平均周转时间 = 各作业周转时间之和 / 作业数
带权周转时间 = 作业周转时间 / 作业实际运行时间 = (作业完成时间 - 作业提交时间) / 作业实际运行时间
对于周转时间相同的两个作业,实际运行时间长的作业在相同时间内被服务的时间更多,带权周转时间更小,用户满意度更高
对于实际运行时间相同的两个作业,周转时间短的带权周转时间更小,用户满意度更高
带权周转时间必然 ≥ 1
带权周转时间与周转时间都是越小越好
平均带权周转时间 = 各作业带权周转时间之和 / 作业数
等待时间
等待时间:进程/作业处于等待处理机状态时间之和,等待时间越长,用户满意度越低
对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,在等待I/0完成的期间其实进程也是在被服务的,所以不计入等待时间
对于作业来说,不仅要考虑建立进程后的等待时间,还要加上作业在外存后备队列中等待的时间
一个作业总共需要被CPU服务多久,被I/O设备服务多久一般是确定不变的,因此调度算法其实只会影响作业/进程的等待时间
响应时间
响应时间:从用户提交请求到首次产生响应所用的时间
总结
典型的调度算法
先来先服务(FCFS)
先来先服务调度算法:按照到达的先后顺序调度,事实上就是等待时间越久的越优先得到服务
【例题】各进程到达就绪队列的时间、需要的运行时间如下表所示。使用先来先服务调度算法,计算各进程的周转时间、平均周转时间、带权周转时间、平均带权周转时间、等待时间、平均等待时间
-
周转时间
周转时间 = 完成时间 - 到达时间
P1=7-0=7;P2=11-2=9;P3=12-4=8;P4=16-5=11
-
带权周转时间
带权周转时间 = 周转时间 / 运行时间
P1=7/7=1;P2=9/4=2.25;P3=8/1=8;P4=11/4=2.75
-
等待时间
等待时间 = 周转时间 - 运行时间
P1=7-7=0;P2=9-4=5;P3=8-1=7;P4=11-4=7
注意:本例中的进程都是纯计算型的进程,一个进程到达后要么在等待,要么在运行
如果是又有计算、又有I/O操作的进程,其 等待时间 = 周转时间 - 运行时间 - I/O操作的时间 -
平均周转时间
平均周转时间 = 周转时间之和 / 进程数 = (7+9+8+11)/4=8.75
-
平均带权周转时间
平均带权周转时间 = 带权周转时间之和 / 进程数 = (1+2.25+8+2.75)/4=3.5
-
平均等待时间
平均等待时间 = 等待时间之和 / 进程数 = (0+5+7+7)/4=4.75
短作业优先(SJF)
【例题1】各进程到达就绪队列的时间、需要的运行时间如下表所示。使用非抢占式的短作业(进程)优先调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间
-
周转时间
P1=7-0=7;P3=8-4=4;P2=12-2=10;P4=16-5=11
-
带权周转时间
P1=7/7=1;P3=4/1=4;P2=10/4=2.5;P4=11/4=2.75
-
等待时间
P1=7-7=0;P3=4-1=3;P2=10-4=6;P4=11-4=7
-
平均周转时间
平均周转时间 = (7+4+10+11)/4=8
-
平均带权周转时间
平均带权周转时间 = (1+4+2.5+2.75)/4=2.56
-
平均等待时间
平均等待时间 = (0+3+6+7)/4=4
【例题2】各进程到达就绪队列的时间、需要的运行时间如下表所示。使用抢占式的短作业优先调度算法(最短剩余时间优先算法),计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间
-
周转时间
P1=16-0=16;P2=7-2=5;P3=5-4=1;P4=11-5=6
-
带权周转时间
P1=16/7=2.28;P2=5/4=1.25;P3=1/1=1;P4=6/4=1.5
-
等待时间
P1=16-7=9;P2=5-4=1;P3=1-1=0;P4=6-4=2
-
平均周转时间
平均周转时间 = (16+5+1+6)/4=7
-
平均带权周转时间
平均带权周转时间 = (2.28+1.25+1+1.5)/4=1.50
-
平均等待时间
平均等待时间 = (9+1+0+2)/4=3
高响应比优先(HRRN)
【例题】各进程到达就绪队列的时间、需要的运行时间如下表所示。使用高响应比优先调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间
*计算结果和短作业优先【例题1】一样
时间片轮转调度算法
【例题】各进程到达就绪队列的时间、需要的运行时间如下表所示。使用时间片轮转调度算法,分析时间片大小分别是2、5时的进程运行情况(时间片轮转调度算法常用于分时操作系统,更注重“响应时间”,因而此处不计算周转时间)
时间片大小为2时进程运行情况如下
【分析】(注:以下括号内表示当前时刻就绪队列中的进程、进程的剩余运行时间)
时间片大小为5时进程运行情况如下
【分析】
【结论】
- 如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮转调度算法退化为先来先服务调度算法并且会增大进程响应时间,因此时间片不能太大
- 进程调度、切换是有时间代价的(保存、恢复运行环境),因此如果时间片太小,会导致进程切换过于频繁,系统会花大量的时间来处理进程切换,从而导致实际用于进程执行的时间比例减少,可见时间片也不能太小(一般来说,设计时间片时要让切换进程的开销占比不超过 1%)
优先级调度算法
【例题1】各进程到达就绪队列的时间、需要的运行时间、进程优先数如下表所示。使用非抢占式的优先级调度算法,分析进程运行情况(注:优先数越大,优先级越高)
【例题2】各进程到达就绪队列的时间、需要的运行时间、进程优先数如下表所示。使用抢占式的优先级调度算法,分析进程运行情况(注:优先数越大,优先级越高)
多级反馈列队调度算法
多级反馈列队调度算法的过程比较复杂,建议看 《王道计算机考研 操作系统》 课程视频 P24 的动画演示
【计算机操作系统】 专栏的文章 均有参考 《王道计算机考研 操作系统》 课程视频