Approach |
Older |
Newer |
Definition |
A monolithic kernel is one single program that contains all of the code necessary to perform every kernel related task. |
A Microkernel is a kernel design,that provides no OS services at all, only the mechanisms needed to implement those services. |
Size of OS |
Large |
Quite small |
Hardware Abstraction |
Provides powerful abstractions of the underlying hardware. |
Provides a smaller set of simple,hardware abstractions. |
Speed |
Faster |
Slower |
Memory Management |
In kernel space |
In user space |
Security and Stability |
Because of the "hardwiring" of system processes and the resulting,dependency of the monolithic,approach, it is assumable that other,processes will also crash, resulting in a system-wide halt. |
Excluding system processes from kernel space overcomes these problems. Also, It is easier to ensure the correctness of a small kernel, than a big one. That way, stability issues are simpler to solve with that approach. |
Inter Process Communication |
Uses signals and sockets |
Uses message queues |
Extensibility and Portability |
Adding new features to a monolithic system means recompilation of the whole kernel, often including the whole driver infrastructure. |
As the services are isolated from each other through the message,system, it is enough to re-implement the new memory,manager. |
Example |
Unix, MS-DOS and the early Mac OS |
AIX, BeOS, Mach, Mac OS X,,MINIX, and QNX. Etc |