Multilevel Queue Scheduling

A multilevel queue scheduling algorithm partitions the ready queue in several separate queues, for instance

Fig 5.6 - pp. 138 in Sinha

In a multilevel queue scheduling processes are permanently assigned to one queues.

The processes are permanently assigned to one another, based on some property of the process, such as

  • Memory size
  • Process priority
  • Process type

Algorithm choose the process from the occupied queue that has the highest priority, and run that process either

  • Preemptive or
  • Non-preemptively

Each queue has its own scheduling algorithm or policy.


Possibility I
    If each queue has absolute priority over lower-priority queues then no process in the queue could run unless the queue for the highest-priority processes were all empty.

For example, in the above figure no process in the batch queue could run unless the queues for system processes, interactive processes, and interactive editing processes will all empty.


Possibility II
    If there is a time slice between the queues then each queue gets a certain amount of CPU times, which it can then schedule among the processes in its queue. For instance;

  • 80% of the CPU time to foreground queue using RR.
  • 20% of the CPU time to background queue using FCFS.

Since processes do not move between queue so, this policy has the advantage of low scheduling overhead, but it is inflexible.