High-performance microkernels and virtualisation on ARM and segmented architectures

This paper describes the techniques used to achieve high context-switching performance on ARM processors for the L4 microkernel and a para-virtualised Linux running on top. We examine how the previously-published techniques can be used in L4 with minimal changes to the kernel API. We also propose future API changes which make it easier to maximise memory-management performance, not only on ARM but also on architectures supporting a segmented memory model.

[1]  Andreas Haeberlen,et al.  Stub-code performance is becoming important , 2000, WIESS'00.

[2]  Ralf Huuck,et al.  Goanna - A Static Model Checker , 2006, FMICS/PDMC.

[3]  J. Liedtke /spl mu/-kernels must and can be small , 1996, Proceedings of the Fifth International Workshop on Object-Orientation in Operation Systems.

[4]  Kevin Elphinstone,et al.  A memory allocation model for an embedded microkernel , 2007 .

[5]  David Mosberger,et al.  IA-64 Linux Kernel: Design and Implementation , 2002 .

[6]  John Rushby,et al.  Noninterference, Transitivity, and Channel-Control Security Policies 1 , 2005 .

[7]  Hoyt Lougee,et al.  SOFTWARE CONSIDERATIONS IN AIRBORNE SYSTEMS AND EQUIPMENT CERTIFICATION , 2001 .

[8]  Gerwin Klein,et al.  Running the manual: an approach to high-assurance microkernel development , 2006, Haskell '06.

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

[10]  Rebekah Leslie,et al.  Dynamic Intransitive Noninterference , 2006 .

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

[12]  Gernot Heiser,et al.  Itanium Page Tables and TLB , 2003 .

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

[14]  Gerald J. Popek,et al.  Formal requirements for virtualizable third generation architectures , 1974, SOSP '73.

[15]  Jochen Liedtke,et al.  The mungi single‐address‐space operating system , 1998, Softw. Pract. Exp..

[16]  Eric Eide,et al.  Flick: a flexible, optimizing IDL compiler , 1997, PLDI '97.

[17]  Gernot Heiser,et al.  Fast address-space switching on the StrongARM SA-1100 processor , 2000, Proceedings 5th Australasian Computer Architecture Conference. ACAC 2000 (Cat. No.PR00512).

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

[19]  J. Davenport Editor , 1960 .

[20]  Stefan M. Petters,et al.  Experimental evaluation of code properties for WCET analysis , 2003, RTSS 2003. 24th IEEE Real-Time Systems Symposium, 2003.

[21]  Gernot Heiser,et al.  Implementation of Fast Address-Space Switching and TLB Sharing on the StrongARM Processor , 2003, Asia-Pacific Computer Systems Architecture Conference.

[22]  James R. Larus,et al.  Cache-conscious structure definition , 1999, PLDI '99.

[23]  Hermann Härtig,et al.  Cost and benefit of separate address spaces in real-time operating systems , 2002, 23rd IEEE Real-Time Systems Symposium, 2002. RTSS 2002..

[24]  Kevin Elphinstone,et al.  Kernel data – first class citizens of the system , 2006 .

[25]  Joel Spolsky,et al.  The Law of Leaky Abstractions , 2004 .

[26]  Hermann Härtig,et al.  The Nizza secure-system architecture , 2005, 2005 International Conference on Collaborative Computing: Networking, Applications and Worksharing.

[27]  Abi Nourai A physically-addressed L4 kernel , 2005 .

[28]  Ken Kennedy,et al.  Automatic data layout for distributed-memory machines , 1998, TOPL.

[29]  Gernot Heiser,et al.  OS Verification - Now! , 2005, HotOS.

[30]  Isabelle Puaut,et al.  Worst-case execution time analysis of the RTEMS real-time operating system , 2001, Proceedings 13th Euromicro Conference on Real-Time Systems.

[31]  Mike Hibler,et al.  Microkernels meet recursive virtual machines , 1996, OSDI '96.

[32]  Jeff Bonwick,et al.  The Slab Allocator: An Object-Caching Kernel Memory Allocator , 1994, USENIX Summer.

[33]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[34]  Andreas Haeberlen,et al.  User-Level Management of Kernel Memory , 2003, Asia-Pacific Computer Systems Architecture Conference.

[35]  Carl A. Waldspurger,et al.  Memory resource management in VMware ESX server , 2002, OSDI '02.

[36]  Dirk Beyer,et al.  Impact of Inheritance on Metrics for Size, Coupling, and Cohesion in Object-Oriented Systems , 2000, IWSM.

[37]  Michael Hohmuth The Fiasco Kernel: Requirements Definition , 1998 .

[38]  T N H E R D E R, H E R B E R T B O S, B E N G R A S, P,et al.  modular system programming in MINIX 3 , .

