New version!

A new version of this website is available at architectural-patterns.net.

The microkernel can serve as a basis for systems that are by nature prone to dramatic changes, like Operating Systems. Think of changing your house. Not just redecorating the walls, or adding a barn. Think of changing the foundation. If your system needs to handle this kind of brutality, consider using a microkernel.

This architecture is a specialization of a layered system.

Examples

  • Minix (see the very interesting discussion on microkernels vs "monolithic systems" between Andrew Tanenbaum (Minix) and Linus Torvalds (Linux).
  • Mach

Where does it come from?

It's a typical Operating System architecture, having come into fruition in the late eighties, early nineties.

When should you use it?

The architecture contains two adapters. The lower adapter, or Microkernel, hides the hardware specific modules for the developer. The upper adapter, called Adapter, hides the system specific modules for the developer. If your systems contians these types of modules and these are likely to be modified in the future, this architecture may be for you.

How does it work?

The Microkernel contains the absolute minimum functionality of the (Operating) System. It is platform dependent. In an OS, it handles system resources like memory, files, and processes.

The dynamic platform dependent code of the kernel is implemented in Internal Servers. These are for example the device drivers that steer the hardware directly. They may be loaded and unloaded without rebuilding or even rebooting the (Operating) System.

While the entire system may be accessed through the Microkernel, it is very Spartan. To ease systems programming, the (Operating) System may contain External Servers. Examples are Memory Management, File System Services, I/O Management Services and other System Services.

For portability, an extra Adapter is provided. This makes it possible to change an External Server without changing all applications that use it.


Microkernel architecture

Problems

  • Slower than "monolithic systems".
  • More complex to develop for.

Links