Operating Systems/Kernel Models

From Wikiversity
Jump to: navigation, search

Introduction[edit]

The kernel is the name given to the program that does most of the housekeeping tasks for the operating system. The boot loader hands control over to the kernel, which initializes the various devices to a known state and makes the computer ready for general operation.

After preparing the hardware for use, the kernel provides an abstraction layer between the hardware and software running on the system. Through an API, or application programming interface, software can request the kernel to perform hardware tasks, as well as access many common functions. Most current kernels also multi-task the hardware, sharing it between the various processes running on the system.

Monolithic Kernel[edit]

Design[edit]

Graphical overview of a Monolithic kernel
Wikipedia-logo.png Search for Monolithic kernel on Wikipedia.

Monolithic Kernels function with all of the kernel and device drivers inside one address space running in kernel mode. The principle advantage to this approach is efficiency (especially on x86 architectures where a task switch is a particularly expensive operation). Unfortunately, monolithic kernels suffer the risk of the entire system crashing due to a bug in a device driver.

Pros[edit]

  • Speed
  • Simplicity of design

Cons[edit]

  • Potential stability issues
  • Can become huge - Linux 2.6 has 7.0 million lines of code and Windows over 30 million!
  • Potentially difficult to maintain

Examples[edit]

  • Traditional Unix kernels (includes BSDs and Solaris)
  • Linux
  • MS-DOS, Windows 9x
  • Mac OS versions below 8.6


Microkernel[edit]

Design[edit]

Graphical overview of a microkernel
Wikipedia-logo.png Search for Microkernel on Wikipedia.

A Microkernel tries to run most of its services and device drivers in userspace. This can result in an increase in stability and possibly security on machines with a Memory Management Unit.

Pros[edit]

  • Stability
  • Security
  • Potentially more responsive (though often not in practice)
  • Benefits for SMP machines

Cons[edit]

  • Additional context switches are usually required
  • Slow Inter Process Communication can result in poor performance

Not helpful for threads

Examples[edit]

  • AmigaOS
  • Amoeba
  • Mach
  • Minix
  • L4
  • QNX

Hybrid kernel[edit]

Design[edit]

Graphical overview of a hybrid kernel
Wikipedia-logo.png Search for Hybrid kernel on Wikipedia.

A hybrid kernel combines the concepts of both monolithic kernels and microkernels. It is generally implemented by having a monolithic kernel with a more microkernel like design. When properly implemented it is hoped that this will result in the performance benefits of a monolithic kernel, with the stability of a Microkernel

Examples[edit]

  • NT kernel (used in Windows NT, 2000, XP, Vista and Windows 7)
  • Darwin (Mac OS X's kernel)
  • DragonFly BSD
  • BeOS
  • Plan 9