Monolithic Kernels and Micro-Kernels

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 2

Monolithic kernels and micro-kernels

Introduction

An operating system consists of two parts: a privileged mode called kernel space and
unprivileged mode called user space. The separation is a need rather than an option
otherwise process protection cannot be achieved. Depending on which processes run in
what space, we can classify operating systems into three main architectures: Monolithic
kernel, Microkernel and Hybrid or modular kernel operating systems.

Monolithic Kernel

You can think of a monolithic kernel OS as a single large static binary file process
running entirely in a single address space. Basic OS services such as process
management, memory management, interrupt handling, IO communication, file system,
device drivers, networking, etc all run in kernel space. Entire services are loaded on boot
up and reside in memory and work is done using system calls. Linux is an example on a
monolithic kernel based OS.

Monolithic Kernel Advantages


Generally speaking a monolithic OS kernel is faster due to small source and compiled
code size. Less code means also less bugs and security issues.

Monolithic Kernel disadvantages


Monolithic OS being a single big pile of code has disadvantages. For example, making
changes is not easy and testing takes more time. It is hard to maintain, patch or extend.
Bug fixing or adding new features requires the compilation of the whole source code
which is a time and resource consuming process.

Microkernel

The idea behind microkernel OS is to reduce the kernel to only basic process
communication and IO control and let other system services run in user space just like
any other normal processes. These services are called servers and kept separate and run in
different address spaces. Contrary to monolithic OS where services are directly invoked,
communication in a microkernel is done via message passing (inter process
communication IPC). Mac OS and WinNT are two examples on microkernel OS
architecture.

Microkernel Advantages
Here some advantages to the microkernel OS architecture…
1. Service separation has the advantage that if one service (called a server) fails
others can still work so reliability is the primary feature. For example if a device
driver crashes does not cause the entire system to crash. Only that driver need to
be restarted rather than having the entire system die. This means more persistence
as one server can be substituted with another. It also means maintenance is easier.
2. Different services are built into special modules which can be loaded or unloaded
when needed. Patches can be tested separately then swapped to take over on a
production instance.
3. Message passing allows independent communication and allows extensibility
4. The fact that there is no need to reboot the kernel implies rapid test and
development.
5. Easy and faster integration with 3d party modules.

Microkernel Disadvantages
Here are some disadvantages to the microkernel approach…
1. Memory foot print is large
2. Potential performance loss (more software interfaces due to message passing)
3. Message passing bugs are not easy to fix
4. Process management is complex

Hybrid kernel

The hybrid approach is derived from the best of both micro and monolithic kernel
architectures. Instead of loading the whole thing into memory, core modules are loaded
dynamically to memory on demand. One disadvantage is that a module may destabilize a
running kernel.

The Linus Torvalds Andrew Tanenbaum Debate


Linus Torvalds the main guy behind Linux is a strong proponent of monolithic kernels
while Andrew Tanenbaum the creator of Minix OS is a supporter of microkernel.
Tanenbaum says that microkernel is a better design principle especially when reliability is
of uttermost importance. According to Tanenbaum, reliability scores over performance
gains because microkernels allow building self healing systems.

You might also like