Frequently Asked Question

What does it mean that Linux is a monolithic kernel?

A monolithic kernel runs the scheduler, memory manager, filesystems, network stack, and device drivers all in the same address space, all in kernel mode (ring 0 on x86). They call each other as ordinary C functions. The opposite is a microkernel design (Mach, L4, Minix) where only a minimal core runs in kernel mode and the filesystem, drivers, and network stack are separate user-space servers that communicate via message passing.

Linux is monolithic, but with a twist: it supports loadable kernel modules (.ko files), so drivers and filesystems can be added and removed at runtime without rebuilding the kernel. The address space is still shared, a buggy module can corrupt the entire kernel, but you don't have to recompile to plug in a new device.

Video

Further reading and video