进程调度算法比较例题

时间:2025-04-09 07:54:51

求出各进程的执行顺序,平均周转时间,平均带权周转时间

参与比较的算法

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