Only when all FIFO processes are completed does the scheduler proceed to execute
processes of lower priority.
When executing a process of the second type (SCHED_RR), the scheduler chooses
those from this group with the highest priority and uses a round robin algorithm with
a small time quantum. Then, when the time quantum expires, other processes (such as
a FIFO or another RR type with a higher priority) may be selected and executed before
the first process is allowed to run to completion.
The third type of process (SCHED_OTHER) has the lowest priority and is executed
only when there are no processes with higher priority in the READY queue. From
among these processes, the scheduler selects processes in order after considering their
dynamic priorities (which are set by the user using system calls and by a factor computed
by the system). From among the SCHED_OTHER processes, the priorities of all
processes that are CPU-bound are lowered during execution; therefore, they may earn
a lower priority than processes that are not executing or those with a priority that has
not been lowered.