Definition - What does Monolithic Kernel mean?
A monolithic kernel is an operating system software framework that holds all privileges to access input/output (I/O) devices, memory, hardware interrupts and the CPU stack. Monolithic kernels tend to be larger than other kernels because they deal with so many aspects of computer processing at the lowest level, and therefore have to incorporate code that interfaces with many devices, I/O and interrupt channels, and other hardware operators.
This form of kernel is the basis for Linux, Unix, MS-DOS and Mac OS. Newer operating systems typically use a hybrid kernel to allow for easier maintenance and operating system improvements.
Techopedia explains Monolithic Kernel
Monolithic kernels retain full privilege access over the various components under their control. These include:
- File systems
- Interprocess communication
- I/O and device management
- Fundamental process management
The reason that newer kernel architectures such as microkernel or hybrid kernel design are preferred is because the larger the kernel becomes, the more functions it must take on. This makes the code cumbersome and slower to load. Another drawback to monolithic kernel design is that the kernel code has to be modified to add features or fix bugs. This usually requires recompilation of the kernel code and hardware drivers; it may even mean a complete operating system upgrade, which is costly and reduces user confidence.
Newer kernel architectures only retain access to limited privilege and pass privilege up to the user space through servers, which deliver resource management independently with privileges of their own. These servers run outside kernel memory space, allowing for much smaller kernel sizes and a much more efficient upgrade route.
Monolithic kernel architecture is still used for systems such as Linux-based systems, where an evolving kernel that is constantly being updated and replaced is part of the culture of the operating system. The streamlined nature of Linux has kept its monolithic kernel down to an acceptable size, making it easier to add features.