多级队列调度(MLQ)和最短作业优先的区别

多级队列调度(MLQ)和最短作业优先的区别

1. 多级队列调度(MLQ):
只有一个队列并安排所有进程是相当困难的。这是使用多级队列调度的地方。在这种情况下,根据进程的属性(如系统进程、I/O 进程等)将进程分为不同的类。因此,我们为 n 类进程获得了“n”个队列。每个队列都有一个优先级,可以使用自己的调度算法,方便同时使用多种调度算法。通常,队列的最高级别具有最高优先级,随着我们移动到较低级别而降低。如果上层比下层具有绝对优先级,则它是非抢占式的,否则如果时间片在各个队列之间划分,则它本质上是抢占式的。

优点
该算法的主要优点是我们可以在不同的队列中同时使用FCFS、SSJF、LJF等多种算法。
缺点
最低级别的进程遭受饥饿问题。

2. 最短作业优先(SJF):
它基于过程的突发时间。这些进程根据它们的突发时间被放入就绪队列。在该算法中,首先处理突发时间最少的进程。仅比较在该时间之前存在或已经到达的那些进程的突发时间。它本质上也是非抢占式的。它的抢先版本称为最短剩余时间优先(SRTF)算法。
该算法的主要优点是它为给定的一组进程提供了最短的等待时间,从而减少了平均等待时间。这种算法的缺点是系统可能永远不会处理长进程,并且可能会在队列中停留很长时间,从而导致进程饥饿。

注意: 如果两个进程具有相同的突发时间,则使用 FCFS 打破平局,即先处理先到达的进程。

SJF 和多级队列调度的区别:

最短作业优先 (SJF) 多级队列调度 (MLQ)
SJF 也是非抢占式的,但其抢占式版本也称为最短剩余时间优先 (SRTF) 算法。 MLQ 可以是非抢占式或抢占式,具体取决于条件。
最短作业优先 (SJF)按照突发时间的降序执行进程,即首先执行最短的作业。 进程的执行取决于进程所属的特定队列级别的优先级。进程的进一步选择基于特定队列中使用的算法类型。
SJF 中的开销是由于必须记录经过的时间这一事实。 MLQ 有一些 CPU 开销,因为它需要在队列之间切换。
在 SJF 的情况下,平均等待时间最短。 平均等待时间取决于不同级别队列中使用的算法。
最短作业优先 (SJF)其实现的主要困难是下一个 CPU 突发的长度是未知的。 多级队列调度 (MLQ)算法复杂,难以实现。
最短作业优先 (SJF)会导致突发时间非常长的进程饥饿。 多级队列调度 (MLQ)导致较低级别的进程饥饿。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程