next up previous
Next: Process Synchronization Up: Comparison between Original Previous: Comparison between Original

Process Scheduling

In the original Unix, preemptive priority scheduling was used. Whether system or user process is the main criteria of priority assignment; the lowest system priority is higher than the highest user priority. When a process waits on an event, its priority is decided on the kind of the event. For examples, disk events are high, teletype events are low, and time-of-day are very low. However Thompson observed that the difference in system process priorities had only a negligible effect on the performance. The priority of a user process is altered based on the ratio of the amount of compute time to real time consumed by the process every second. When a process with higher priority wakes up, the current running process with lower priority will be preempted.

The main difference of Solaris 2 is the support of real-time process. However it is not a hard real-time but a soft real-time support mechanism. Processes are divided into two categories. One is real-time process and the other is time-sharing process. All the real-time processes are given higher priority than any time-sharing processes. Whenever a real-time process is ready to run, it is picked up for execution by the scheduler. However it does not guarantee the operation to finish within some predetermined period. In addition, as we have learned in the class [4], Solaris 2 supports use-level threads. There are systems calls to create, terminate, suspend, synchronize, set or get priority of threads. Unlike the original Unix, the frequency of priority update is once every 100ms.



Hitoshi Oi
Wed Dec 20 23:53:45 EST 1995