操作系统学习:浅析多级反馈队列MLFQ(一)

335 阅读2分钟

0、引言

在上篇文章操作系统学习(一):浅析操作系统进程调度算法中讲到,在一个通用的操作系统中,操作系统通常对每个作业的长度知之甚少。因此,我们如何建立一个没有这种先验知识的 SJF/STCF?更进一步,我们如何能够将已经看到的一些想法与 RR 调度程序结合起来,以便响应时间也变得很好?没有工作长度的先验(priori)知识,如何设计一个能同时减少响应时间和周转时间的调度程序?

多级反馈队列是用历史经验预测未来的一个典型的例子,操作系统中有很多地方采用了这种技术。

1、多级反馈队列(MLFQ)的基本规则

如果A的优先级 > B的优先级,运行A(不运行B)

如果A的优先级 = B的优先级,轮转运行A和B

工作进入系统时,放在最高优先级(最上层队列)

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

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

你可能还不明白这些规则是什么意思,不要紧,我们一步一步来看。

2、MLFQ的规则具体说明

MLFQ 中有许多独立的队列(queue),每个队列有不同的优先级(priority level)。任何时刻,一个工作只能存在于一个队列中。MLFQ 总是优先执行较高优先级的工作(即在较高级队列中的工作)。

当然,每个队列中可能会有多个工作,因此具有同样的优先级。在这种情况下,我们就对这些工作采用轮转调度。