44、各种调度算法

决策模式

对于处理起来讲,一般有两种方式来决策。

非剥夺决方式(Nonpreemptive)

  • 一旦一个进程被执行,它就会一直执行到完毕,主动释放处理器,或者是阻塞自己。总之就是主动释放CPU。
  • 主要对于批处理操作系统。

剥夺方式(Preemptive)

  • 当前执行进程可以被中断,并且可以将进程移动到就绪队列中。
  • 任何进程不可能长时间的独占、垄断处理器。
  • 主要用于实时性要求较高的实时系统以及性能要求较高的批处理系统和分时系统。

调度算法

有5个进程,描述如下:

进程到达时刻服务时间
P103
P226
P344
P465
P582

通过平均周转时间来分析不同的调度算法(需要加上每个进程的等待时间)

先来先服务(FCFS)

如同超市排队结账一般。
在这里插入图片描述

  • 每个进程加入就绪队列;
  • 当前进程完成时,在就绪队列中等待最久的进程被选择。
  • 平均周转时间 = 8.6
  • 短进程可能必须等待一个非常长的时间。如P5,它只需要执行短短的2个单位时间,可是就连平均周转时间都是8.6秒。
  • 偏向于使用CPU的进程,如计算。
  • 对于I/O型的进程,即使事件发生,也必须等待CPU型的进程彻底完成。
FCFS算法的实际应用
  • 一般,FCFS与其他调度算法混合使用
  • 系统可以按照不同的优先级维护多个就绪队列,每个队列内部按照FCFS算法调度。

轮转调度(Round Robin)

像幼儿园里,老师给班里小朋友喂午饭。很多老师都是让小朋友围着自己为一个圈,每个小孩喂一口,小孩子咀嚼需要时间,他就去喂下一个小朋友。

虚拟轮转调度(Virtual Round Robin)

针对于某些I/O型进程,轮转调度也有可能会对他们不公平,比如事件发生,依然需要等一大轮才能执行。
这个时候就有了虚拟轮转调度有两个就绪队列A和B,所有进程先进入队列A,若是进程用完时间片依然没有执行完毕,则回到A队列继续排队轮转。
如果是I/O型,第一次阻塞,事件发生后回来后,则进入队列B,B队列的优先级比A队列的高,下次调度则会优先检测B队列是否为空。除此之外,还可以为B队列设置不同于A的时间片。

时间片长短

并没有明确的规定每个时间片必须多长多短。太长的话,其他程序等待太久,太短的话中断频繁,消耗性能。
唯一的原则是70-80%的进程能在一个时间片内完成的长短

短进程优先(Shortest Process Next)

短进程优先做。对长进程不公平,短进程太多则会让长进程一直等待。

最短剩余时间进程优先(Shortest Remaining Time)

字面意思。
与短进程优先一样,都需要去估算进程的服务时间,这是非常困难的。

最高响应比优先(Highest Response Ration Next)

响应比 = (等待时间 + 服务时间)/服务时间 = 等待时间/服务时间 + 1
由上可以看出,由于等待时间越来越长,响应比会越来越高,优先级也就越来越高了。同时,短进程的优先级也会非常的高。
看似非常完美,但是现实却是骨干的。首先,老问题,估算服务时间是困难的;同时,由于计算机是工程性的,这套算法的计算量非常的大。我们的等待时间随时都在变化,每次调度都会去计算一次,进程量越多,性能消耗越大。

反馈(FeedBack)

完全不需要估算进程的服务时间,且是一个动态的调度算法
在这里插入图片描述

  • 首先会设置多个就绪队列。
    在这里插入图片描述
  • 每个时间片可以设置不同的长度的时间片,从上往下,每个时间片越来越长,优先级越来越低。若是RQ0时间片没执行完,就放进RQ1,RQ1没执行完,就放入RQ2。长进程会自然的往下掉,同时也保证了短进程优先级最高
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值