求出各进程的执行顺序,平均周转时间,平均带权周转时间
参与比较的算法
1)先来先服务FCFS
-
算法思想: 公平
-
规则:按照作业/进程到达顺序进行服务
-
作业调度:考虑哪个作业先到到后备队列
-
进程调度:考虑哪个进程先到达就绪队列
-
是否抢占式:非抢占式
-
优点:简单容易实现,公平
-
缺点:不利于短作业,对长作业有利
-
是否导致饥饿:不会
-
周转时间 = 完成时间 - 到达时间
-
带权周转时间 = 周转时间/运行时间
-
等待时间 = 周转时间 – 运行时间
2)短进程优先执行算法 SjF (短进程优先SPF)
-
算法思想: 追求平均等待时间,平均周转时间,平均带权周转时间最短
-
规则:服务时间最短的优先得到服务
-
作业调度:SJF短作业优先
-
进程调度:SPF短进程优先
-
是否抢占式:SJF和SPF是非抢占式的算法。但是也有抢占式的版本——最短剩余时间优先算法
-
优点:“最短的”平均等待时间、平均周转时间(前提是
所有进程同时可运行
或者说
所有进程几乎都同时到达
)因为最短剩余时间优先算法得到的平均等待
时间、平均周转时间还要更少
-
缺点:不利于长作业,对短作业有利,由此可能产生饥饿现象
-
是否导致饥饿:会,当短作业不断到来会导致长作业长时间得不到服务
-
周转时间 = 完成时间 - 到达时间
-
带权周转时间 = 周转时间/运行时间
-
等待时间 = 周转时间 – 运行时间
3)高响应比优先算法HRRF
-
算法思想: 要综合考虑作业/进程的等待时间和要求服务时间
-
规则:每次调度都计算各个作业/进程的响应比,选最高的进行服务
-
是否抢占式:非抢占式
-
优缺点:
等待时间相同时,要求服务时间短的优先(SJF 的优点)
要求服务时间相同时,等待时间长的优先(FCFS 的优点)
对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题
-
是否导致饥饿:不会
-
周转时间 = 完成时间 - 到达时间
-
带权周转时间 = 周转时间/运行时间
-
等待时间 = 周转时间 – 运行时间
-
响应比=(等待时间+要求服务时间)/ 要求服务时间=(开始时间-到达时间+服务)/服务
-
开始时间指本次调度的作业的开始时间,即上一个完成的进程的完成时间
例题
进程 | 到达时间 | 服务时间 |
---|---|---|
A | 0 | 3 |
B | 2 | 6 |
C | 4 | 4 |
D | 6 | 5 |
E | 8 | 2 |
周转时间为作业完成时刻减去作业到达的时刻:作业完成时刻-作业到达时刻
周转时间指:作业等待时间和运行时间之和
平均周转时间就是周转时间总时间除以作业个数:所有作业的周转时间/作业总数
带权周转时间=周转时间/系统提供服务时间=(作业完成时间-作业提交时间)/作业实际运行时间
FCFS先来先服务算法
进程 | 到达 | 服务 | 完成 | 周转时间 | 带权周转时间 |
---|---|---|---|---|---|
A | 0 | 3 | 3 | 3 | 1 |
B | 2 | 6 | 9 | 7 | 7/6 |
C | 4 | 4 | 13 | 9 | 9/4 |
D | 6 | 5 | 18 | 12 | 12/5 |
E | 8 | 2 | 20 | 12 | 6 |
执行序列:ABCDE
平均周转时间:(3+7+9+12+12)/5
带权周转时间:(1+7/6+9/4+12/5+6)5
SJF(非抢占式短作业优先算法)
进程 | 到达 | 服务 | 完成 | 周转时间 | 带权周转时间 |
---|---|---|---|---|---|
A | 0 | 3 | 3 | 3 | 1 |
B | 2 | 6 | 9 | 7 | 7/6 |
E | 8 | 2 | 11 | 3 | 3/2 |
C | 4 | 4 | 15 | 11 | 11/4 |
D | 6 | 5 | 20 | 14 | 14/5 |
执行序列:ABECD
平均周转时间:(3+7+3+11+14)/5
平均带权周转时间:(1+7/6+3/2+11/4+14/5)/5
SJF(抢占式短作业优先算法)
进程 | 到达 | 服务 | 完成 | 周转时间 | 带权周转时间 |
---|---|---|---|---|---|
A | 0 | 3 | 3 | 3 | 1 |
C | 4 | 4 | 8 | 4 | 1 |
E | 8 | 2 | 10 | 2 | 1 |
B | 2 | 6 | 15 | 13 | 13/6 |
D | 6 | 5 | 20 | 14 | 14/5 |
当B进程进入执行时,其执行时间1后,时间到达4,进程C的服务时间为4,其优先级高于B所以第二个执行的是C
到达时间8后所有进程都进入,此时比较可得E进程的服务时间最短,所以E的优先级最高,第三个执行的是E,此时剩余的进程是D和B
其服务时间都为5,但是好像是因为B先执行过,所以先执行B,再执行D
执行序列:ACEBD
平均周转时间:(3+4+2+13+14)/5
平均带权周转时间:(1+1+1+13/6+14/5)/5
HRRF高响应比优先算法
进程 | 到达 | 服务 | 完成 | 周转时间 | 带权周转时间 |
---|---|---|---|---|---|
A | 0 | 3 | 3 | 3 | 1 |
B | 2 | 6 | 9 | 7 | 7/6 |
C | 4 | 4 | 13 | 9 | 9/4 |
E | 8 | 2 | 15 | 7 | 7/2 |
D | 6 | 5 | 20 | 14 | 14/5 |
当B完成的时候,因为所有的进程都已经到达,此时要计算进程的响应比
响应比=1+已经等待时间/服务时间
C的响应比=1+5/4
D的响应比=1+3/5
E的响应比=1+1/2
所以C的优先级最高
先执行C
执行完C后,重新计算响应比
D的响应比=1+7/5
E的响应比=1+5/2
E的优先级高,先运行E
执行序列:ABCED
平均周转时间:(3+7+9+7+14)/5
平均带权周转时间:(1+7/6+9/4+7/2+14/5)5