Microkernel based OS Structure - Georgia Tech - Advanced Operating Systems

There is a need for customization and

the opportunity for customization is what spurred

operating systems designers to think of a

structure of the operating system that would

allow customization of the services and gave

birth to the idea of microkernel-based operating

system. As before, each of the applications

is in its own hardware address space,

the microkernel runs in a privileged mode of the architecture, and provides

simple abstractions such as threads, address

space, and inter-process communication. In other

words, small number of mechanisms are supported by the microkernel. The keyword

is mechanisms, there are no policies

ingrained in the microkernel, only mechanisms for

accessing hardware resources. The operating system services, such as virtual

memory management, CPU scheduling, file system, and so on that implemented as

servers on top of the microkernel. So in other words, these

system services execute with a same privilege as the applications themselves.

Each of the system service is in its own address space and it is protected from

one another and protected from the application and

the microkernel, being below this red line, is running

in privileged mode, it is protected from all

of the applications as well as the system services.

So in other words, we no longer have

that monolithic structure that we had before. Instead each

operating system service is in its

own hardware address space. In principle, there

is no distinction between regular applications and

the system services that are executing a

server processes on top of the microkernel.

Thus, we have very strong protection among

the applications, between the applications and system

services, among the system services and between

application system services and the microkernel. Now, the structure what

it entails is that you need the microkernel to provide

inter-process communication so that the applications

can request system services by contacting the servers and

the servers need to talk to one another as well. And in order

for them to talk to one another

they need inter-process communication as well. So

what have we gained by the structure? What we have gained by the structure

is extensibility. Because these OS services are implemented as service

processes, we can have replicated server processes with

different characteristics. For instance, this application may choose to use

this particular file system. Another application may

choose a different file system. No longer

do we have that one size fits

all characterization of the monolithic kernel. And this

is the biggest draw for the microkernel based design that it is easy to extend

the services that are provided with the

operating system to customize the services depending on

the needs of the application. This all sounds good, but is there a catch?