Conventional Operating Systems always have issues on performance, functionality and the scope of applications that are built for them, because of the traditional approach of placing the operating system between the application programs and the physical hardware. A computer kernel is the heart of operating systems that lie in between the software and hardware, whilst bridging the gap between them. To understand more on what kernels are and how they work, please read my blog post on Kernels.
When it comes to Exokernel Operating Systems, the amount of resources available online is very limited. Most of the related studies are through researches and published books, that makes it really hard for the students to reach out and easily understand the study material. With this blog, the reader will be able to understand the basics on Exokernel operating systems, its architecture and why it was developed in the first place. Following items will be addressed in this blog.
What are Exokernel Operating Systems
Why Exokernel Operating Systems
How Exokernel Operating Systems Work
LibOS - Library Operating Systems
Advantages of Exokernel Operating Systems
Disadvantages of Exokernel Operating Systems
What are Exokernel Operating Systems?
Exokernel is an Operating System developed by the Massachusetts Institute of Technology (MIT) with the concept of putting the application in control. Exokernel operating systems seek to provide application level management of hardware resources. The architecture given in this operating system is designed to separate the resource protection from management, to facilitate application-specific customization.
If we look at the general architecture of Operating Systems, the hardware resources are presented to applications through high-levels of abstractions, like virtual file systems. This is basically to ease out the complexity of the underlying hardware. Therefore, this structure has a great impact on the performance of the applications and the types of supported applications that can be built on this operating system. The main idea behind Exokernels is to reduce the level of abstractions provided by operating systems and to allow application level management of hardware resources as much as possible. This gives the power to application developers to declare their own levels of abstractions and manage the hardware.
When compared to traditional kernels like Micro-kernels and Monolithic Kernels, Exokernels are very small, and they provide direct access to hardware by removing unnecessary abstractions. The image given below, shows the separation between normal kernels and Exokernels. The red colour lines represent the accessibility of hardware, for programs and libraries, in the exokernel architecture.
Given below, are some important features of Exokernel Operating Systems.
Better Support for Application Control
Separates Security from Management
Abstractions are moved securely to an untrusted "Library Operating System"
Provides a low level interface
Library operating systems offer Portability and Compatibility.
Why Exokernel Operating Systems?
The usual way of designing kernels was to provide certain levels of abstractions to hardware accesses, and make the individual hardware resources invisible to normal applications. The reason for doing this, was to provide the ease and convenience of writing programs, with the cost of losing a certain portion of performance. Some of these abstraction models are:
File systems for Disk storage
Virtual Address spaces for memory
Schedulers for task management
Sockets for network connections
As time went by, developers wanted to come up with mechanisms to increase the performance of applications and carry out experiments on different levels of hardware abstractions. In summary, some of the main reasons why certain developers prefer exokernels are because, traditional kernels:
Deny applications from getting domain specific optimizations
Discourage changes to the implementations of the existing abstractions
Restrict the flexibility of developers because, new abstractions can only be added by emulation on top of existing ones
How Exokernel Operating Systems Work?
The application libraries developed for Exokernels are known as "Library Operating Systems." The main separation that Exokernels have, is the separation between the Management of Resources and Resource Protection.
1) Under management of resources, the applications are allowed to define their own abstraction levels for hardware and do requests like specific memory addresses, disk blocks, different representations of memory etc. The Library Operating Systems are as powerful as privileged operating systems.
2) Under the protection of resources, the kernel only ensures that the requested resources are free and the applications are allowed to access it.
This low level hardware accesses, allows the programmer to opt out unnecessary hardware abstractions and specify the needed abstraction levels, to increase the performance of the applications and the system. The programmer is allowed to select different levels of abstraction like low, medium and high.
The exokernel architecture is built such that, a small kernel moves all hardware abstractions into untrusted libraries, known as "Library Operating Systems." If you have a look at the image given below, you can see how the Hardware, the Kernel, Library Operating Systems and the Applications are distinguished from each other.
As shown in the image above, the Exokernel exposes the allocation, revocation, names and information handling of hardware, whilst supporting protection of hardware resources.
LibOS - Library Operating Systems
Library operating systems are libraries built on top of the exokernel, which have the capability to utilize the hardware resources as needed, by providing different levels of abstractions. An exokernel focuses in securely multiplexing the raw hardware, from basic hardware primitives, application level libraries can directly implement traditional operating system abstractions, specialized for appropriateness and speed.
In the image given above, the applications on top (Emacs, Water, Thor) use their own Library Operating Systems (ExOS, PhOS, OO OS), which then use the Exokernel to access the raw hardware resources.
Advantages of Exokernel Operating Systems
1) Improved Performance of Applications
When different levels of hardware abstractions are allowed by the operating system, the applications can utilize the hardware the way they want and take the maximum performance out of it. Due to this reason, the performance of applications can be improved as needed.
2) Using hardware resources efficiently by doing proper resource allocation and revocation.
With the exokernel approach, the hardware resource allocation and revocation can be done as needed by the applications. The default hardware level abstractions in normal kernels, might be providing resource allocation and revocation in a more general way. But with exokernels, the application can decide the number of resources needed and what time revocation should be carried out, to keep the hardware resources running efficiently at all times.
3) Easier development and testing of new operating systems
Since exokernels allow hardware level protection only, the management of hardware resources is entirely up to the application libraries. These libraries are known as Library Operating Systems because they can be interpreted as operating systems that try to utilize and manage the hardware as necessary. So, this concept can be used to develop and test new operating systems.
4) The applications are allowed to have heir own optimized memory management system
If you are developing a program or application, you know the time and instance that the program will be needing more memory and less memory. This means that you are aware of techniques that can be used to optimize memory management in your application. Exokernels give the flexibility to the developer to have their own memory management system, thereby improving the overall performance of the application.
Disadvantages of Exokernel Operating Systems
1) Reduced Consistency
When it comes to development of applications and application operating systems, each developer will develop them the way they want. Some might add different memory management systems, and some might even define various file management systems. Due to this reason, the level of consistency will be a bit reduced.
2) Complex design of Exokernel interfaces
Providing abstract views for hardware is much more general approach, where all applications are allowed to access it in the same manner. But to provide only hardware protection and reduce abstraction levels, will make it tough to define interfaces to communicate with hardware directly. So the design tends to be complicated due to various levels of abstraction that can be built on top of it.
References