[39]  Stefan M. Petters,et al.  Static analysis support for measurement-based WCET analysis , 2006 .

[40]  Gernot Heiser,et al.  Wombat: A portable user-mode Linux for embedded systems , 2005 .

[41]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[42]  Sergio Ruocco Real-Time Programming and L4 Microkernels , 2006 .

[43]  Michael Franz,et al.  The Case for Dynamic Optimization - Improving Memory-Hierarchy Performance by Continuously Adapting , 1999 .

[44]  David C. Snowdon,et al.  Power measurement as the basis for power management , 2005 .

[45]  Jochen Liedtke,et al.  Toward real microkernels , 1996, CACM.

[46]  Hermann Härtig,et al.  Reducing TCB size by using untrusted components: small kernels versus virtual-machine monitors , 2004, EW 11.

[47]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

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

[49]  François Bodin,et al.  Improving cache behavior of dynamically allocated data structures , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).

[50]  Dan Hildebrand,et al.  An Architectural Overview of QNX , 1992, USENIX Workshop on Microkernels and Other Kernel Architectures.

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

[52]  Gernot Heiser,et al.  Pre-virtualization: Slashing the cost of virtualization , 2005 .

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

[54]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[55]  Joshua S. Auerbach,et al.  Mockingbird: flexible stub compilation from pairs of declarations , 1999, Proceedings. 19th IEEE International Conference on Distributed Computing Systems (Cat. No.99CB37003).

[56]  Dror Rawitz,et al.  The hardness of cache conscious data placement , 2002, POPL '02.

[57]  Cathy May,et al.  The PowerPC Architecture: A Specification for a New Family of RISC Processors , 1994 .

[58]  Guillem Bernat,et al.  WCET analysis of probabilistic hard real-time systems , 2002, 23rd IEEE Real-Time Systems Symposium, 2002. RTSS 2002..

[59]  Guang R. Gao,et al.  Identifying loops using DJ graphs , 1996, TOPL.

[60]  Jonathan M. Smith,et al.  EROS: a fast capability system , 1999, SOSP.

[61]  Marianne Shaw,et al.  Scale and performance in the Denali isolation kernel , 2002, OSDI '02.

[62]  Khalid Omar Thabit,et al.  Cache management by the compiler , 1982 .

[63]  Mike Hibler,et al.  Using annotated interface definitions to optimize RPC , 1995, SOSP.

[64]  Jochen Liedtke,et al.  Clans & Chiefs , 1992, ARCS.

[65]  Carl Staelin,et al.  lmbench: Portable Tools for Performance Analysis , 1996, USENIX Annual Technical Conference.

[66]  Robert P. Goldberg,et al.  Survey of virtual machine research , 1974, Computer.

[67]  Ole Agesen,et al.  A comparison of software and hardware techniques for x86 virtualization , 2006, ASPLOS XII.

[68]  Kris De Volder Aspect-Oriented Logic Meta Programming , 1998, ECOOP Workshops.

[69]  Orran Krieger,et al.  Virtualization for high-performance computing , 2006, OPSR.

[70]  Trent Jaeger,et al.  Preventing Denial-of-Service Attalcks on a, p-Kernel for WebOSes , 1997 .

[71]  Kevin Jeffay,et al.  Slotted priorities: supporting real-time computing within general-purpose operating systems , 1997 .

[72]  Umesh Bellur,et al.  Flattening C++ Classes , 1992 .

[73]  Joshua S. Auerbach,et al.  The Concert Signature Representation: IDL as Intermediate Language , 1994, Workshop on Interface Definition Languages.

[74]  John Murray Inside Microsoft Windows CE , 1998 .

[75]  Gilad Bracha,et al.  Modularity meets inheritance , 1992, Proceedings of the 1992 International Conference on Computer Languages.

[76]  Bjarne Stroustrup,et al.  Multiple Inheritance for C++ , 1989, Comput. Syst..

[77]  Beng-Hong Lim,et al.  Virtualizing I/O Devices on VMware Workstation's Hosted Virtual Machine Monitor , 2001, USENIX Annual Technical Conference, General Track.

[78]  Alexander Warg,et al.  Mikro-SINA — Hands-on Experiences with the Nizza Security Architecture , 2005 .

[79]  William L. Harrison,et al.  Under Consideration for Publication in J. Functional Programming the Logic of Demand in Haskell , 2022 .

[80]  Uwe. Dannowski Managing Code Complexity in a Portable Microkernel , 2004 .

[81]  Sandeep K. Gupta,et al.  AVM: application-level virtual memory , 1995, Proceedings 5th Workshop on Hot Topics in Operating Systems (HotOS-V).