Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Exokernel
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Operating system kernel developed by the MIT Parallel and Distributed Operating Systems group}} {{More citations needed|date=September 2016}} [[File:exokernel revised(english).png|frame|right|Graphic overview of Exokernel. Exokernels are much smaller than a normal kernel ([[monolithic kernel]]). They give more direct access to the hardware, thus removing most abstractions]] '''Exokernel''' is an [[operating system]] [[kernel (operating system)|kernel]] developed by the [[MIT]] Parallel and Distributed Operating Systems group,<ref>{{Cite web|url=https://pdos.csail.mit.edu/archive/exo/|title=MIT Exokernel Operating System|website=pdos.csail.mit.edu|access-date=2018-01-25}}</ref> and also a class of similar operating systems. Operating systems generally present hardware resources to applications through high-level [[abstraction (computer science)|abstractions]] such as (virtual) file systems. The idea behind exokernels is to force as few abstractions as possible on application developers, enabling them to make as many decisions as possible about hardware abstractions.<ref>{{Cite journal|last1=Engler|first1=D. R.|last2=Kaashoek|first2=M. F.|last3=O'Toole Jr.|first3=J.|last4=Engler|first4=D. R.|last5=Kaashoek|first5=M. F.|last6=O'Toole Jr.|first6=J.|date=1995-12-03|title=Exokernel: an operating system architecture for application-level resource management|journal=ACM SIGOPS Operating Systems Review|volume=29|issue=5|pages=251, 251–266, 266|doi=10.1145/224056.224076|s2cid=221932539|issn=0163-5980}}</ref> Exokernels are tiny, since functionality is limited to ensuring protection and [[multiplexing]] of resources, which is considerably simpler than conventional [[microkernel]]s' implementation of message passing and [[monolithic kernel]]s' implementation of high-level abstractions. Implemented abstractions are called library operating systems; they 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 principle]] to 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 server]] stores preformatted [[Internet Protocol]] packets 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. ==Motivation== 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 space]]s for memory, [[scheduling (computing)|schedulers]] for task management, and [[Berkeley sockets|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. [[computer disk|disk]] blocks, [[memory page]]s, 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 exokernels== 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. ===Design=== The MIT exokernel manages hardware resources as follows: ; Processor : 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 [[interrupt]]s, [[exception handling|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. ; Memory : 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-based security|capability]]'' to access that page. The kernel ensures that programs access only pages for which they have a capability. ; Disk storage : 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. ; Networking : The kernel implements a programmable [[packet filter]], which executes programs in a [[bytecode]] language designed for easy security-checking by the kernel. ===Applications=== The available library operating systems for the exokernel include the custom ExOS system and an emulator for [[Berkeley Software Distribution|BSD]]. In addition to these, the exokernel team created the Cheetah [[web server]], which uses the kernel directly. ==History== [[File:The MINIX 3 Microkernel Architecture.png|thumb|400px|The Architecture of MINIX 3]] The exokernel concept has been around since at least 1994,{{Sfn | Engler | Kaashoek | O’Toole | 1995}} but {{As of |2024|lc=on}} exokernels are still a research effort and have not been used in any major commercial operating systems. Another concept operating exokernel system is [[Nemesis (operating system)|Nemesis]], written by [[University of Cambridge]], [[University of Glasgow]], [[Citrix Systems]], and the [[Swedish Institute of Computer Science]]. [[Massachusetts Institute of Technology|MIT]] has also built several exokernel-based systems, including ExOS. ==See also== *[[Hybrid kernel]] *[[Hypervisor]] *[[Kernel (operating system)]] *[[Microkernel]] *[[Monolithic kernel]] *[[Nanokernel]] *[[Paravirtualization]] *[[Rump kernel]] *[[Single address space operating system]] (SASOS) *[[Unikernel]] *[[BareMetal]] ==References== {{Reflist |64em}} ==Bibliography== {{Refbegin}} * {{cite journal | last = Engler | first = Dawson R | title = The Exokernel Operating System Architecture | publisher = MIT | year = 1998 | url = http://pdos.csail.mit.edu/exo/theses/engler/thesis.ps | format = PostScript | access-date = 2006-09-22 }} * {{cite journal | last1 = Engler | first1 = Dawson R | author-mask = 3 | last2 = Kaashoek | first2 = M. Frans | author-link2 = Frans Kaashoek | title = Exterminate All Operating System Abstractions | publisher = MIT | year = 1996 | url = http://pdos.csail.mit.edu/papers/hotos-jeremiad.ps | format = PostScript | access-date = 2006-09-22 }} * {{cite book | last1 = Engler | first1 = Dawson R | author-mask = 3 | last2 = Kaashoek | first2 = M. Frans |author-link2 = Frans Kaashoek | last3 = O’Toole | first3 = James Jr | title = Proceedings of the fifteenth ACM symposium on Operating systems principles - SOSP '95 | chapter = Exokernel | pages=251–66 | chapter-format = PDF | year=1995 | volume = 29 | issue = 5 | access-date = 2014-10-08 | chapter-url = http://dl.acm.org/citation.cfm?id=224076 | doi = 10.1145/224056.224076 | isbn = 978-0-89791-715-5 | s2cid = 221932539 }} {{Refend}} ==External links== * {{Citation | url = http://www.cs.cornell.edu/home/ulfar/ukernel/ukernel.html#current-exo | title = Microkernels | quote = The extent to which simple, efficient operations are a good choice in a kernel interface design | first1 = Úlfar | last1 = Erlingsson | first2 = Athanasios | last2 = Kyparlis | publisher = Cornell}}. * {{Citation | url = http://pdos.csail.mit.edu/exo/ | publisher = MIT | title = Exokernel Operating System}}. A research exokernel. * {{Citation | url = https://www.cl.cam.ac.uk/research/srg/netos/projects/archive/nemesis/ | title = Nemesis | publisher = Cambridge | place = [[United Kingdom|UK]]}}. A research exokernel. * {{Citation | url = http://www.returninfinity.com/baremetal.html | title = BareMetal OS | publisher = Return Infinity | url-status = dead | archive-url = https://web.archive.org/web/20140906120230/http://www.returninfinity.com/baremetal.html | archive-date = 2014-09-06 }}. A commercial exokernel. * {{Citation | url = http://xomb.net/ | title = XOmB | access-date = 2013-05-13 | archive-date = 2019-07-28 | archive-url = https://web.archive.org/web/20190728135329/http://xomb.net/ | url-status = dead }}. A research exokernel. * {{Citation | url = https://github.com/remysaissy/examour-exokernel | title = ExAmour | place = [[Paris, France|FR]]}}. The [[GNU]] exokernel. {{Operating system}} [[Category:Operating system kernels]] [[Category:Microkernels]] [[it:Kernel#Esokernel]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:As of
(
edit
)
Template:Citation
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:More citations needed
(
edit
)
Template:Operating system
(
edit
)
Template:Refbegin
(
edit
)
Template:Refend
(
edit
)
Template:Reflist
(
edit
)
Template:Sfn
(
edit
)
Template:Short description
(
edit
)