John-Paul Fryckman (fryckman@SDSC.EDU)
Tue, 6 Jun 2000 08:51:28 -0700 (PDT)


A full blown operating system has to balance generalization
with specification and performance. One typical sees an OS
implementing some sort of policy that might or might not
help particular applications. Also, the OS has overhead.
The goal with Exokernel is to provide a minimal layer between
the hardware and the libraries/applications. Here the libraries
provide the basic system tasks of VM, IPC, etc with the
understanding that they can provide better management and
control to individual processes. The libraries are based on
a few simple primitives that the exokernel provides.
Since untrusted libraries are being binded to the kernel,
the kernel provides secure bindings and an abort protocol
to eject bad libraries. Also, it tells the library when
resources are being revoked. Yet another feature is that
a library can download code into the kernel for fast handling
of exceptions and even handling, e.g., packet checksumming.
This paper quickly covers a new and emerging area of OS,
its adequately describes the exokernel and the library.
They implemented the exokernel and found substantial speedups.


SPIN nearly has the same goal as the Exokernel. The application
is allowed to "extend" and modify the runtime envorinment. However
it uses a language to provide a level of security in interfacing
with the kernel. SPIN uses the language to link the extensions
directly into the kernel, enforced modularity, protection
boundaries, dynamic call binding (a net event can be directly
linked with a proper module). Capabilities are used to grant
access into the "kernel" and is implemented in the language.
(btw, the underlying language is Modula-3) They claim that
it provides substantial performance improvements from VM calls
to network event handling.