by Vinod Yegneswaran

Philosophy of Exokernal and the Nucleus

The Nucleus was aimed at creating a simple, flexibile multiprogramming system
with basic support for creation, control, inter communication and removal of
processes. It was a minimal system, with emphasis on structure acheived
mainly through a specialized and extendible hierarchy of abstractions. Its
beauty mainly lies in its uniformity and orthogonality, everything's a
processa and everything's synchronous. The nucleus realized the needs for
application to provide for specific customizations, but this was a acheived
through a series of abstractions provided by layers of micro kernels and
hiearachy of processes. But performance is not the main concern.

Exokernel on the other hand strives to improve performance by providing a low
level interface that supports application level management of physical
resources by tearing down all abstractions. Like the Nucleus, implements
protection and mutual exclusion of resources. In fact that might be an
understatement. Key idea of Exokernal, is to build efficient lightweight
kernels by seperating protection from managment, in some ways protection is
the only task of the kernel. Both exokernel and the nucleus understand the
need for applications to provide for their own resource mgmt. While nucleus
uses its heirarchy of processes, exokernel believes that high level
abstractions by definition are inflexible, inefficient and restrictive as they
hide info from applications making it impossible for them to implement
resource management. Exokernels support application resource mgmt by
providing for secure low level primitives that export hardware and allow them
to be accessed as efficiently as possible.