From: Richard Jackson (richja_at_expedia.com)
Date: Wed Jan 21 2004 - 13:31:42 PST
This 1997 paper by Kaashoek, et al. at MIT discusses an implementation
of an exokernel operating system, which was proposed in previous papers.
This paper is very detailed, and assumes that the reader has a strong
knowledge about how traditional operating system kernels are
implemented. Many comparisons and references are made to these
traditional systems throughout the paper.
An exokernel operating system is a system that separates resource
protection from resource management. This is somewhat related to the
mechanism/policy separation that existed in HYDRA, but this concept is
more fundamental to the overall operation of the kernel. The main
purpose of a exokernel is to give untrusted applications the optional
ability to manage resources at the lowest-possible level, with the goal
of drastically improving performance of the application. The authors
also show that an exokernel design can improve performance of untuned
applications as well. This free benefit certainly makes an exokernel
system worth considering.
This paper is extensive, and covers many different aspects of exokernel
design and implementation. The paper first introduces Xok, which is the
exokernel itself, and ExOS, which is the operating system that runs on
top of Xok. ExOS is a example of a libOS, which is a general
abstraction of an OS that can run on top of Xok. Other libOSs could be
created, based on the needs of the application. The main purpose of the
libOS is to abstract the underlying kernel and simulate a given OS, for
example, UNIX. Using this model, unmodified applications can run on Xok
via ExOS. Alternately, a tuned application can bypass the libOS, making
direct calls to Xok, with the goal of improving performance. Through
this model, Xok can support both legacy and specialized applications.
Also worth noting is that any ExOS functionality can be replaced by an
application's code, enabling a very high level of control.
Another key concept is that of a libFS, which is a file system
abstraction that is built as a component of each libOS. The paper
described XN, which is a custom libFS that is used by the example
system. The paper went into great detail about the various design
challenges surrounding XN, and how the exokernel successfully
multiplexes the physical storage among one or more libFSs that may
exist. A second libFS called C-FFS(Co-locating Fast File System) is
also discussed, as an alternative to XN.
Next, some applications are described, which exploit the power of the
exokernel system. The main example is a web server called Cheetah,
which uses domain-specific-knowledge to influence the design. The
result is a server that outperforms any of the other web servers
mentioned. The authors claim that the optimizations needed involved
little coding complexity.
The remainder of the paper is focused on performance. Various studies
were done to measure global performance of the system, in light of some
applications using exokernel-specific implementations. The result was
that the system still performed well. The authors gave a few reasons
for this, but the general feeling is that an exokernel architecture
empowers the applications to make better decisions about resource use,
which makes the overall system perform better.
The paper concludes with a list of advantages, weaknesses and lessons
learned. One of the key weakness is that kernel interface design is
very difficult and the authors suggested that an iterative design
approach was required. One of the key strengths, aside from higher
levels of resource control, is that kernel data is directly exposed to
apparitions, making it possible to discover data that was previously
unavailable.
This archive was generated by hypermail 2.1.6 : Wed Jan 21 2004 - 13:32:10 PST