[back to L4 home page]
 

The L4 µ-Kernel Family

L4KA

Fiasco

L4/x86

L3, a predecessor of L4/x86


Site Navigation:

(* = offsite link)

Quick links:

L4 Developer's Bibliography

This bibliography is organized by subject. It is meant for developers looking for specific information on:

L4 kernel ABIs and APIs

-

Lava Nucleus (LN) Reference Manual  [x86]
(Jochen Liedtke; IBM Watson Technical Report, 1998)

The final version of the L4 ABI definition, version 2, for x86 CPUs. L4/x86, LN, and Fiasco all implement this interface. This is the most up-to-date ``stable'' L4 interface at this time.

[PostScript]

-

L4 eXperimental Reference Manual, Version X.2
(L4KA team, 2001)

An experimental L4 specification, version X.2. This specification signifies a big step towards the upcoming ``stable'' specification, version 4. Currently, there are no implementations of this specification; L4KA is busy building a reference implementation, the Pistachio kernel.

[PDF]

-

L4 Nucleus Version X Reference Manual  [x86]
(Jochen Liedtke; IBM Watson Technical Report, 1999)

The current version of the L4 ABI definition, ``experimental'' version X.0, for x86 CPUs. L4 version X and L4KA's Hazelnut kernel implements this ABI. ABI Version X.0 is a successor to the version 2 ABI, but is not intended for production environments. We see it as a step towards an upcoming ABI, version 4.

[PostScript]

-

L4 version X in a nutshell  [x86]
(Jochen Liedtke; IBM Watson Technical Report, 1999)

Introduces the new version X.0 L4 interface, and explains the differences to version 2.

[PostScript]

-

L4 Reference Manual -- Alpha 21x64  [Alpha]
(Daniel Potts, Simon Winwood, Gernot Heiser; UNSW Technical Report, 2001)

L4 ABI definition, version 2, for the Alpha 21x64 CPUs. L4/Alpha implements this interface.

[PostScript]

-

L4 Reference Manual -- MIPS R4x00  [MIPS]
(Kevin Elphinstone, Gernot Heiser, Jochen Liedtke; UNSW Technical Report, 1999)

L4 ABI definition, version 2, for the MIPS R4x00 CPUs. L4/MIPS implements this interface.

[PostScript]

-

Libl4sys Manual Pages  [x86]
(TU Dresden, 1996--today)

C API for L4 version 2, for the x86 CPUs.

[HTML]


Programming for L4

Programmer's guides

In general, we recommend using the L4 environment libraries when writing new L4 applications. However, we have not yet written a user's manual for these libraries. In the meantime, the following documents might be helpful:

-

L4 User Manual  [MIPS]
(Alan Au, Gernot Heiser; UNSW Technical Report, 1999)

A gentle introduction to system-level programming on L4. This manual is generally platform-independent, but examples use the C interface for L4/MIPS.

[PostScript]

-

Using the OSKit as a base for L4 applications   [x86]
(Michael Hohmuth; Proceedings of the First Workshop on Microkernel-based Systems, 1999)

This report introduces a port of the OSKit to L4, and proposes using the OSKit as a programming environment for L4.

[PostScript]

Programming tools

-

DICE Website  [x86]
(Ronald Aigner; TU Dresden, 2001)

DICE is the DROPS IDL compiler. It is a very flexible IDL compiler with a Flick compatibility mode. On this website you can find:

[HTML]

-

IDL4 Website  [x86]
(Uni Karlsruhe, 2001)

IDL4 is L4KA's experimental high-performance IDL compiler.

[HTML]

-

Flick Website
(Utah University)

In the past, we have been using Utah's Flick IDL compiler, which we customized with an L4 backend. This webpage describes Flick in general (without the L4 backend.)

[HTML]

System services

-

RMGR Manual Page  [x86]
(Michael Hohmuth, Frank Mehnert, Jean Wolter; TU Dresden, 1996--today)

RMGR, the L4 resource manager, is a system bootstrapper and manager of basic system resources such as IRQs, memory, and priorities.

[HTML]

-

Omega0 -- a portable interface to interrupt hardware for L4 systems   [x86]
(Jork Löser, Michael Hohmuth; Proceedings of the First Workshop on Microkernel-based Systems, 1999)

This report proposes to hide the specifics of interrupt acknowledgement behind a C API called Omega0. Omega0 implementations can use kernel support, use a user-level server, or be implemented solely in library space as necessary.

[PostScript]

-

