Process scheduling is the act of assign CPU to different processes in a multiprogrammed OS. We can do it following two politics: preemptive and non-preemptive scheduling. The first means that a process in the system can be halted also if it could logically continue. Non-preemptive scheduling means that the only way the process can be halted is that it's logically stopped, in example for an I/O operation, because the process is terminated, because it's blocked by a semaphore that time it with other resources in the system ... The choice of one way or another in the scheduling system is made usually keeping these points in mind:
1) throughput : is the number of processes that the OS can handle
2) CPU occupation
3) fairness : are we interested in different priority to handle the system or not ?
4) turnaround : is the maximum time we want a process can be in our system
5) interaction : we usually want that all processes in our system will respond as soon as possible
We can have different ways to handle scheduling: round-robin, priority systems, event-driven systems, ...
webmaster@scastagnoli.net