Scheduling is the method by which threads, processes, or date flows are given access to system resources (e.g. processor time, communications bandwidth). This is usually done to load balance a system effectively or achieve a target quality of service. The need for a scheduling algorithm arises from the requirement for most modern systems to perform multitasking (execute more than one process at a time) and multiplexing (transmit multiple flows simultaneously). The scheduler is concerned mainly with:
Throughput – The total number of processes that complete their execution per time unit
Latency specifically:
Turnaround time – total time between submission of a process and its completion
Response Time – amount of time it takes from when a request was submitted until the first response is produced
Fairness / Waiting Time – Equal CPU time to each process (or more generally appropriate times according to each process’ priority). It is the time for which the process remains in the ready queue
CPU Allocation Management & Scheduling Software Technologies