Reading
-
“The nucleus of a multiprogramming system”, Per Brinch Hansen (Communications of the ACM, April 1970)
-
“Toward real microkernels”, Jochen Liedtke (Communications of the ACM, September 1996)
-
“The multikernel: A new OS architecture for scalable multicore systems”, Andrew Baumann, Paul Barham, Pierre-Evariste Dagand, Tim Harris, Rebecca Isaacs, Simon Peter, Timothy Roscoe, Adrian Schüpbach, Akhilesh Singhania (SOSP 2009) — also known as “the Barrelfish paper”
The first paper is generally acknowledged as the progenitor of the microkernel concept, but it doesn’t use that term. You’ll get a better grasp on what “microkernel” means in modern usage after reading paper #2.
Reading questions
- Some of the desiderata for paper #1’s “nucleus” apply to any kernel. What are the most important desiderata or mechanisms that make the “nucleus” specifically a microkernel in retrospect?
- The multikernel architecture describes properties of both kernels and user-level services (primarily the per-core “monitor”). What distinguishes a multikernel’s CPU driver (its kernel-mode component) from other microkernels?
Further reading
-
Hall of Fame papers
Jochen Liedtke, a German researcher, reinvigorated microkernels in the 1990s through hard-core performance hacking. We’re reading his relatively informal paper for its historical view and open discussion. His research paper “On µ-kernel construction” (Liedtke J (1995)) won a SIGOPS Hall of Fame award. Citation:
This paper presented the core design ideas behind the L4 microkernel, especially the minimality principle, which states that functionality must only be implemented inside the kernel if moving it outside would prevent the implementation of required system functionality. This principle was at the heart of L4’s design, and supported a ruthless performance focus, which allowed L4 to outperform other microkernels by an order of magnitude. The core ideas of this paper led to a family of L4 microkernels which were commercially deployed on a large scale, and eventually enabled unprecedented assurance through formal verification.
The Barrelfish paper is also in the Hall of Fame:
This paper synthesized a number of ideas from microkernels to build a highly scalable multiprocessor operating system. Barrelfish motivated the need for designing a single machine operating system as a distributed system, with shared memory message queues for communication between applications, per-core kernels, and scalable, user-level services.
-
L3 IPC: Perhaps the most fun microkernel paper in the L3 series is Liedtke’s paper on L3 IPC, “Improving IPC by kernel design” (Liedtke J (1993)). It features some epic virtual memory tricks and hacking.