The act of determining which process in the ready state should be moved to the running state is known as Process Scheduling.

The prime aim of the process scheduling system is to keep the CPU busy all the time and to deliver minimum response time for all programs. For achieving this, the scheduler must apply appropriate rules for swapping processes IN and OUT of CPU.

Schedulers fell into one of the two general categories :

Non pre-emptive scheduling. When the currently executing process gives up the CPU voluntarily.

Pre-emptive scheduling. When the operating system decides to favour another process, pre-empting the currently executing process.