“Most commodity computers can only run one process at a time,
and yet the user will have the impression that many programs run in
parallel. This illusion is created by the operating system
scheduler. To do so, the scheduler causes the system to switch
quickly between processes. Each process runs for a certain time,
and when a process times out the scheduler chooses which process to
execute next on the CPU. Therefore, the behavior of a system mainly
depends on the scheduler. Fairness, efficiency, latency; the
scheduler must balance these properties to offer the appropriate
behavior. Hence while a scheduler aimed to desktop applications
should emphasize the interactivity, server-oriented schedulers
should emphasize efficiency and respond correctly to scalability
issues. When implementing a scheduling algorithm the developer must
take into account that each property has an impact on the
others…”