1. INTRODUCTION
Multiprogramming is one of the most important aspects of operating systems. Multiprogramming became possible when disks were introduced to the computing world. The concept of multiprogramming relies on the capability of a computer to store instructions for long-term use. The goal is to reduce CPU idle time by allowing new jobs to take over the CPU whenever the currently running job needed to wait. Process scheduling is an essential part of a Multiprogramming operating system. CPU scheduling algorithms are used for better utilization of CPU. Main objective is increasing system performance in accordance with the chosen set of criteria. It is the change of ready state to running
state of the process. CPU scheduler selects from among the processes that are ready to execute and allocates the CPU to one of them. CPU scheduling is the basis of multiprogramming systems. Maximum CPU utilization obtained with
multiprogramming. CPU scheduling more complex when multiple CPUs are available.