Mk Myth
Just a quick rebut of the infamous Linus post on the pros and cons of microkernels. This is the section I'm really poking:
"Now, the real problem with split access spaces is
not the performance issue (which does exist), but the
much higher complexity issue. It's ludicrous how micro-
kernel proponents claim that their system is "simpler" than
a traditional kernel. It's not. It's much much more
complicated, exactly because of the barriers that it has
raised between data structures.
...
"Microkernels are much harder to write and maintain
exactly because of this issue. You can do simple
things easily - and in particular, you can do things where
the information only passes in one direction quite easily,
but anythign else is much much harder, because there is
no "shared state" (by design). And in the absense of shared
state, you have a hell of a lot of problems trying to make
any decision that spans more than one entity in the
system.
"And I'm not just saying that. This is a fact. It's a fact
that has been shown in practice over and over again, not
just in kernels. But it's been shown in operating systems
too - and not just once. The whole "microkernels are
simpler" argument is just bull, and it is clearly shown to
be bull by the fact that whenever you compare the speed
of development of a microkernel and a traditional kernel,
the traditional kernel wins. By a huge amount, too."
- Linus Torvalds
***
Address spaces need not be completely split, of course. The exact separation desired is implementation specific. You can pass descriptor tables between processes if you like. The main thing, though, is that it is no longer the default to give all of the kernel write access to itself. I said it earlier: your scanner driver should not be able to format your hard disk. It should be able to try and the kernel should make it fail. Unless code has explicit access to something, it shouldn't be allowed to touch it.
The harsh truth behind the post here is that we have Linux today, and Hurd still lags, to say nothing of any other microkernel OS. I wonder these days weather the creation of Linux was a good thing. Would it have been better to leave it to the Hurd team to do it properly, albeit a few years slower, or have we made up for that in the number of people interested in free operating systems today?
And then again, maybe there is a deeper meaning. It remains to be seen how much of Linux' appeal came as a direct result of it being monolithic. If there was some effect then, I have to wonder if it remains today.
A Wavefunction in Wonderland