OS学习(五)——MLFQ

调度:多级反馈队列(Multi-level Feedback Queue,MLFQ)

MLFQ需要解决的问题:

优化周转时间且降低响应时间

MLFQ的规则

(1)A的优先级>B的优先级,运行A

(2)A的优先级=B,轮转运行

存在的问题:低优先级的进程永无机会运行。

改变优先级:
(3)工作进入系统时,放入最高优先级

(4a)工作用完整个时间片后,降低优先级

(4b)若工作在其时间片内主动释放CPU,其优先级不变

针对:

占用CPU时间长,响应时间不重要的长时间计算密集型工作。
运行时间短,频繁放弃CPU的交互型工作。

eg.

长时间工作在运行2个10ms的时间片后进入最低优先级队列。

交互型工作(灰色)在CPU密集工作一段时间后进入,连续运行完两个时间片后结束,继续运行黑色工作。

若有I/O,则不会降低优先级。

eg.

4a和4b存在的问题

1.饥饿(starvation)问题:若存在太多的交互型工作,长工作就永远无法得到CPU,被“饿死”了。

2.愚弄调度程序(game the scheduler):进程在时间片快用完时调用I/O,保持在高优先级,占用更多的CPU时间。

3.一个程序在不同时间表现不同,计算密集的进程在另一个时间可能表现为交互型,用当前的方法,它不会享受交互型的待遇。

(5)经过一段时间S,提升所有工作到最高优先级

解决了1、3问题。

eg.

关于S:

        S被称为“巫毒常量(voo-doo constant)”,要合理设置S。

        若S设置太高,长工作会饥饿;太低,交互型工作得不到合适的时间比例。

(4)一旦工作用完了其在某一层中的时间配额(无论中间主动放弃了多少次CPU),就降低其优先级

解决了愚弄问题。

设计MLFQ时需考虑:
就绪队列的数量

就绪队列的优先级

各就绪队列的调度算法

进程在队列间的迁移条件

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值