Microkernel Notes
Minimal kernel ; Does only scheduling, memory management and IPC.
Language
Written in Rust, C++, Zig, … ?
C++
- C++17 (20?)
- No exceptions or RTTI
Rust
- Memory safety
- See Redox
- Nice error handling facilities
- See zen
Features
Linux (not POSIX) server
- provides Linux syscalls for other processes
Linux driver server
- can load and run Linux kernel modules using some sort of shim
- since all the Linux drivers will simply be userspace programs, we can use GPL drivers without having to release the kernel as GPL (?)
Microkernels
- Minix
- C, NetBSD userspace
- L4
- Redox
- Rust, userspace C library written in Rust
- Fuchsia (Zircon), Google
- C++17, based on littlekernel
- GNU Hurd
- C, based on old Mach kernel, interesting concepts (translators, etc), 30 years in the making still not finished…
- QNX
- HelenOS
- Barrelfish
Books & Papers
- Operating Systems Design and Implementation by Andrew S Tanenbaum , Albert S Woodhull
- The Increasing Irrelevance of IPC performance in Microkernel-based Operating Systems by Brian N. Bershad
- The Persistent Relevance of IPC performance in Microkernel-based Operating Systems by Wilson C. Hsieh, M. Frans Kaashoek, and William E. Weihl
- µ-Kernels Must And Can Be Small by Jochen Liedtke
- Hardware/Software Co-Design for Efficient Microkernel Execution, Martin Děcký, Fosdem 2019