A micro kernel is quite a different concept than a traditional MonolithicKernel (or MacroKernel) like Linux. A micro kernel implements as few things in the kernel as it can, pushing everything else out to user space. A micro kernel provides, at the very least, a way to create tasks and an InterProcessCommunication system so that different tasks may communicate with each other. Things like file systems, network protocols, etc. are all run as user space programs. There are currently two generations of micro kernels.

In a first generation micro kernel, like Mach, there is a lot of stuff in the kernel. A first generation micro kernel has hardware support compiled into the kernel, as well as a task scheduler, the InterProcessCommunication system, and (sometimes) a memory pager. First generation micro kernels are generally agreed to be slow and have caused many people to discount micro kernels as being unusable. The general way that a first generation micro kernel was used was to implement a single BsdOs server on top of the micro kernel and then use the micro kernels InterProcessCommunication abilities to communicate with other machines over the network in a cluster.

Thercurrent (second) generation of micro kernels are much smaller than their first generation ancestors. The most widely known second generation micro kernel is L4. In L4, everything is in user space. Even hardware drivers. The only thing L4 does is boot the system and then give all control over the physical memory to another task. L4 provides very efficient InterProcessCommunication and low cost creation of new tasks and memory spaces. However, it does not contain a task scheduler or VirtualMemory pager: user space programs must implement both. Because of this minimalist approach, there are only seven SystemCalls in L4. This has allowed the L4 research team to optimize those seven primitives and achieve must better performance than older micro kernels did.

There are several Operating Systems that uses micro kernels instead of monolithic kernels. The "kernel," so to speak, of the GnuOs is the GnuHurd. The GnuHurd uses a micro kernel and implements its file systems, network protocols, and many other things as user space programs. MacOsxOs uses Mach and implements a FreeBsdOs compatible layer named Darwin on top of it, as well as the MacClassicOs environment. QnxOs is a good example of a highly succesful operating system that uses a micro kernel.

Several Micro kernels currently available are:

MicroKernel (last edited 2008-07-09 05:47:49 by localhost)