• When the CPU is forcefully deallocated from the currently running process before its completion, it is called preemption and such scheduling scheme is known as preemptive scheduling.
  • When the CPU is once allocated to a process, it keeps the CPU control until it voluntarily release the CPU either by terminating or switching to the waiting state. This type of scheduling scheme is called non-preemptive scheduling scheme.
  • CPU scheduling decisions may take place under the following circumstances:
  1. When a process switches from running to waiting state. E.g. input/output request.
  2. When a process switches from running state to ready state. E.g. when interrupt occurs.
  3. When a process switches from waiting to ready state. E.g. completion of an input/output request.
  4. When a process terminates.
  • No choice is available in terms of scheduling for circumstances, 1 & 4. A new process, if one exists in the ready queue must be selected for execution. When scheduling takes place only under circumstances one and four, we say the scheduling scheme is not pre-emptive otherwise the scheduling scheme is pre-emptive.
  • Under non pre-emptive scheduling once the CPU has been allocated to the process, the process keeps the CPU until it releases the CPU by terminating or by switching to the waiting state. This scheduling method is used by WINDOWS 3.1 and MACINTOSH.
  • It is the only method that can be used on certain hardware i.e. timer. This hardware is needed for pre-emptive scheduling. Non pre-emptive scheduling does not put load on the processor. In the case of non-emptive, kernel structure is simple. In case of pre-emptive scheduling, kernel structure is more complex.