articles/microkernel.md: new article
This commit is contained in:
parent
8bb6485b6c
commit
99e11d1a2c
1 changed files with 24 additions and 0 deletions
24
articles/microkernel.md
Normal file
24
articles/microkernel.md
Normal 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
|
||||||
|
- ...
|
Loading…
Add table
Reference in a new issue