操作系统 多级队列调度
在本文中,您将了解多级队列调度以及操作系统中多级队列中的几种类型的进程。
多级队列调度
每种调度算法支持不同的进程,但在一般系统中,有些进程需要使用优先级算法进行调度。虽然有些进程想要留在系统中(交互式进程),但其他的后台进程的执行可以被延迟。
不同系统之间,就准备队列算法之间以及队列内部的数量可能会有所不同。通常使用带有不同时间片的轮转法进行此类维护。为不同情况设计了几种调度算法,其中进程可以轻松分成组。由于响应时间和资源需求不同,存在两种需要不同调度算法的进程类型。前台(交互式)和后台进程(批处理)是有区别的。后台进程优先于前台进程。
准备队列使用多级队列调度技术被分成七个不同的队列。这些进程根据它们的优先级(如内存大小,进程优先级或类型)分配到一个队列中。调度每个队列的方法是不同的。一些队列用于前台进程,而另一些队列用于后台进程。前台队列可以使用轮转法进行调度,而后台队列可以使用FCFS策略进行调度。
多级队列调度的优缺点
多级队列调度有各种优点和缺点。以下是多级队列调度的一些优点和缺点:
优点
- 您可以使用多级队列调度将不同的调度方法应用于不同的进程。
- 它在调度方面的开销较低。
缺点
-
低优先级进程有饥饿的风险。
- 它是刚性的。
示例
让我们以一个具有五个队列的多级队列调度算法为例来了解这种调度的工作原理:
- 系统进程
- 交互进程
- 交互编辑进程
- 批处理进程
- 学生进程
每个队列都具有绝对优先级,优先级队列为空时,不允许执行任何进程。在上述示例中,只有当系统、交互和编辑进程的队列为空时,才允许执行其他进程。如果在批处理进程进行中时有一个交互编辑进程进入就绪队列,那么批处理进程将被抢占。
以下是上述示例中使用的进程描述:
系统进程
操作系统有自己的进程需要执行,称为系统进程。
交互进程
这是一种需要进行相同类型交互的进程。
批处理进程
批处理是一种操作系统特性,它将程序和数据在处理之前收集到一个批次中。
学生进程
系统进程始终被赋予最高优先级,而学生进程始终被赋予最低优先级。
示例问题
我们来看一个多级队列调度算法的示例问题,展示多级队列调度是如何工作的。考虑下表中列出的四个进程,在多级队列调度下的问题。队列编号表示进程所在的队列。
Process | Arrival Time | CPU Burst Time | Queue Number |
---|---|---|---|
P1 | 0 | 4 | 1 |
P2 | 0 | 3 | 1 |
P3 | 0 | 8 | 2 |
P4 | 10 | 5 | 4 |
队列1的优先级高于队列 2。 队列1使用轮转调度算法(时间片=2), 而队列2使用先来先服务(FCFS)调度算法。
工作原理:
- 在开始时,两个队列都被处理。因此, 队列1(P1、P2) 以轮转方式首先运行(由于优先级更高),并在7个单位后完成。
- 在 队列2(进程P3) 开始运行(因为队列1中没有进程),但在它执行时,P4进入队列1并中断P3,然后P3获得CPU并完成执行。
多级反馈调度
每个算法都支持不同的进程,但某些进程需要在一般系统中使用优先级算法进行调度。前台或后台操作有不同的队列,但它们不会在队列之间切换或改变其前台或后台的属性;这种类型的组织可以从低调度中获益,但不灵活。
这种策略优先考虑需要I/O且交互式的操作。它是具有独特的CPU爆发时间的独立进程。它允许一个进程在队列之间切换。如果一个进程使用了太多的处理器时间,它将被切换到最低优先级队列。在较低优先级队列中等待太长时间的进程可能会被移动到更高优先级队列。这种类型的老化可以防止饥饿现象。
多级反馈队列调度器的参数如下:
- 系统中每个队列的调度算法。
- 系统中的队列数量。
- 确定何时将队列降级为较低优先级队列的方法。
- 当一个进程升级到较高优先级队列时,确定何时进行升级。
- 确定哪些进程将进入队列以及这些进程何时需要服务的方法。