Monolithic kernel vs Microkernel

May 15, 2006
A kernel is indispensable and therefore the most important part of an operating system. However, there are different design principles governing developing of a kernel. On the one end of the spectrum, there is the Monolithic kernel architecture and at the other end is the microkernel architecture.

What is a Monolithic kernel?


A Monolithic kernel is an OS architecture where the entire operating system (which includes the device drivers, file system, and the application IPC) is working in kernel space. Monolithic kernels are able to dynamically load (and unload) executable modules at runtime.

Examples of operating systems that use a monolithic kernel are - Linux, BSDs (FreeBSD, OpenBSD, NetBSD), Solaris, OS-9, AIX, HP-UX, DOS, Microsoft Windows (95,98,Me), OpenVMS, XTS-400 etc.

What is a Microkernel?


Where as in a Microkernel architecture, the core functionality is isolated from system services and device drivers (which are basically just system services).

In short, if its a module in Linux, its a service in a micro kernel, indicating an isolated process.

Examples of operating systems that use a microkernel are - QNX, Integrity, PikeOS, Symbian, L4Linux, Singularity, K42, Mac OS X, HURD, Minix, and Coyotos.

Monolithic kernel vs Microkernel - Which is better?


Andrew.S.Tanenbaum - the creator of Minix operating system is a staunch supporter of the microkernel architecture. He believes that microkernel architecture is a better design principle and is ideal in critical situations where reliability is of uttermost importance like military or aerospace industries.

Where as Linus Torvalds who is the father of Linux kernel thinks microkernel architecture has its flaws and is very hard to debug.

You can read the famous "Tanenbaum - Linus debate" on which kernel architecture is better - Monolithic or Microkernel at oreilly.com/catalog/opensources/book/appa.html and www.cs.vu.nl/~ast/reliable-os/.

0 comments: