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:
- |
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]
|
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]
|
- |
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]
|
- |
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]
|
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]
|
- |
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.
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]
|
- |
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]
|
- |
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
|