Exokernel is an
operating systemkernel developed by the MITParallel and Distributed Operating Systems group, and also a class of similar operating systems.
The idea behind exokernels is to force as few abstractions as possible on developers, enabling them to make as many decisions as possible about hardware abstractions. Exokernels are tiny, since functionality is limited to ensuring protection and
multiplexingof resources, which are vastly simpler than conventional microkernels' implementation of message passing and monolithic kernels' implementation of abstractions.
Applications may request specific memory addresses, disk blocks, etc. The kernel only ensures that the requested resource is free, and the application is allowed to access it. This low-level hardware access allows the programmer to implement custom abstractions, and omit unnecessary ones, most commonly to improve a program's performance. It also allows programmers to choose what level of abstraction they want, high, or low.
Exokernels can be seen as an application of the
end-to-end principleto operating systems, in that they do not force an application program to layer its abstractions on top of other abstractions that were designed with different requirements in mind. For example, in the MIT Exokernel project, the Cheetah web serverstores preformatted Internet Protocolpackets on the disk, the kernel provides safe access to the disk by preventing unauthorized reading and writing, but how the disk is abstracted is up to the application or the libraries the application uses.
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 conceptual 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 might opt to remove the kernel completely and program directly to the hardware, but then the entire machine would be dedicated to the application being written. A compromise is possible; let the kernel allocate the 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 link to an operating system library that implements familiar abstractions, or it can implement its own abstractions.
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 kernel represents the processor resources as a timeline from which programs can allocate intervals of time. A program can yield the rest of its time slice to another designated program. The kernel notifies programs of processor events, such as
interrupts, hardware exceptions, and the beginning or end of a time slice. If a program takes a long time to handle an event, the kernel will penalize it on subsequent time slice allocations; in extreme cases the kernel can abort the program.
The kernel allocates physical memory pages to programs and controls the
translation lookaside buffer. A program can share a page with another program by sending it a " capability" to access that page. The kernel ensures that programs access only pages for which they have a capability.
The kernel identifies disk blocks to the application program by their physical block address, allowing the application to optimize data placement. When the program initializes its use of the disk, it provides the kernel with a function that the kernel can use to determine which blocks the program controls. The kernel uses this callback to verify that when it allocates a new block, the program claims only the block that was allocated in addition to those it already controlled.
The kernel implements a programmable
packet filter, which executes programs in a byte codelanguage designed for easy security-checking by the kernel.
The available library operating systems for 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, [ [http://citeseer.ist.psu.edu/engler95exokernel.html Exokernel: An Operating System Architecture for Application-Level Resource Management - Engler, Kaashoek, Jr (ResearchIndex) ] ] but as of 2005exokernels are still a research effort and have not been used in any major commercial operating systems. A 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.
Kernel (computer science)
Single address space operating system(SASOS)
author = Engler, Dawson R.
title = The Exokernel Operating System Architecture
date = 1998
url = http://pdos.csail.mit.edu/exo/theses/engler/thesis.ps
format = PostScript
accessdate = 2006-09-22
author = Engler, Dawson R.; Kaashoek, M. Frans
title = Exterminate All Operating System Abstractions
date = 1996
url = http://pdos.csail.mit.edu/papers/hotos-jeremiad.ps
format = PostScript
accessdate = 2006-09-22
author = Engler, Dawson R.; Kaashoek, M. Frans; O’Toole Jr., James
title=Exokernel: An Operating System Architecture for Application-Level Resource Management
journal = Proceedings of the fifteenth ACM symposium on Operating systems principles
format = PDF
accessdate = 2006-09-22
url = http://delivery.acm.org/10.1145/230000/224076/p251-engler.pdf?key1=224076&key2=2519598511&coll=&dl=ACM&CFID=15151515&CFTOKEN=6184618
doi = 10.1145/230000/224076/p251-engler.pdf
* [http://www.cs.cornell.edu/home/ulfar/ukernel/ukernel.html#current-exo Microkernels. The extent to which simple, efficient operations are a good choice in a kernel interface design.] by Úlfar Erlingsson and Athanasios Kyparlis
* [http://osxt.com/index.php/IS/IS IntraServices]
Wikimedia Foundation. 2010.
Look at other dictionaries:
Exokernel — Ein Exokernel, auch als vertikal strukturiertes Betriebssystem bezeichnet, ist eine Art von Kernel und damit der zentrale Bestandteil eines Betriebssystems. Seine Hauptfunktion besteht darin, Ressourcenkonflikte zu verhindern und Zugriffsrechte… … Deutsch Wikipedia
Exokernel — El exokernel es un sistema creado con fines de investigación en el Instituto Tecnológico de Massachusetts (MIT) sobre OpenBSD. Su propósito es crear como una capa de software para otros sistemas virtuales. Consta de 3 capas, la capa del Exokernel … Enciclopedia Universal
exokernel — noun A very low level kernel that avoids abstractions … Wiktionary
XOK — eXOKernel (Computing » Software) … Abbreviations dictionary
Kernel (computing) — A kernel connects the application software to the hardware of a computer In computing, the kernel is the main component of most computer operating systems; it is a bridge between applications and the actual data processing done at the hardware… … Wikipedia
Kernel (computer science) — In computer science, the kernel is the central component of most computer operating systems (OS). Its responsibilities include managing the system s resources (the communication between hardware and software components). As a basic component of… … Wikipedia
Microkernel — Structure of monolithic and microkernel based operating systems, respectively In computer science, a microkernel is the near minimum amount of software that can provide the mechanisms needed to implement an operating system (OS). These mechanisms … Wikipedia
Monolithic kernel — Structure of monolithic kernel, microkernel and hybrid kernel based operating systems A monolithic kernel is an operating system architecture where the entire operating system is working in the kernel space and alone as supervisor mode. The… … Wikipedia
Comparison of operating system kernels — A kernel is the core component of every computer operating system. While kernels are highly technical in nature, and may be hidden from the user under many layers of software and applications, they do have distinguishing or characteristic… … Wikipedia
Hybrid kernel — is a kernel architecture based on combining aspects of microkernel and monolithic kernel architectures used in computer operating systems. The category is controversial due to the similarity to monolithic kernel; the term has been dismissed by… … Wikipedia