通常在使用多级队列调度算法时,进程进入系统时被永久地分配到某个队列。例如,如果前台和后台进程分别具有单独队列,那么进程并不从一个队列移到另一个队列,这是因为进程不会改变前台或后台的性质。这种设置的优点是调度开销低,缺点是不够灵活。
相反,多级反馈队列(multievel feedback queue)调度算法允许进程在队列之间迁移。这种想法是,根据不同CPU执行的特点来区分进程。如果进程使用过多的CPU时间,那么它会被移到更低的优先级队列。这种方案将I/O密集型和交互进程放在更高优先级队列上。 此外,在较低优先级队列中等待过长的进程会被移到更高优先级队列。这种形式的优化可阻止饥饿的发生。
例如,一个多级反馈队列的调度程序有三个队列,从0到2(如上图)。调度程序首先执行队列0内的所有进程。只有当队列0为空时,它才能执行队列1内的进程。类似地,只有队列0和1都为空时,队列2的进程才能执行。到达队列1的进程会抢占队列