在进程容易分成不同组的情况下,可以有另一类调度算法。例如,进程通常分为前台进程(foreground process)(或交互进程)和后台进程(background process)(或批处理进程)。这两种类型的进程具有不同的响应时间要求,进而也有不同调度需要。另外,与后台进程相比,前台进程可能要有更高的优先级(外部定义)。
多级队列(multilevel queue)调度算法将就绪队列分成多个单独队列(图1)。根据进程属性,如内存大小、进程优先级、进程类型等,一个进程永久分到一个队列,每个队列有自己的调度算法。
例如,可有两个队列分别用于前台进程和后台进程。前台队列可以采用RR调度算法,而后台队列可以采用FCFS调度算法。
此外,队列之间应有调度,通常采用固定优先级抢占调度。例如,前台队列可以比后台队列具有绝对的优先。
现在,我们看一个多级队列调度算法的实例,这里有五个队列,它们的优先级由高到低:
![69cb9cc08694e976b0eb1d7b0371cd0a.png](https://i-blog.csdnimg.cn/blog_migrate/1d660f27a207f128386540cd913d6d85.jpeg)