Microkernel
Kernel
- Definition
- Wrap core system resources in a small component, that rarely changes.
The microkernel is used primarily in operating systems, but the kernel concept of encapsulating system resources is also used by web frameworks.
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.
Examples
- Operating systems: Minix, Mach, Symbian OS
- Web frameworks: for example Symfony (PHP)
When should you use it?
The microkernel can serve as a basis for a system that has a wide range of different applications, like operating Systems and web frameworks. It's good to provide common functionality in a single place, to reduce duplication and control shared resources.
Problems
- The extra layers can cause overhead and loss of flexibility and performance
Links
- Microkernel Architecture Pattern & Applying it to Software Systems
- Wikipedia on Microkernel
- Very interesting discussion on microkernels vs "monolithic systems" between Andrew Tanenbaum (Minix) and Linus Torvalds (Linux).