大厂面试考点:多级反馈队列(MLFQ)

多级反馈队列

多级反馈队列正如之前说的一样,有多个队列,不同队列有不同优先级,相应的进程被分配到不同的队列中,高优先级的队列中的进程优先执行,并且一个队列中的进程之间采用之前介绍过的调度算法进行调度

书中采用的是Round Robin调度,所以现在我们有以下规则:

此外,一个进程的优先级不是固定的,而是动态调整的,OS可以根据进程的历史行为对进程类型进行一定程度的估计,然后根据估计结果调整进程的优先级,这样可以使得进程的优先级更加合理

这里我们的进程优先级的变化规则是:

在这样的方式下,OS不用知道进程的具体运行时间,一个运行久的进程自然就会在低优先级下运行,如果此时插入一个新的进程,它会在高优先级下抢占CPU并运行,如果它是个短进程,那么它能在优先级降到最低前完成,否则认为它也是个长进程,而在低优先级下运行
这样的优先级调整方式既可以在不知道进程具体长度的条件下优先执行短进程,也能很好地保证高交互性的进程优先运行,同时优化了turnaround time和response time

缺陷和优化

这样的规格还有一些缺陷,比如说:

对于以上的缺陷,我们可以通过Boost来解决以上问题
Boost的做法是,每隔一定的时间,就将所有的进程提高到最高优先级的队列中,这样的话,即便是低优先级的长进程也能有所运行,而不会陷入饥饿状态
而欺骗调度程序的收益将会大幅度下降,因为在Boost的时候,所有的进程都会被提高到最高优先级
而交互性提高的长程序也能来到高优先级,并在高交互的阶段保持高优先级,从而能够抢占CPU

所以我们有:

继续优化

虽然上面的做法能够一定程度上缓解欺骗调度的问题,但是书上提出了更好的解决方式:
我们给每个进程在一个优先级的队列中分配一个
配额时间,当它的配额时间用完后,不管是否阻塞,都会被减低优先级,从而让其他进程有机会运行
这样的话rule4就可以被改写为:

一般来说,队列的优先级越高,配额时间越少

总结

以上几条就是MLFQ的基本规则,此外的很多操作系统有着自己的各种更具体地功能和优化,比如说:

展开阅读全文

页面更新:2024-05-30

标签:队列   都会   优先级   配额   考点   缺陷   进程   分配   反馈   规则   方式   时间

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top