The SawMill Framework for VM Diversity  [x86]
(Mohit Aron, Yoonho Park, Trent Jaeger, Jochen Liedtke, Kevin Elphinstone, Luke Deller; Proc. 6th Australasian Computer Architecture Conference, 2001)

This report explains the dataspace concept known from L3, and shows how to implement it using L4 primitives.

[PostScript]

L4 environment libraries and services

The L4 environment has not been released publicly yet (as of July 2001), but a release is planned for the near future. In the meantime, the following documentation might be useful for developers to acquaint themselves with L4, and as an example of using L4's low-level interfaces.

-

L4 Environment Library Reference Manual (incomplete)  [x86]
(Lars Reuther; TU Dresden, 2001)

The L4 Environment Library is a collection of functions and glue code to support applications which use the Common L4 Environment.

[HTML]

-

L4 Thread Reference Manual  [x86]
(Lars Reuther; TU Dresden, 2001)

This library provides an abstraction of the L4 system call interface and to eases the usage of threads, particularly by providing functionality to allocate and release the stacks of threads.

[HTML]

-

L4 Semaphore Reference Manual  [x86]
(Lars Reuther; TU Dresden, 2001)

This package provides a simple counting semaphore implementation for L4.

[HTML]

-

L4 Lock Reference Manual  [x86]
(Lars Reuther; TU Dresden, 2001)

A simple, semaphore-based lock implementation.

[HTML]

-

L4 Region Mapper Reference Manual  [x86]
(Lars Reuther; TU Dresden, 2001)

The region mapper is the part of the L4 environment which manages the virtual address space of a task. Each task has its own region mapper thread, which is automatically started by the setup code of a task. The region mapper allows the application to bind dataspaces to a region of the address space, and it provides the pager for all other threads of the task.

[HTML]

-

L4 Dataspace Manager Reference Manual   [x86]
(Lars Reuther; TU Dresden, 2000-2002)

This package consists of two parts, the generic definition of the dataspace manager interfaces and the implementation of DMphys, a dataspace manager which handles the phys. memory of a system.

[HTML]

-

Dynamic Loading of L4 Programs  [x86]
(Frank Mehnert; Proceedings of the Second Workshop on Microkernel-based Systems, 2001)

Design and implementation of the L4 loader that can be used to load and run native L4 tasks.

[PDF]

-

L4 Loader Reference Manual  [x86]
(Frank Mehnert; TU Dresden, 2001)

The loader can start and kill L4 tasks. L4 Tasks can depend on shared libraries which will be loaded on startup. Clients can start L4 tasks by using the IDL interface. This is demonstrated on simple L4Linux clients which allows to handle L4 tasks from L4Linux.

[HTML]


Applications of L4

-

The Performance of µ-Kernel-based Systems
(H. Härtig, M. Hohmuth, J. Liedtke, S. Schönberg, J. Wolter; Proceedings of 16th SOSP, 1997)

This paper describes L4Linux, a port of the Linux kernel to the L4 microkernel. It also dispels the myth that microkernels can excel only in microbenchmarks, but suck in application benchmarks.

[HTML]
[PostScript]
[Slides/PostScript]

-

Perseus: A Quick Open-Source Path to a Trustworthy Environment
(Birgit Pfitzmann, Chritian Stüble; Proceedings of the Second Workshop on Microkernel-based Systems, 2001)

The Perseus project aims at putting support servers for security-sensitive applications (such as a digital-signature service) in secure compartments running besides L4Linux, not on top of a traditional monolithic kernel such as Linux. The goal is to isolate the security infrastructure from faults and security breaches in the Linux subsystem.

[PDF]

Please find more documentation and publications about L4 applications, such as DROPS, SawMill, Mungi and so on, on their respective websites.


L4 kernel design

``Philosophical'' papers

The following papers argue what a microkernel should contain, why, and how to implement it.

-

Toward real µ-kernels
(J. Liedtke; appeared in CACM 39(9), 1996)

This article introduces key concepts that distinguish second-generation microkernels such as L4 from first-generation microkernels such as Mach.

[PDF]
[PostScript]

-

On Micro-Kernel Construction
(Jochen Liedtke; appeared at 15th SOSP, 1995)

[PostScript]

-

Improving IPC by Kernel Design
(Jochen Liedtke; appeared at 14th SOSP, 1993)

This and the previous paper detail design issues for developing a high-performance microkernel.

[PostScript]

-

Clans & Chiefs
(Jochen Liedtke; Architektur von Rechensystemen, 1991)

Introduces the Clans & Chiefs concept that is part of the L4 version 2 definition. This concept is likely to be replaced by a more flexible concept introduced in the next paper.

