1. 多级队列调度(MLQ):
只有一个队列并调度所有进程是非常困难的。这就是使用多级队列调度的地方。在这种方法中,根据进程的属性(如系统进程、I/O进程等)将进程划分为不同的类。因此,我们为n类进程得到’ n ‘个队列数。每个队列被分配一个优先级,并可以使用自己的调度算法,这使得同时使用多个调度算法很方便。通常,队列的最顶层具有最高的优先级,当我们移动到更低的级别时,优先级会降低。如果上层比下层具有绝对优先级,则它是非抢占性的,否则,如果时间片被划分到不同的队列中,则它本质上是抢占性的。

优势 –
该算法的主要优点是可以使用FCFS、SJF、LJF等多种算法。同时在不同的队列中。

缺点-
最低级别的进程会面临饥饿问题。

2. 最长工作优先(LJF):
最长作业优先是一种非抢占调度算法。该算法基于进程的突发时间。进程根据它们的突发时间(即突发时间的降序)被放入就绪队列。顾名思义,该算法基于突发时间最大的进程优先处理这一事实。在此时间点之前,只考虑已经到达系统的那些进程的爆发时间。它的抢占版本称为最长剩余时间优先(LRTF)算法。

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

缺点-

  • 对于给定的一组进程,该算法给出了非常高的平均等待时间和平均周转时间。
  • 这可能会导致护航效应。
  • 可能会发生这样的情况:一个短的进程可能永远不会被执行,而系统继续执行较长的进程。
  • 它降低了处理速度,从而降低了系统的效率和利用率。

最长作业优先(LJF)与多级队列调度(MLQ)的区别:

编号 最长作业优先(LJF) 多级队列(MLQ)
1 最长作业优先(LJF)根据突发时间执行进程,即按照突发时间的降序执行。 进程的执行取决于进程所属队列的特定级别的优先级。进程的进一步选择基于特定队列中使用的算法类型。
2 最长作业优先(LJF)是非抢占的,但它的抢占版本也被称为最短剩余时间优先(SRTF)算法。 多级队列(MLQ)可以是先发制人的,也可以是非先发制人的,这取决于具体情况。
3 给定过程的平均等待时间较长,降低了系统的效率。 没有平均等待时间和响应时间的概念,因为它完全取决于在多级队列的各个级别中使用的算法。
4 长进程可能永远不会被执行,而系统可能继续执行短进程。 多级队列(MLQ)会导致在多级队列的较低级别的进程饥饿。