Other possibilities include certain classes of interrupts and, on some machines, stores by the local processor to locations that map to the same location in the cache. All privileged instructions must by definition be executed in the kernel. Any operation that requires global information that cannot safely be shared with users must be implemented in the kernel. Most operating systems put functionality into the kernel that doesn't strictly have to be there in order to minimize the number of times that control must cross the kernel-user interface, thereby improving performance. Secondarily, they may place functionality in the kernel to improve the quality of decisions, based on global knowledge.
Most operating systems have a notion of priority for processes.
A blocks, or until the priorities of the processes change. In a lottery-based system, process A is more likely to be chosen to run at any given time, but process B will occasionally be chosen as well. Discuss the tradeoffs among these different notions of priority. Lottery scheduling and the NT scheduler are both capable of granting proportional shares of the CPU based on process priority. The traditional Unix scheduler can only approximate this through a comparatively complex and unintuitive aging mechanism.