多级队列(MLQ)CPU调度简介

2021年3月11日17:15:00 发表评论 896 次浏览

先决条件:

CPU调度

就绪队列中的进程可能会划分为不同的类, 其中每个类都有自己的调度需求。例如, 常见的除法是

前景(交互式)

处理和

背景(批次)

这两个类具有不同的调度需求。对于这种情况, 使用了多级队列调度。现在, 让我们看看它是如何工作的。

准备队列对于每个类别的进程, 都分为不同的队列。例如, 让我们采用三种不同类型的流程系统流程, 交互流程和批处理流程。这三个进程都有自己的队列。现在, 请看下图。

多级队列(MLQ)CPU调度1

三种不同类型的进程都有自己的队列。每个队列都有其自己的调度算法。例如, 队列1和队列2使用循环赛而队列3可以使用FCFS安排那里的程序。

在队列之间进行调度:如果所有队列都有一些进程, 将会发生什么?哪个进程应该获取CPU?为了确定队列之间的调度, 是必要的。这样做有两种方法-

  1. 固定优先级抢占式调度方法–每个队列具有绝对优先级, 其优先级低于低优先级队列。让我们考虑以下优先顺序队列1>队列2>队列3根据此算法, 除非队列1和2为空, 否则批队列(队列3)中的任何进程都无法运行。如果任何批处理进程(队列3)正在运行, 并且任何系统(队列1)或交互式进程(队列2)进入就绪队列, 则该批处理进程将被抢占。
  2. 时间分片–在这种方法中, 每个队列占用一定的CPU时间, 并可以用来调度自己的进程。例如, 队列1占用了CPU时间的50%, 队列2占用了CPU时间的30%, 队列3占用了CPU时间的20%。

示例问题:

考虑以下在多级队列调度下的四个进程的表。队列号表示进程的队列。

多级队列(MLQ)CPU调度2

队列1的优先级大于队列2。队列1使用循环(时间量子= 2), 队列2使用FCFS。

下面是甘特图问题的:

多级队列(MLQ)CPU调度3

在开始时, 两个队列都有进程, 因此队列1(P1, P2)中的进程首先以循环方式运行(由于优先级较高), 并在7个单元后完成, 然后队列2(P3)中的进程开始运行(因为没有进程)在队列1中), 但在运行时, P4进入队列1, 中断P3, 并开始运行5秒钟, 完成后, P3占用CPU并完成其执行。

优点:

  • 进程被永久分配给队列, 因此具有低调度开销的优点。

缺点:

  • 如果某些优先级较高的队列从未变空, 则某些进程可能会饿死CPU。
  • 它本质上是不灵活的。

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: