java 优先权调度算法实现处理器调度_调度算法FCFS、SJF和优先权调度的介绍和例题...

调度算法

一、先来先服务FCFS (First Come First Serve)

1.思想:

选择最先进入后备/就绪队列的作业/进程,入主存/分配CPU

2.优缺点

优点:对所有作业/进程公平,算法简单稳定

缺点:不够灵活,对紧急进程的优先处理权限不够,在相同时限下处理任务数量可能更少

二、短作业优先SJF (Shortest Job First)

1.思想:

可分为抢占式和非抢占式(执行时间越短,优先级越高)

抢占式优先权,若队列后续作业/进程的优先级更高,则它抢占CPU资源,之前运行的作业/进程暂停,开始执行优先级更高的作业/进程,总结就是当前在CPU中的作业/进程总是执行时间最短,能够最快完成的

非抢占式优先权,若当前CPU中已经有正在执行的作业/进程,则不会打断其执行过程,当后备队列中有多个进程时,下一个会先执行优先级高的作业/进程,入主存/分配CPU,总结就是下一个执行的作业/进程总是在后备队列中执行时间最短的

2.优缺点

优点:灵活性高,相同时限下能处理更多的任务

缺点:不够稳定,算法更复杂

PS:优先级调度算法与此算法类似,只不过额外指明了作业/进程的优先级以确定执行先后顺序,在此不再赘述

三、举例

ad6502f5a3638239e729415b3f5f2f5a.png

周转时间 = 完成时刻 - 进入时刻

等待时间 = 完成时刻 - (进入时刻 + 执行时间)

1.FCFS

调度顺序:P1 -> P2 -> P3 -> P4

画个Gantt图助于理解

688e66b8d36da1a34c8e8bf388e48f46.png

下方为不同进程进入队列次序及时间,上方为CPU中进程执行顺序表

平均周转时间:Ta = (8 + 11 + 19 + 23) / 4 = 15.25s

平均等待时间:Tw = (0 + 7 + 10 + 18) / 4 = 8.75s

2.抢占式优先权调度

调度顺序:P1 -> P2 -> P4 -> P2 -> P3 -> P1

f7e4f37695bbd64952c4c7117040c152.png

平均周转时间:Ta = (26 +  9 + 17 + 5) / 4 = 14.25s

平均等待时间:Tw = (18 + 5 + 8 + 0) / 4 = 7.75s

3.非抢占式SJF

调度顺序:P1 -> P2 -> P4 -> P3

f4ed42adfdbd2a33d44480d5313905a9.png

平均周转时间:Ta = (8 +  11 + 24 + 14) / 4 = 14.25s

平均等待时间:Tw = (0 + 7 + 15 + 9) / 4 = 7.75s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值