Architecture Overview¶
The MINIX 3 architecture can be understood as a very slim kernel plus a set of user-space system services with clear boundaries. Looking at the layers first, and only then at how they communicate, is more efficient than diving straight into concrete source code.
Layering¶
Microkernel: provides the most basic scheduling, inter-process communication, interrupts, and low-level mechanisms such as IPC, the scheduler, and low-level hardware abstraction.
System servers: take on many operating-system functions that traditionally live in the kernel, such as PM, VM, VFS, and RS.
Device drivers: interact directly with hardware devices but stay out of kernel mode whenever possible, such as disk, terminal, and network drivers.
User programs: use operating-system capabilities through system calls and service interfaces, such as the shell, toolchains, and applications.
Reading suggestions¶
If you are new to microkernels, understand why the system is split into layers first, then how those layers cooperate.
If you care more about engineering questions, focus on message passing, fault isolation, and service recovery.
If you care more about implementation details, the next page on microkernel and message passing is the right place to go.