Linux and Microkernels (was Re: your mail)

Matthew X Economou (econommx@rose-hulman.edu)
Wed, 24 Jul 1996 08:59:21 -0500


>> I saw in a post on one of the newsgroups that the linux kernel
>> can not become a microkernel ever? How come? What are the
>> advantages/disadvantages?

The Linux kernel is monolithic by design. Under Mach, Linux runs as
what is called a single server, that is, the separate subsystems---
file, network, etc.---are all together in a single Mach process. To
make Linux a "micro-kernel OS" would require the developers to
re-engineer Linux, splitting up the various sections of Linux into
separate servers (Mach processes).

The HURD, GNU's micro-kernel OS, is designed in this manner...separate
OS services running as independent processes.

And a note on terminology: In either of these systems, neither Linux
or HURD are micro-kernels themselves. The real micro-kernel in either
case is Mach. What the person on the newsgroup might mean is that
Linux cannot become a micro-kernel because the mklinux developers are
running Linux on top of Mach, instead of developing a new micro-kernel
from scratch (or from Linux).

>>>>> "AC" == Alan Cox <alan@lxorguk.ukuu.org.uk> writes:

AC> A monlithic OS is faster than a microkernel based system.

Statements about "all micro-kernels" based on experience with Mach will
guarantee incorrect results. The speed argument is not true any more.
Highly optimized micro-kernels like QNX and Chorus are very fast...fast
enough to compete with commercial monolithic kernels. I don't know
what the interrupt latency of Linux on a 486DX2-66 is, but under QNX
it is 4 microseconds. In fact, QNX's performance is so well tuned and
fast that it is used heavily in industrial real-time processing
applications.

In addition to being slower, Mach is quite large. It is my
understanding that Mach is in the hundreds of kilobytes (larger than
300KB, I think) in size. The QNX micro-kernel is under 10KB! (QNX 4.0
was less than 8KB and fit entirely in the processor cache of the 486.)
The Chorus micro-kernel is somewhere around 100KB, if I remember the
specs correctly, which I probably don't.

Followups to alt.monolithic-kernels.die.die.die. ;)

-- 
Matthew Xenophon Economou - The Nemesis Project - (Finger/WWW for PGP key.)
Documentation Manager for the Department of Computer Science at Rose-Hulman
Internet: econommx@rose-hulman.edu - http://www.rose-hulman.edu/~econommx/
Proud Supporter of the Unabomber Write-In '96 Campaign