Author(s): Nisha Yadav, Nikita Chhillar, Neha jaiswal

Scheduling is the method by which threads, processes or data flows are given access to system resources like processor or other resources required. This is basically done to load balance a system efficiently or accomplish a target quality of service. Scheduling algorithms are required by most contemporary systems to perform multitasking i.e. execution of more than one process at a time and multiplexing i.e. transmission of multiple flows simultaneously. The scheduling is concerned chiefly with: • Throughput - The total number of processes that complete their execution per time unit. • Latency, specifically: o Turnaround time - total time between submission of a process and its completion. o 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.