A procedure call passes control between two parts of the same process in user space. A system call passes control between a process in user space and the operating system in system space.
Mutual exclusion is a form of resource access that ensures that a resource shared among several executing entities (processes or threads) is accessed by only one entity at a time. A critical region is a finite section of an entity's code within which the entity is guaranteed to have mutually exclusive access to a shared resource.
global semaphore mutex = 1 /* other code */ down(mutex) /* enter critical region */ /* access shared resource */ up(mutex) /* leave critical region */
Yes, it is reasonable. A non-preemptive scheduler must let the running process decide to release control of the CPU. However, once the CPU is free, the scheduler needs to pick the next process to run, and using a priority-based selection mechanism is reasonable.
This page last modified on 6 March 2000.