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

优势

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

缺点-

  • 最低级别的进程会出现饥饿问题。

2. 优先级调度算法:
优先级调度算法根据进程的优先级执行进程。每个进程分配一个优先级,优先级最高的进程首先执行。优先级可以在内部和外部定义。内部的优先次序是由系统根据所需的资源数量、所需的时间等来决定的,而外部的优先次序是根据所需工作的时间、所做工作的报酬或过程的重要性来决定的。优先级调度分为抢占式和非抢占式。

注意:
如果两个进程具有相同的优先级,则使用FCFS打破平局。
在抢占模式下,最高优先级进程的等待时间始终为零,而在非抢占模式下,最高优先级进程的等待时间可能不为零。

缺点:
主要问题是饥饿或无限期阻塞。可能会发生这样的情况:在进程流中,系统持续执行高优先级的进程,而低优先级的进程永远不会被执行。

MLQ与优先级调度算法的区别:

编号 多级队列调度(MLQ) 优先级调度
1 进程的执行取决于进程所属队列的特定级别的优先级。进程的进一步选择基于特定队列中使用的算法类型。 优先级调度根据流程的优先级执行流程,即按照优先级的降序执行流程。优先级高的进程首先执行。
2 根据具体情况,它可以是非先发制人的,也可以是先发制人的。 优先级调度在本质上既是先发制人的,也是非先发制人的。
3 平均等待时间和平均响应时间取决于用于调度的多层队列的不同级别的算法。 优先级调度没有平均等待时间和响应时间的概念。
4 多级队列调度(MLQ)会导致在多级队列的较低级别上进程的短缺。 进程的阻塞问题可以通过老化来解决,老化是指在固定的时间间隔后,以固定的数量逐步增加进程的优先级。