A microkernel API for fine-grained decomposition

Microkernel-based operating systems typically require special attention to issues that otherwise arise only in distributed systems. The resulting extra code degrades performance and increases development effort, severely limiting decomposition granularity. We present a new microkernel design that enables OS developers to decompose systems into very fine-grained servers. We avoid the typical obstacles by defining servers as lightweight, passive objects. We replace complex IPC mechanisms by a simple function-call approach, and our passive, module-like server model obviates the need to create threads in every server. Server code is compiled into small self-contained files, which can be loaded into the same address space (for speed) or different address spaces (for safety). For evaluation, we have developed a kernel according to our design, and a networking-capable multi-server system on top. Each driver is a separate server, and the networking stack is split into individual layers. Benchmarks on IA-32 hardware indicate promising results regarding server granularity and performance.

[1]  Adam Dunkels,et al.  Full TCP/IP for 8-bit architectures , 2003, MobiSys '03.

[2]  Abraham Silberschatz,et al.  Pebble: A Component-based Operating System for Embedded Applications , 1999, USENIX Workshop on Embedded Systems.

[3]  Volkmar Uhlig,et al.  Component Interfaces in a Microkernel-based System , 2000 .

[4]  J. Liedtke On -Kernel Construction , 1995 .

[5]  Trent Jaeger,et al.  The SawMill multiserver approach , 2000, EW 9.

[6]  James R. Larus,et al.  Deconstructing process isolation , 2006, MSPC '06.

[7]  Dilma Da Silva,et al.  K42: building a complete operating system , 2006, EuroSys.

[8]  Jochen Liedtke,et al.  Improving IPC by kernel design , 1994, SOSP '93.

[9]  Gernot Heiser Secure Embedded Systems Need Microkernels , 2005, login Usenix Mag..

[10]  Jonathan Appavoo,et al.  Clustered Objects , 2005 .

[11]  Brian N. Bershad,et al.  Extensibility safety and performance in the SPIN operating system , 1995, SOSP.

[12]  Robert Grimm,et al.  Application performance and flexibility on exokernel systems , 1997, SOSP.

[13]  David Jefferson,et al.  Protection in the Hydra Operating System , 1975, SOSP.

[14]  Mark S. Miller,et al.  Capability Myths Demolished , 2003 .

[15]  Neal H. Walfield,et al.  A critique of the GNU hurd multi-server operating system , 2007, OPSR.

[16]  Jay Lepreau,et al.  The Flux OSKit: a substrate for kernel and language research , 1997, SOSP.

[17]  William J. Bolosky,et al.  Mach: A New Kernel Foundation for UNIX Development , 1986, USENIX Summer.

[18]  Dawson R. Engler,et al.  Exokernel: an operating system architecture for application-level resource management , 1995, SOSP.

[19]  Jochen Liedtke,et al.  The performance of μ-kernel-based systems , 1997, SOSP.

[20]  Trent Jaeger,et al.  The SawMill framework for virtual memory diversity , 2001, Proceedings 6th Australasian Computer Systems Architecture Conference. ACSAC 2001.

[21]  Andrew Warfield,et al.  Are Virtual Machine Monitors Microkernels Done Right? , 2005, HotOS.

[22]  Jochen Liedtke,et al.  On micro-kernel construction , 1995, SOSP.

[23]  Robin Fairbairns,et al.  The Design and Implementation of an Operating System to Support Distributed Multimedia Applications , 1996, IEEE J. Sel. Areas Commun..

[24]  Jay Lepreau,et al.  Evolving Mach 3.0 to A Migrating Thread Model , 1994, USENIX Winter.

[25]  Freeman L. Rawson Experience with the development of a microkernel-based, multiserver operating system , 1997, Proceedings. The Sixth Workshop on Hot Topics in Operating Systems (Cat. No.97TB100133).

[26]  Herbert Bos,et al.  Can we make operating systems reliable and secure? , 2006, Computer.

[27]  Julia L. Lawall,et al.  Proceedings of the 2002 Usenix Annual Technical Conference Think: a Software Framework for Component-based Operating System Kernels , 2022 .