CS262B Reading Summary

Application Performance and Flexibility on Exokernel Systems

M. Frans Kaashock, et al

Feng Zhou
1/22/2004

This paper presents the techniques used in constructing Exokernel systems, in particular the Xok/ExOS system running on x86 processors.  Exokernel systems are so-called "library OSes" because instead of implementing all OS functionalities in kernel (monolithic kernels), or partially in user-level servers (micro-kernels), Exokernels put large portion of OS functionalities into application libraries, in the hope that this increases both performance and flexibility.

Major strengths of the paper are:

  1. The idea of separation of protection from management is important.  I guess they mean both protection and multiplexing by "protection".  But the idea is that resource abstraction is done in kernel while high-level logic and management is done is the libOS.  This separation enables the implementation of different and complex management policies in the user level while maintaining the integrity of the system, which is one of the major challenges in the design of a library OS. 
  2. The UDF approach to disk block multiplexing is novel and general.  The idea of downloading code into the kernel also shows up in  packet filtering and file system implementation.  However UDF is slightly different in that it is deterministic (always terminates) and safe (does not cause memory errors).  Although it is somewhat limited in the functionality it can support, the paper reports that it is enough to implemented the disk block multiplexing stuff.
  3. The evaluation result is impressive.  The Cheetah web server that exploits the Xok kernel interface delivers 4x performance than a good HTTP server using the UNIX interface.  This highlights the benefits of exporting more kernel knowledge and operations to the application instead of using a fixed kernel interface.  The evaluation also shows that Exokernels can achieve similar global performance with convention OSes.

One major flaw:

As the authors noted, one of the major weaknesses of Exokernels is that the implementation of a general-purpose and well-performing Exokernel system is hard.  This is understandable because as functionality is partition between the kernel and the libOS, neither part has full knowledge of the system.  Distributed systems are also hard to design mainly because of the same problem.  Moreover, no interface between kernel and libOS can be versatile enough to support all kinds of applications.  This probably implies that Exokernels may be a better fit for OSes targeted at a narrower range of application, e.g. server OSes or embedded OSes.

Another obvious problem with Exokernels is evolving the system may be hard because the user-kernel interface is in general wider and sometimes implicit because of memory mapping of kernel data structures.