Micro kernels have made no impact on modern Operating



Abstract


There have been many approaches to the operating systems design. In particular, monolithic kernel and micro kernels are the two approaches, which play a vital role in the operating systems design. This essay is about the impact of micro kernels on modern operating system, i.e. though micro kernels have some performance degradations but still they have highly influenced the design of modern operating systems.


1. Introduction


The history of operating system has evolved through several kinds of structures. Monolithic and micro kernels are the two main structures on which operating system has been designed. Systems based on monolithic architecture started out as simple, small structures and gradually added functionality without adding much structure, e.g. DOS, UNIX. On the other hand, in micro kernel architecture, services have been moduled and a small-simple kernel has been developed where kernel is shrinked to run a large number of servers as user-level processes, e.g. Mach, Chorus, L4. Apart from these two architectures, a new model called exokernel has been designed in which the kernel is only a secure hardware multiplexer. This essay includes discussion on above-mentioned architectures with respect to their impact on modern operating systems design.


2. Different type of Operating System kernels design


2.1 Monolithic Kernels


Most of the early operating systems were based on monolithic kernels [2], e.g. UNIX OS. In this type of design, the major functionalities of OS, viz. networking, memory management, paging, etc are implemented in the kernel and are executed from the kernel mode only [1]. Usually monolithic kernels are not modular, so it is hard to implement a new functionality or modify the existing ones. This design has several limitations:


· Since every function in the kernel has all the privileges, a bug in one part can corrupt data structure of another part.


· Kernels often become very huge and hard to maintain.


· As common libraries cannot be used so coding in kernel space is hard so as debugging and rebooting is often needed.


2.2 Micro Kernels

3.21 First generation Micro Kernels
These micro kernels were the first kernels designed to achieve the goal of running applications faster than the monolithic kernels. The two most notable of these are L3, Chorus [3] and Mach [4]. Expected benefits from this type of micro kernels were


· To achieve a small and simple kernel.


· Highly modular structure.


· To run device drivers as servers.


But after all such expectations these types of micro kernels were inefficient as the cost of Remote Procedure Call, RPC turned out to be much higher than the simple system call to the kernel [5]. Secondly, while running the same application on micro kernel and monolithic based OS’s the cost of memory references turned out to be much higher in micro kernel based OS. Lastly, these types of micro kernels were inefficient because some of the implementation strategies and interfaces were inherited from monolithic kernels [6].


3.22 Second generation Micro Kernels


To improve the performance of micro kernels, new second-generation micro kernels have been designed. Some of these second-generation micro kernels are:


Ř L4


L4 [7] is the direct offspring of L3, a first-generation micro kernel. L4 are designed from the scratch [8]. They are based on the thesis that micro kernels are processor dependent, i.e., like code optimizers. L4 supplies three abstractions, threads, address spaces and Inter Process Communication, IPC and have only seven system calls. In L4, threads are user-level and kernel supports the address-space management and communication. The functionality of address-space management allows the implementation of memory management and paging outside the kernel. Various optimizing techniques are used to achieve a fast IPC implementation, which resulted in high performance gains, such as:


· A two-fold performance improvement can be obtained by transferring short IPC messages in registers.


· Copying large data messages becomes faster.


· “Lazy scheduling” [9] scheme is applied to improve the performance of small message IPC. This scheme delays the movement of threads within queues until the queues are queried and improves the overall performance.


Ř Exokernels


A new kernel architecture called Exokernel [10] was proposed at MIT. The main goal of the development of exokernels is to securely export and multiplex the hardware resources and primitives. To accomplish this, exokernel employs three techniques [11]:


· Secure Bindings


One of the tasks of an exokernel is to multiplex resources securely. Exokernel uses the mechanism