Exokernel
Exokernel
Exokernel
Exokernel is an operating system kernel developed by the MIT Parallel and Distributed
Operating Systems group, and also a class of similar operating systems. Operating System
Kernels generally present the hardware-resources to applications through high level
abstractions such as the (virtual) file-system. 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 than conventional
microkernels' implementation of message passing and monolithic kernels' implementation of
abstractions. Implemented applications 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
Applications
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.
Exokernel Principles
• Separate protection and management
• Expose allocation
• Expose names
• Expose revocation
• Expose information
Exokernel Advantages:
Exposing kernel data structures
• Flexibility
• Edit, compile, debug cycle is faster than “edit, compile, reboot, debug” cycle of kernel.
• Performance
• Initiation/termination of upcalls
Drawbacks:
• Interface design is not simple, multiple designs over several years
Example:
Xok
Xok is an exokernel for Intel x86-based computers.
• Allows efficient and powerful virtual memory abstractions to be built at the application level.
Hybrid kernel:
A hybrid kernel is a kernel architecture based on combining aspects of microkernel and
monolithic kernel architectures used in computer operating systems. The traditional kernel
categories are monolithic kernels and microkernels (with nanokernels and exokernels seen as
more extreme versions of microkernels). The category is controversial due to the similarity to
monolithic kernel; the term has been dismissed by Linus Torvalds as simple marketing. The idea
behind this category is to have a kernel structure similar to a microkernel, but implemented in
terms of a monolithic kernel. In contrast to a microkernel, all (or nearly all) operating system
services are in kernel space. While there is no performance overhead for message passing and
context switching between kernel and user mode, as inmonolithic kernels, there are no
reliability benefits of having services in user space, as in microkernels.
Advantages:
Hybrid Kernel has combine advantages of monolithic Kernel and micro kernel . This allows the speed and
simplicity of a monolithic kernel and the safety and security of a microkernel.
This allows them to run certain services and drivers in kernel space, while still running most other
services and drivers in user space. This improves security for certain applications and gives a significant
performance boost for kernel space processes.
Disadvantages:
Difficult to debug
Difficult to maintain
Addition of new features or removal of obsolete features is very difficult
Example:
Windows NT
Windows 2000
Windows XP
Windows 7
Dragonfly
BSD