.. _priority_queues: Multi-level Priority Queue Scheduler ===================================== .. index:: Multi-level Priority Queue Scheduler * A more complex scheme is often used to shift the behavior of the :ref:`rr` slightly in favor of short, interactive processes like the :ref:`sjn`. * New processes begin in the highest priority queue. * A process is rewarded by being moved to a higher priority queue if it voluntarily blocks for I/O before its time quantum expires. Similarly processes that are preemptively removed are penalized by being put in a lower priority queue. * Queues with a lower priority use a longer time quantum. * Higher priority queues must be empty before processes from lower priority queues are allowed to run. Thus, it is possible for :term:`starvation` to occur. .. figure:: priority_queues.png :align: center