A microkernel is an operating-system kernel that retains only the essential functions—inter-process communication, basic memory management, and scheduling—inside the privileged kernel address space. Everything else, including device drivers, filesystems, and network stacks, runs as ordinary user-space processes that communicate with each other and with the kernel through message passing. The design aims for modularity, fault isolation, and ease of verification.
Theoretically, a bug in a microkernel driver should crash only that driver, leaving the rest of the system intact. In practice, the overhead of message passing makes pure microkernels slower than monolithic ones, and early attempts (Mach 3.0, for example) suffered from this. Modern microkernels like L4 and its descendants have reduced the overhead dramatically. QNX powers cars and medical devices; seL4 is formally verified and used in safety-critical contexts.
Linux is not a microkernel. Andrew Tanenbaum, author of the microkernel teaching OS MINIX, famously wrote in 1992 that "Linux is obsolete" because its monolithic design was a step backwards. Torvalds replied that microkernels were elegant but impractical, and that Linux's pragmatic design would win in the real world. Three decades later, both sides can claim partial vindication: microkernels thrive in niches demanding isolation, while Linux dominates nearly everywhere else.
Related terms: Monolithic Kernel, Kernel
Discussed in:
- Chapter 3: The Linux Kernel — Monolithic versus Microkernel
Also defined in: Textbook of Linux