Kernel preemption

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 79.249.136.7 (talk) at 14:59, 24 November 2020 (Fix broken link). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Kernel preemption is a method used mainly in monolithic and hybrid kernels where all or most device drivers are run in kernel space, whereby the scheduler is permitted to forcibly perform a context switch (i.e. preemptively schedule; on behalf of a runnable and higher priority process) on a driver or other part of the kernel during its execution, rather than co-operatively waiting for the driver or kernel function (such as a system call) to complete its execution and return control of the processor to the scheduler.[1][2][3][4]

There are two main benefits to this method in monolithic and hybrid kernels, and answer one of the main criticisms of monolithic kernels from microkernel advocates, which is that:

  • A device driver can enter an infinite loop or other unrecoverable state, crashing the whole system.[1]
  • Some drivers and system calls on monolithic kernels are slow to execute, and cannot return control of the processor to the scheduler or other program until they complete execution.[2]

See also

References

  1. ^ a b "Preemption under Linux". kernelnewbies.org. 2009-08-22. Retrieved 2016-06-10.
  2. ^ a b Jonathan Corbet (2003-02-24). "Driver porting: the preemptible kernel". LWN.net. Retrieved 2016-06-10.
  3. ^ "FreeBSD Architecture Handbook, Chapter 8. SMPng Design Document, Section 8.3. General Architecture and Design". freebsd.org. Retrieved 2016-06-10.
  4. ^ Robert Love (2002-05-01). "Lowering Latency in Linux: Introducing a Preemptible Kernel". Linux Journal. Retrieved 2016-06-10.