The kernel is the heart of any operating system.
In some systems, the kernel comprises so many
functions that for all intents and purposes it is
the entire operating system!
But our microkernel is truly a kernel. First of all, like the
kernel of a realtime executive, it's very small.
Secondly, it's dedicated to only a few fundamental services:
- thread services via POSIX thread-creation primitives
- signal services via POSIX signal primitives
- message-passing services—the microkernel handles
the routing of all messages between all threads throughout the entire system.
- synchronization services via POSIX thread-synchronization primitives.
- scheduling services—the microkernel schedules
threads for execution using the various POSIX realtime scheduling policies.
- timer services—the microkernel provides the rich set of POSIX timer services.
- process management services—the
microkernel and the process manager together form a unit (called
procnto).
The process manager portion is responsible for managing processes, memory, and the pathname space.
Unlike threads, the microkernel itself is never scheduled for
execution. The processor executes code in the microkernel only as
the result of an explicit kernel call, an exception, or in
response to a hardware interrupt.