【操作系统笔记】第八章—调度:多级反馈队列

【操作系统笔记】第八章—调度:多级反馈队列(MLFQ)

知识点

MLFQ(多级反馈队列)

有许多独立的队列,每个列有不同的优先级。并利用反馈信息决定某个工作的优先级。一个工作只能处于一个队列中。MLFQ总是优先执行优先级高的工作。对于一个队列中的工作,我们采取轮转调度

规则1:如果A的优先级大于B优先级,运行A

规则2:如果A的优先级=B,轮转运行A和B

尝:1:改变优先级

规则3:工作进入系统时,放在最高优先级

规则4a:工作用完整个时间片后,降低其优先级(移入下一个队列)

规则4b:如果工作在其时间片内主动释放cpu,则优先级不变

当前存在的问题

饥饿问题,如果一个程序总是在时间片用完之前让出cpu,那么它将永远占据高优先级,导致长工作饿死

存在愚弄程序,使一个程序总是在时间片用完之前让出cpu,它将永远占据高优先级

一个程序不同时间表现不同,一个刚开始计算密集型程序可能在某段时间表现为交互性,那么他无法享受到交互性的待遇

尝试2:提升优先级

周期性地提升(boost)所有工作的优先级

规则 5:经过一段时间 S,就将系统中所有工作重新加入最高优先级队列。

尝试 3:更好的计时方式

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

其他问题

1.如何配置一个调度程序,例如,配置多少队列?每一层队列的时间片配置多大?

大多数的 MLFQ 变体都支持不同队列可变的时间片长度。高优先级队列通常只有较短的时间片(比如 10ms 或者更少),因而这一层的交互工作可以更快地切换。相反,低优先级队列中更多的是 CPU 密集型工作,配置更长的时间片会取得更好的效果。

MLFQ优点

1.它不需要对工作的运行方式有先验知识,而是通过观察工作的运行来给出对应的优先级

2.MLFQ 可以同时满足各种工作的需求:对于短时间运行的交互型工作,获得类似于 SJF/STCF 的很好的全局性能,同时对长时间运行的CPU 密集型负载也可以公平地、不断地稳步向前。

因此,许多系统使用某种类型的 MLFQ作为自己的基础调度程序,包括类 BSD UNIX 系统[LM+89,B86]、Solaris[M06]以及 WindowsNT 和其后的 Window 系列操作系统。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值