多级队列 (MLQ) 调度和循环 (RR) 算法的区别
1. 多级队列调度(MLQ):
只有一个队列并安排所有进程是相当困难的。这是使用多级队列调度的地方。在这种情况下,根据进程的属性(如系统进程、I/O 进程等)将进程分为不同的类。因此,我们为 n 类进程获得了“n”个队列。每个队列都有一个优先级,可以使用自己的调度算法,方便同时使用多种调度算法。通常,队列的最高级别具有最高优先级,随着我们移动到较低级别而降低。如果上层比下层具有绝对优先级,那么它是非抢占式的,否则如果时间片在各个队列之间划分,那么它本质上就是抢占式的。
优点:
该算法的主要优点是我们可以在不同的队列中同时使用FCFS、SSJF、LJF等多种算法。
缺点:
- 最低级别的进程遭受饥饿问题。
2. 循环 (RR) 算法 :
它专为分时系统而设计。进程被放入就绪队列,在这种情况下是一个循环队列。在这种情况下,定义了一个称为时间量子的小时间单位。该算法从队列中选择第一个进程并在时间量定义的时间内执行它。如果进程的突发时间小于时间量子,则 CPU 执行下一个进程,但如果它的突发时间高于时间量子,则该进程被中断并在相同的时间量子内执行下一个进程。如果一个进程被中断,则会发生上下文切换,并将该进程放回队列的尾部。它本质上是先发制人的。
该算法主要依赖于时间量子。非常大的时间量使 RR 与 FCFS 相同,而非常小的时间量将导致开销,因为上下文切换将在非常小的间隔后一次又一次地发生。
该算法的主要优点是所有进程一个接一个地执行,这不会导致进程饥饿或进程等待很长时间才能执行。
MLQ 和 Round-Robin (RR) 调度算法的区别:
MLQ算法 | Round-Robin (RR) 调度算法 |
---|---|
如果进程所在的队列级别和进一步执行取决于该级别中使用的算法,则 MLQ 根据优先级执行进程。 | Round-Robin (RR) 根据定义的时间量执行进程,即每个进程执行固定的时间量。 |
根据条件,MLQ 既可以是非抢占式的,也可以是抢占式的。 | Round-Robin (RR) 本质上是抢占式的。 |
给定进程集的平均等待时间取决于多级队列的各个级别中使用的算法元组。 | 给定进程集的平均等待时间非常短,并且取决于时间量。 |
多级队列调度(MLQ)相当复杂且难以实施。 | 实现 RR 非常容易。 |
多级队列调度(MLQ)导致较低级别的进程饥饿。 | 每个进程都被执行,每个用户都觉得他的工作正在完成,因为 CPU 为每个进程提供了相同的时间。 |
在不同级别之间切换会导致处理器开销。 | 在 RR 的情况下,如果时间量非常小,那么上下文切换会在非常短的时间间隔后一次又一次地发生,这会导致开销。 |