Processor Scheduling Policies
Scheduling determines which process is chosen to make the transition from the ready state at the processor waiting queue to actually running on the processor. In a multiprocessor system, the scheduling will involve more than one processor, but at any given time, there will be only one process running per processor.
Scheduling algorithms fall into two categories: preemptive and non-preemptive algorithms. Preemptive is when an algorithm, such as Round-Robin, Shortest Remaining Time (SRT), removes a process from the processor when its associated time-slice (quantum) expires, to enable this the next process on the queue is given a higher priority or the waiting-time for other processes is increased. Preemptive reduces overall waiting time and makes such algorithms generally suitable for interactive systems. On the other hand, non-preemptive schedulers, such as First-in-First-Out (FIFO), Shortest Process First (SPF) and Highest-Response-Ratio-Next (HRRN), allow a process to run to its completion or until it voluntarily gives its CPU time. Non-preemptive can result in depriving waiting processes from the processor time in favor of the running process.