Kernel is the heart of an operating system. It manages the system
resources. Kernel is like a bridge between application and hardware of
the computer. 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. Microkernel is the one in which user services and kernel services are
kept in separate address space. However, in Monolithic kernel user
services and kernel services both are kept in the same address space. Let us discuss more about Microkernel and Monolithic kernel -
Monolithic kernel
A Monolithic kernel is an OS architecture where the entire operating
system is working in kernel space. But unlike microkernel, the user services and kernel services are
implemented under same address space. This increases the size of the
kernel further increases the size of operating system.
Monolithic kernels are able
to dynamically load executable modules at runtime. It manages the system resources between application and hardware of the system. The monolithic kernel provides CPU scheduling, memory management, file
management and other operating system functions through system calls. As
user services and kernel services both reside in same address space,
this results in the fast executing operating system.
One of the drawbacks of the monolithic kernel is if any one service
fails entire system is crashed. If a new service is to be added in
monolithic kernel, the entire operating system is to be modified.
Examples - Linux, FreeBSD, OpenBSD, NetBSD, Solaris, OS-9, AIX, HP-UX, DOS,
Microsoft Windows (95,98,Me), OpenVMS, XTS-400 etc.
Microkernel
Where as in a Microkernel architecture, the core functionality is isolated from system services and device drivers. Microkernel being a kernel manages all system resources. But in a microkernel, the user services and the kernel services are implemented in different address space. The user services are kept in user address space, and kernel services are kept under kernel address space. This reduces the size of the kernel and further reduces the size of operating system.
In addition to the communication between application and hardware of the
system, the microkernel provides minimal services of process and memory
management. The communication between the client application
and services running in user address space is established through
message passing. They never interact directly. This reduces the speed of
execution of microkernel.
In short, if its a module in Linux, its a service in a microkernel, indicating an isolated process. In a microkernel, the user services are isolated from kernel services so if any user service fails it does not affect the kernel service and hence Operating system remain unaffected. This is one of the advantages in the microkernel. The microkernel is easily extendable. If the new services are to be added, they are added to user address space and hence, the kernel space do not require any modification. The microkernel is also easily portable, secure and reliable.
Examples - QNX,
Integrity, PikeOS, Symbian, L4Linux, Singularity, K42, Mac OS X, HURD,
Minix, and Coyotos.
simple and clear understanding for me. Thanks a lot!!
ReplyDelete