< Exokernel

Exokernel: An Operating System Architecture for Application-Level Resource Management

Dawson R. Engler, M. Frans Kaashoek, and James O'Toole Jr .
Notes by Yin Zhang


Problem with Traditional OS

Too general! Limiting performance, flexibility and functionality by fixing the interface and implementation of OS abstractions like IPC, VM in the kernel.

Exokernel's Approach

Separate resource management from protection. Kernel is only responsible for protection. Traditional abstractions are implemented entirely at application level by library operating systems.

Challenge

To give library operating systems maximum freedom in managing hardware resources while protecting them from each other.

Major tasks

Major techniques

Perform authorization only at bind time. At access time, kernel only needs to implement access check without understanding them.

Implementation techniques

Prototype

Performance

Very impressive. Compared to state-of-the-art implementations from literature, at least five times faster on operations such as exce ption dispatching and IPC.

Discussion Points

  1. There is no clear evidence about how much each technique counts in the overall performance improvement. It seems that a large part of performance gain comes from compiling the code and downloading it into the kernel. If most performance comes from downloading code into the kernel, does it still make sense to try so hard to push kernel towards hardware? Maybe we only need a way of downloading low-level code into kernel?
  2. Migration. To make the library OS migratable, we need to build some hardware abstraction layer above exokernel. How large should such a layer be? If it's large, then why we need an exokernel? What's its impact on performance? This problem is not addressed in this paper.
  3. Pushing kernel towards hardware essentially increases the amount of work to be done by application developers. How much extra work need an application developer do now?
  4. Compatibility with existing O.S. Though Exokernel is highly extensible, how compatible is it with existing OS?