From: Jeff Duzak (jduzak_at_exchange.microsoft.com)
Date: Tue Jan 20 2004 - 15:20:14 PST
This paper describes the concept of an exokernel architecture, and
describes an implementation of an exokernel system (Xok) which runs on
x86 machines. The difficulties of implementing such an architecture are
discussed, and performance results for the system are reported.
The basic idea of an exokernel system is to incorporate only the most
basic and absolutely necessary OS functions into a kernel, and to allow
applications to interface directly with the kernel. In particular, the
responsibility of allocating system resources is moved from kernel space
to user space. Despite this, protection of resources is maintained
through protection mechanisms implemented within the kernel. By
allowing an application to customize its management of resources, very
large performance gains can be made for certain specialized
applications. Further, for applications which do not need customized
resource management, shared libraries (or libOSes) exist to implement
standard resource allocation.
The idea of an exokernel system seems straightforward, but to actually
implement one is difficult. In particular, the paper describes how
difficult it was to implement a disk storage system (XN) that would
provide protection for disk blocks yet be flexible enough to allow
various allocation schemes to be implemented in user applications. The
solution described was to allow a user application to download into the
kernel functions to be used to determine ownership and access rights to
disk blocks. The safety of these functions is ensured through
restrictions on the language in which they are written. Beyond that,
the XN system had to ensure the integrity of disk blocks in the event of
a crash, as well as provide for efficient sharing of disk blocks between
processes, all without requiring a specific file system.
The paper then discusses the performance of the Xok system. The results
show that unmodified Unix applications perform comparably or slightly
better on the Xok system compared with the OpenBSD and FreeBSD systems.
For applications that customize their resource management, large
performance gains were made. One example is a file copying program
(XCP) which reads data from disk into the buffer cache, and then writes
it back directly from the buffer cache, thus avoiding ever copying the
data into main memory. Because of this and other optimizations, XCP is
three times as fast as the standard file copying program CP.
This archive was generated by hypermail 2.1.6 : Tue Jan 20 2004 - 15:20:11 PST