Exokernel and Diavik Airport: Difference between pages

(Difference between pages)
Content deleted Content added
copyedited for accuracy and flow
 
Fix template & clean up, Replaced: {{Airport codes|N/A| → {{Airport codes||| using AWB
 
Line 1:
{{Infobox Airport
{{inuse}}
| name = Diavik Airport
[[Image:Kernel-exo.png|frame|right|Graphical overview of Exokernel]]
| nativename =
'''Exokernel''' is the name of an [[operating system]] developed by the Parallel and Distributed Operating Systems group at [[MIT]], and of a class of similar operating systems.
| nativename-a =
| nativename-r =
| image =
| image-width =
| caption =
| IATA =
| ICAO = CDK2
| type = Private
| owner-oper = [[Diavik Diamond Mine]]s
| city-served =
| ___location = Diavik Diamond Mine
| elevation-f = 1,413
| elevation-m = 431
| coordinates = {{Coord|64|30|41|N|110|17|22|W|type:airport}}
| website = [http://www.diavik.ca/index.htm www.diavik.ca/]
| metric-elev =
| metric-rwy =
| r1-number = 10T/28T
| r1-length-f = 5,004
| r1-length-m = 1,525
| r1-surface = [[Gravel]]
}}
 
'''Diavik Airport''' {{Airport codes|||CDK2}}, is a private aerodrome in the [[Northwest Territories]], [[Canada]] that serves the [[Diavik Diamond Mine]]. It's situated in a busy area due to the closeness of [[Ekati Airport]]. Prior permission is required to land except in the case of an emergency.
==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 conceptual model. These models include [[file system]]s for disk storage, virtual memory spaces for memory, [[scheduler]]s for task management, and [[socket (networking)|sockets]] for network communication. These abstractions of the hardware make it easier to write programs in general, but in special cases they can become a nuisance. 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.
 
==External link==
One might opt to remove the kernel completely and program directly to the hardware, but then the entire machine must be dedicated to a single application. A compromise is possible; let the kernel allocate the physical resources of the machine (e.g. [[disk block]]s, [[memory page]]s, and processor time) to multiple application programs, and let each program decide what to do with these resources. The program can link to a ''library operating system'' (libOS) that uses the resources to [[emulate]] a familiar operating system, or it can apply them directly to the task at hand. Theoretically, an exokernel system could provide libOSes so different kinds of operating systems (Windows, Unix) can run under a single exokernel.
*[http://www.copanational.org/PlacesToFly/airport_view.php?pr_id=8&ap_id=1039 Page about this airport] on [[Canadian Owners and Pilots Association|COPA's]] ''Places to Fly'' airport directory
 
==OverviewReferences==
*{{CFS}}
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 [[multiplexing]] of resources, which are vastly simpler tasks than a conventional kernel must deal with.
 
{{Canadian Airports}}
Applications and abstractions may request a 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.
[[Category:Airports in the Northwest Territories]]
 
{{NorthwestTerritories-airport-stub}}
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, rather than relying on an operating system provided file abstraction.
 
[[lmo:Diavik Airport]]
==MIT Exokernel==
[[pms:Diavik Airport]]
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 are secure.
 
===Kernel design===
The MIT exokernels manage hardware resources as follows:
 
====Processor====
The kernel represents processor time as a contiguous sequence of [[time slice]]s that programs can allocate. 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 (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'' 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 for [[disk head]] movement. 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 [[network packet]] filter, which executes programs in a [[byte code]] language that the kernel can ensure does not send packets to the wrong program.
 
===Applications===
The available library operating systems for Exokernel include the custom ExOS system and an emulator for [[BSD (operating system)|BSD]]. In addition to these, the exokernel team created the Cheetah [[web server]], which uses the kernel directly.
 
==History==
The exokernel concept has been around since at least [[1994]] [http://citeseer.ist.psu.edu/engler95exokernel.html], but [[as of 2005]] exokernels are still a research effort and it was not used in any major commercial operating systems. A concept operating exokernel system is [[Nemesis (computing)|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]].