[PostScript]

-

Synchronous IPC over Transparent Monitors
(T. Jaeger, J.E. Tidswell, A. Gefflaut, Y. Park, J. Liedtke, K. Elphinstone; 9th SIGOPS European Workshop, 2000)

Introduces the Transparent Monitor concept, a more flexible successor to Clans & Chiefs.

[PDF]
[PostScript]

-

Resources and Priorities
(Kevin Elphinstone; Proceedings of the Second Workshop on Microkernel-based Systems, 2001)

Proposes kernel changes to prevent priority inversion and allow construction of non-trivial real-time applications.

[PS]

-

Preventing Denial-of-Service Attacks on a µ-Kernel for WebOSes
(J. Liedtke, N. Islam, and T. Jaeger; Proceedings of 6th Workshop on Hot Topics in Operating Systems (HotOS), 1997)

Discusses denial-of-service attacks against the microkernel interface, and proposes a kernel mechanism to allow safe user-level management of kernel memory.

[PDF]
[PostScript]

-

User-level management of L4 Kernel memory
(Andreas Haeberlen; Proceedings of the Second Workshop on Microkernel-based Systems, 2001)

Proposes a kernel mechanism to allow safe user-level management of kernel memory. This paper criticizes the corresponding approach of the previous paper.

[PS]

-

Interrupt Handling
(Uwe Dannowski, Espen Skoglund, Volkmar Uhlig; Proceedings of the Second Workshop on Microkernel-based Systems, 2001)

Proposes a kernel interface for hardware-interrupt acknowledgement.

[PS]

Implementation techniques

-

Lazy Process Switching  [x86]
(J. Liedtke, H. Wenske; Proceedings of 8th HotOS, 2001)

A technique to speed up intra--address-space thread switching by not going through the kernel.

[PDF]

-

Calypso: A portable translation layer
(Cristan Szmajda; Proceedings of the Second Workshop on Microkernel-based Systems, 2001)

Calypso is an implementation of an L4-kernel VM subsystem and ``mapping database'' with a number of desirable features: fast software-page-table lookup, arbitrary page-size mixtures, shared page-table subtrees, domain-based MMU protection, multi-CPU concurrency.

[PS]

-

Pragmatic nonblocking synchronization for real-time systems  [x86]
(Michael Hohmuth, Hermann Härtig; Proceedings of USENIX '01)

This paper describes the technique used in the design of Fiasco, an L4-compatible real-time microkernel, to make Fiasco a preemptible kernel with low interrupt latency.

[PDF]
[HTML]

-

Helping in a multiprocessor environment
(Michael Hohmuth, Michael Peter; Proceedings of the Second Workshop on Microkernel-based Systems, 2001)

This report extends previous paper's techniques for multiprocessor architectures.

[PDF]

-

Fast Address-Space Switching on the StrongARM SA-1100 Processor  [StrongARM]
(A. Wiggins, G. Heiser; UNSW technical report, 1999)

This report proposes a design technique for improved address-space--switching times on the StrongARM platform.

[PostScript]

-

Improved Address Space Switching on Pentium Processors by Transparently Multiplexing User Address Spaces  [x86]
(Jochen Liedtke; GMD technical report, 1995)

This report proposes a design technique for improved address-space--switching times on the x86 platform.

[PDF]
[PostScript]

-

The L4 Microkernel on Alpha - Design and Implementation  [Alpha]
(Sebastian Schönberg; TUD.Inf master's thesis, 1996)

[PostScript]

-

The Design and Implementation of the L4 Microkernel on the StrongARM SA-1100,  [StrongARM]
(Adam Wiggins; UNSW undergraduate thesis, 1999)

[PostScript]

Kernel documentation

-

Inside L4/MIPS -- Anatomy of a High-Performance Microkernel  [MIPS]
(Gernot Heiser; UNSW Technical Report, 2000--2001)

This document is an attempt to document the internal structure of L4 and its operations. It is based on the L4 implementation for the MIPS R4x00 (L4/MIPS). The document is meant as an aid in teaching operating systems internals, and as a guide for kernel implementors. While the actual code discussed is very specific to the MIPS processor, much of the overall structure and logic of L4 is quite uniform across platforms.

[PDF]
[Website]

-

Fiasco source-code documentation  [x86]
(Michael Hohmuth; TU Dresden, 2001)

This documentation describes low-level OO design and implementation of Fiasco.

[HTML]

Please find more documentation and publications about existing L4 implementations on their respective websites


Please see also:


Last modified: Tue Sep 6 11:45:11 2005


Operating Systems Group