Re: Linux, the microkernel (was Re: latest linus-2.5 BK broken)

Rob Landley
2002-06-22T01:33:29Z

On Friday 21 June 2002 02:09 pm, Jeff Garzik wrote:

> One point that is missed, I think, is that Linux secretly wants to be a
> microkernel.
>
> Oh, I don't mean the strict definition of microkernel, we are continuing
> to push the dogma of "do it in userspace" or "do it in process context"
> (IOW userspace in the kernel).
...
>
>
> (I wonder if, shades of the old Linus/Tanenbaum flamewar, I will catch
> hell from Linus for mentioning the word "microkernel" :))

Amateur computer historian piping up...

A microkernel design was actually made to work once, with good performance.
It was about fifteen years ago, in the amiga. Know how they pulled it off?
Commodore used a mutant ultra-cheap 68030 that had -NO- memory management
unit.

No memory protection meant that message passing devolved to "here's a
pointer, please don't eat my data". And it's message passing that kills
microkernels, all that busy work from copying data (or, worse, playing with
page tables) when doing message passing kills your performance and makes the
sucker undebuggable. You wind up jumping through hoops to get access to the
data you need, and at any given point there are three different copies of it
flying through the memory bus getting out of sync with each other and needing
a forest of locks to even TRY to resolve.

In the Linux kernel, even when we have process context we can "reach out and
touch someone" any time we want to. No message passing nightmares, just keep
track of what you're exporting or Al will flame you. :) Lock, diddle the
original, unlock, move on. No copies, no version skew.

A microkernel design WITHOUT message passing is really just an extremely
modular monolithic kernel. Modularization, like object oriented programming,
is cool up until the point you let it turn into a religion. As long as you
don't wind up fighting your design and winding up unable to access your own
data when you really need to, because it's on the wrong side of a relatively
arbitrary boundary, modularization is a good thing.

Rob