Skip to main content

Short note: Monolithic and microkernel

Short answer

A monolithic kernel runs all OS services in kernel mode via direct calls, fast but large and prone to crashes. A microkernel keeps only IPC, scheduling, and basic memory management in kernel, running other services as user-level servers via message passing; it is modular, reliable, and suits distributed systems, though slower.

Write a short note on monolithic and microkernel architectures of an operating system.

The kernel is the core of an operating system. Its structure strongly affects a distributed OS.

Monolithic kernel

The whole OS (process management, memory management, file system, device drivers, networking) runs as one large program in kernel mode. The parts call each other directly. It is fast because there is no message overhead, but it is large, hard to maintain, hard to extend, and an error in a driver can crash the whole system. Examples: traditional UNIX, Linux.

Microkernel

Only the essential mechanisms (low level address space management, thread scheduling, inter-process communication) remain in the kernel. All other services (file server, name server, network server, device drivers) run as ordinary user-level server processes, and clients call them through message passing.

 User space:  [App] [File server] [Net server] [Driver]
                  \      |            |         /
 Kernel:        +------ Microkernel (IPC, MM, sched) ------+
 Hardware

It is modular, small, easy to extend and port, more reliable and secure, and suits a distributed system, since services may run on any machine transparently. Its weakness is slower performance from message passing and context switches. Examples: Mach, Amoeba, Chorus, QNX.

PointMonolithic kernelMicrokernel
StructureAll OS services (file system, memory, scheduling, drivers, networking) in one large kernel in kernel spaceOnly minimum functions (IPC, basic scheduling, low level memory, interrupts) in kernel
Other servicesPart of kernelRun as user-level servers
CommunicationDirect procedure calls (fast)Message passing between servers (slower)
SizeLargeSmall
ReliabilityA bug in one module can crash the systemA server failure does not crash the kernel
Flexibility, extensibilityHard; needs recompilationEasy; add/replace servers
ExamplesUNIX, Linux, MS-DOSMach, Amoeba, Chorus, QNX

✓ Answer checked by Claude Opus 5.5 (high effort)

All Distributed System chapter 3 questions →