Traditionally, kernel designers have sought to make individual hardware resources invisible to application programs by requiring the programs to interact with the hardware via some abstraction model. These models include file systems for disk storage, virtual address spaces for memory, schedulers for task management, and sockets for network communication. These abstractions of the hardware make it easier to write programs in general, but limit performance and stifle experimentation in new abstractions. A security-oriented application might need a file system that does not leave old data on the disk, while a reliability-oriented application might need a file system that keeps such data for failure recovery.
One option is to remove the kernel completely and program directly to the hardware, but then the entire machine would be dedicated to the application being written (and, conversely, the entire application codebase would be dedicated to that machine). The exokernel concept is a compromise: let the kernel allocate the basic physical resources of the machine (e.g. disk blocks, memory pages, and processor time) to multiple application programs, and let each program decide what to do with these resources. The program can then link to a support library that implements the abstractions it needs (or it can implement its own).
MIT developed two exokernel-based operating systems, using two kernels: Aegis, a proof of concept with limited support for storage, and XOK, which applied the exokernel concept more thoroughly.
An essential idea of the MIT exokernel system is that the operating system should act as an executive for small programs provided by the application software, which are constrained only by the requirement that the exokernel must be able to guarantee that they use the hardware safely.
The MIT exokernel manages hardware resources as follows:
The available library operating systems for the exokernel include the custom ExOS system and an emulator for BSD. In addition to these, the exokernel team created the Cheetah web server, which uses the kernel directly.
The exokernel concept has been around since at least 1994,3 but as of 2024[update] exokernels are still a research effort and have not been used in any major commercial operating systems.
Another concept operating exokernel system is Nemesis, written by University of Cambridge, University of Glasgow, Citrix Systems, and the Swedish Institute of Computer Science. MIT has also built several exokernel-based systems, including ExOS.
"MIT Exokernel Operating System". pdos.csail.mit.edu. Retrieved 2018-01-25. https://pdos.csail.mit.edu/archive/exo/ ↩
Engler, D. R.; Kaashoek, M. F.; O'Toole Jr., J.; Engler, D. R.; Kaashoek, M. F.; O'Toole Jr., J. (1995-12-03). "Exokernel: an operating system architecture for application-level resource management". ACM SIGOPS Operating Systems Review. 29 (5): 251, 251–266, 266. doi:10.1145/224056.224076. ISSN 0163-5980. S2CID 221932539. /wiki/Doi_(identifier) ↩
Engler, Kaashoek & O’Toole 1995. - ———; Kaashoek, M. Frans; O’Toole, James Jr (1995). "Exokernel" (PDF). Proceedings of the fifteenth ACM symposium on Operating systems principles - SOSP '95. Vol. 29. pp. 251–66. doi:10.1145/224056.224076. ISBN 978-0-89791-715-5. S2CID 221932539. Retrieved 2014-10-08. http://dl.acm.org/citation.cfm?id=224076 ↩