Glossary

Monolithic Kernel

A monolithic kernel runs the entire operating system kernel—scheduler, memory management, filesystems, networking, device drivers—in a single privileged address space. Subsystems communicate through ordinary function calls rather than message passing, giving high performance but requiring that any bug or driver crash risk bringing down the whole system. Linux, the BSDs, and classic Unix are all monolithic kernels.

The alternative is a microkernel, which keeps only the bare minimum (scheduling, IPC, basic memory management) in the privileged core and moves everything else—drivers, filesystems, network stacks—into ordinary user-space processes that talk via message passing. Microkernels are more modular and arguably more robust but historically slower due to IPC overhead. Famous microkernels include Mach, L4, QNX, and MINIX.

Linux straddles the divide in practice. Although architecturally monolithic, it supports loadable kernel modules, so drivers and filesystems can be inserted and removed at runtime without recompiling. This gives much of the flexibility of a microkernel while keeping the performance of a monolith. Torvalds and Andrew Tanenbaum (the author of MINIX) famously argued about the merits of the two designs on Usenet in 1992; Linux's runaway success has been read by many as a vindication of the pragmatic monolithic approach.

Related terms: Kernel, Microkernel, Kernel Module, Linux

Discussed in:

Also defined in: Textbook of Linux