调度算法
调度算法
- 先来先服务调度算法那
- 短作业优先调度算法
- 高影响比优先调度算法
先来先服务(FCFS)调度算法
既可用于作业调度,也适用于进程调度,主要用于批处理调度系统。
思想:先来先服务调度算法是一种最简单的调度算法,系统开销最少,当系统采用这种调度算法时,系统从就绪队列中选择一个最先进入就绪队列的进程,吧处理器分配给该进程,使之得到执行。进程一旦占有了处理器,就一直运行下去,知道完成或因发生某种事件而阻塞,才退出处理器。
进程名 | 到达时间 | 服务时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
---|---|---|---|---|---|---|
A | 0 | 1 | 0 | 1 | 1 | 1 |
B | 1 | 100 | 1 | 101 | 100 | 1 |
C | 2 | 1 | 101 | 102 | 100 | 100 |
D | 3 | 100 | 102 | 202 | 199 | 1.99 |
开始时间=上一个完成时间
完成时间=开始时间+服务时间
周转时间=完成时间-到达时间
带权周转时间=周转时间/服务时间
- 有利于长作业,不利于短作业
- 有利于CPU繁忙型的进程,而不利于I/O繁忙型的进程
FCFS调度算法评价:
- 算法简单,但效率低;
- 对长作业比较有利,但对短作业不利;
- 有利于CPU繁忙型作业,而不利于I/O繁忙型作业
短作业优先调度算法
是对短作业调度算法(SJF)或短进程调度算法的(SPF),即可用于短作业调度,也适用于进程调度,适用于批处理系统、分时系统中。
思想:短进程优先调度算法是从就绪队列中选择一个估计运行时间最短的进程,将处理器分配给该进程,使之占有处理器并执行。知道该进程完成或因发生某种事件而阻塞,才退出处理器。
以进程(作业)的本次CPU时间长短作为调度的依据来选择进程(作业)投入运行。
进程名 | 到达时间 | 服务时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
---|---|---|---|---|---|---|
A | 0 | 4 | 0 | 4 | 4 | 1 |
B | 1 | 3 | 6 | 9 | 8 | 2.67 |
C | 2 | 5 | 13 | 18 | 16 | 3.2 |
D | 3 | 2 | 4 | 6 | 3 | 1.5 |
E | 4 | 4 | 9 | 13 | 9 | 2.25 |
短作业调度算法的平均周转时间少
SJ(P)F调度算法性能分析:
(1) 采用短进程优先调度算法,可以降低平均周转时间
(2) 该算法实现简单
SJ(P)F调度算法也存在一些不容忽视的缺点:
(1) 该算法对长作业不利
(2) 该算法未考虑作业的紧迫读,因而不能保证紧迫作业的及时处理。
(3) 不一定保证能做到真正意义上的短作业优先调度。
高响应比优先调度算法(HRN)
能否有一种调度算法既照顾了短进程,有考虑了进程倒到的先后次序,也不会唱进程长时间得不到服务。
高响应比调度算法是一个比较折衷的算法,它是从就绪队列中选择一个响应比最高的进程,让其获得处理器并执行,知道该进程完成或因等待某种时间而退出处理器为止。
当需要从就绪队列中选择进程投入运行时,先计算各进程的相应比,选择响应比最高的进程运行。
响应比R可定义如下:
R=(已等待时间+要求服务时间)/要求服务时间。即:R=1+已等待时间/要求服务时间
根据公式:
1) 当作业的等待时间相同时,则要求服务时间越短,其响应时间越高,有利于短作业。
2) 当要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比就越高;
3) 对长作业,作业响应比可随着等待时间的增加而提高,当其等待时间足够长时,响应比便可升到很高,从而获得处理机。
练习
一作业8:00到达系统,估计运行时间为1小时,若10:00开始执行该作业,其响应比是
R=1+(10-8)/1=3
进程名 | 到达时间 | 服务时间 | 开始时间 | 完成时间 | 周转时间 | 带权周转时间 |
---|---|---|---|---|---|---|
J1 | 8.0 | 2.0 | 8.0 | 10.0 | 2.0 | 1.0 |
J2 | 8.3 | 0.5 | 10.1 | 10.6 | 2.3 | 4.6 |
J3 | 8.5 | 0.1 | 10.0 | 10.1 | 1.6 | 16 |
J4 | 9.0 | 0.4 | 10.6 | 11 | 2 | 5 |
10.0时刻:
R2=1+(10-8.3)/0.5=4.4
R3=1+(10-8.5)/0.1=16
R4=1+(10-9)/0.4=3.5
因而选择J3
10.1时刻:
R2=1+(10.1-8.3)/0.5=4.6
R4=1+(10.1-9)/0.4=3.75
因而选择J2
10.6时刻:
选择J4
时间片轮转发(Round-Robin调度算法)
轮转算法启动时机:
-
一个时间片运行结束
-
当前进程运行结束
-
或者正在运行的进程因运行受阻主动放弃了CPU控制权
-
进程轮流使用CPU,各用一个时间片,时间片用完管理程序停止它的运,并将它转入就绪队列胃部,调度下一个进程。
例题
分时系统中,P1,P2,P3,P4进程几乎同时到达,时间片为1,使用时间片轮转法计算各进程周转时间。
进程 | 运行时间 | 完成时间 | 周转时间 |
---|---|---|---|
p1 | 6 | 16 | 16 |
p2 | 3 | 10 | 10 |
p3 | 5 | 15 | 15 |
p4 | 2 | 8 | 8 |
平均周转时间=(16+10+15+8)/4=12.25