articles/microkernel.md: new article

This commit is contained in:
tocariimaa 2025-03-02 19:03:54 -03:00
parent 8bb6485b6c
commit 99e11d1a2c

24
articles/microkernel.md Normal file
View file

@ -0,0 +1,24 @@
# Microkernel
A microkernel is a kernel that has only the bare minimum functionality on kernel space, moving most of
it to the userland, as servers. Due to having less code running in privileged kernel mode (less attack surface),
microkernels can be more safer than monolithic ones.
A central concept of microkernels are the *servers*, which run in userland and implement
the functionality that monolithic kernels do in the kernel side (file systems, drivers, memory management).
Servers aren't different from regular user processes, only that have additional privileges (for accessing hardware directly, for example)
and communicate with the kernel and with other servers using [interprocess communication (IPC)](ipc.md) mechanisms.
Since servers run in userspace, a crash in a server don't necessarily bring the whole system down, but may affect
the consistency of the whole system, and reliability is not exactly inherent to the microkernel design.
One of the first microkernels, Mach, had a disappointing performance. This gave microkernels a bad reputation, which
however where demonstrated to not be an inherent design characteristic, but an implementation one. The L4 family
of microkernels demonstrated that IPC can be as fast as regular syscalls on a monolithic kernel.
Some notable microkernels are:
- Mach
- L4 and its descendants, such as seL4; known for it high-performance IPC, as fast as a monolithic kernel.
- Minix: [Unix](unix.md)-like kernel. Most notably, a heavily modified version of it runs in the Intel's backdoor known as
"Management Engine".
- QNX
- ...