进程调度算法比较例题

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

参与比较的算法

1)先来先服务FCFS

  • 算法思想: 公平

  • 规则:按照作业/进程到达顺序进行服务

  • 作业调度:考虑哪个作业先到到后备队列

  • 进程调度:考虑哪个进程先到达就绪队列

  • 是否抢占式:非抢占式

  • 优点:简单容易实现,公平

  • 缺点:不利于短作业,对长作业有利

  • 是否导致饥饿:不会

  • 周转时间 = 完成时间 - 到达时间

  • 带权周转时间 = 周转时间/运行时间

  • 等待时间 = 周转时间 – 运行时间

2)短进程优先执行算法 SjF (短进程优先SPF)

  • 算法思想: 追求平均等待时间,平均周转时间,平均带权周转时间最短

  • 规则:服务时间最短的优先得到服务

  • 作业调度:SJF短作业优先

  • 进程调度:SPF短进程优先

  • 是否抢占式:SJF和SPF是非抢占式的算法。但是也有抢占式的版本——最短剩余时间优先算法

  • 优点:“最短的”平均等待时间、平均周转时间(前提是

    所有进程同时可运行

    或者说

    所有进程几乎都同时到达

    )因为最短剩余时间优先算法得到的平均等待

    时间、平均周转时间还要更少

  • 缺点:不利于长作业,对短作业有利,由此可能产生饥饿现象

  • 是否导致饥饿:会,当短作业不断到来会导致长作业长时间得不到服务

  • 周转时间 = 完成时间 - 到达时间

  • 带权周转时间 = 周转时间/运行时间

  • 等待时间 = 周转时间 – 运行时间

3)高响应比优先算法HRRF

  • 算法思想: 要综合考虑作业/进程的等待时间和要求服务时间

  • 规则:每次调度都计算各个作业/进程的响应比,选最高的进行服务

  • 是否抢占式:非抢占式

  • 优缺点:

    等待时间相同时,要求服务时间短的优先(SJF 的优点)

    要求服务时间相同时,等待时间长的优先(FCFS 的优点)

    对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题

  • 是否导致饥饿:不会

  • 周转时间 = 完成时间 - 到达时间

  • 带权周转时间 = 周转时间/运行时间

  • 等待时间 = 周转时间 – 运行时间

  • 响应比=(等待时间+要求服务时间)/ 要求服务时间=(开始时间-到达时间+服务)/服务

  • 开始时间指本次调度的作业的开始时间,即上一个完成的进程的完成时间

例题

进程到达时间服务时间
A03
B26
C44
D65
E82

周转时间为作业完成时刻减去作业到达的时刻:作业完成时刻-作业到达时刻

周转时间指:作业等待时间和运行时间之和

平均周转时间就是周转时间总时间除以作业个数:所有作业的周转时间/作业总数

带权周转时间=周转时间/系统提供服务时间=(作业完成时间-作业提交时间)/作业实际运行时间

FCFS先来先服务算法

进程到达服务完成周转时间带权周转时间
A03331
B26977/6
C441399/4
D65181212/5
E8220126

执行序列:ABCDE

平均周转时间:(3+7+9+12+12)/5

带权周转时间:(1+7/6+9/4+12/5+6)5

SJF(非抢占式短作业优先算法)

进程到达服务完成周转时间带权周转时间
A03331
B26977/6
E821133/2
C44151111/4
D65201414/5

执行序列:ABECD

平均周转时间:(3+7+3+11+14)/5

平均带权周转时间:(1+7/6+3/2+11/4+14/5)/5

SJF(抢占式短作业优先算法)

进程到达服务完成周转时间带权周转时间
A03331
C44841
E821021
B26151313/6
D65201414/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高响应比优先算法

进程到达服务完成周转时间带权周转时间
A03331
B26977/6
C441399/4
E821577/2
D65201414/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

SRTF(Shortest Remaining Time First)算法是一种短作业优先进程调度算法,其规则如下: 1. 当一个进程进入就绪队列时,系统会计算出该进程还需要执行的时间。 2. 在就绪队列中选择剩余时间最短的进程先执行。 3. 如果另一个进程进入就绪队列,其剩余时间比当前正在执行的进程还要短,那么系统会立即切换到该进程执行。 4. 如果有多个进程剩余时间相同,则按照先进先出的原则进行调度。 下面是一个例题: 假设有 4 个进程,它们的到达时间、执行时间和剩余时间如下表所示: | 进程 | 到达时间 | 执行时间 | 剩余时间 | |------|----------|----------|----------| | P1 | 0 | 5 | 2 | | P2 | 1 | 3 | 1 | | P3 | 2 | 4 | 4 | | P4 | 3 | 2 | 2 | 按照 SRTF 算法进行调度,其执行过程如下: 1. 时间片 0,P1 进入就绪队列。 2. 时间片 1,P2 进入就绪队列,P1 剩余时间为 4,P2 剩余时间为 2,执行 P2。 3. 时间片 2,P1 剩余时间为 3,P4 进入就绪队列,P4 剩余时间为 2,执行 P4。 4. 时间片 3,P1 剩余时间为 2,P4 剩余时间为 1,执行 P1。 5. 时间片 4,P3 进入就绪队列,P1 剩余时间为 1,执行 P1。 6. 时间片 5,P3 剩余时间为 3,执行 P3。 7. 时间片 6,P3 剩余时间为 2,执行 P3。 8. 时间片 7,P3 剩余时间为 1,执行 P3。 9. 时间片 8,所有进程执行完毕。 根据上述执行过程,可以发现 SRTF 算法可以有效地缩短进程的等待时间和响应时间,提高系统的吞吐量和响应速度。但是,由于它需要不断地计算进程剩余时间,因此会增加系统的开销。此外,在实际应用中,需要根据实际情况选择合适的进程调度算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值