In non-preemptive scheduling once a process has been allocated the CPU it runs uninterrupted until it finishes execution. On the other hand, in preemptive schedule algorithms, the running process may be interrupted by a higher priority process in between its execution. Whenever a process gets into ready state or the currently running finishes execution, the priority of the ready state process is checked against that of the running process. If the priority of the ready process is more it is allowed to be allocated to the CPU. Therefore, in these schemes, the CPU is allocated to the process with the highest priority all the time. This gives rise to frequent context switching, which can become very costly in terms of CPU time wasted in switching. In the following sections we will explore some of such scheduling algorithms