Hybrid (micro)kernels

By: Linus Torvalds (torvalds.delete@this.osdl.org), May 15, 2006 8:20 am
Room: Moderated Discussions
philt (ptay1685@bigpond.net.au) on 5/14/06 wrote:
>Where they differ is about whether there are advantages
>to Microkernels that outweigh these disadvantages. Linus
>seems to think not. Others disagree.

Well, so far, "others" haven't even been able to actually
name those hypothetical advantages.

I've seen insane claims of speed (and yes, I've seen
benchmarks too - microkernels are often very fast when
you benchmark something like context switching, because
that's what they've spent all their time optimizing for).

I've seen insane claims of "easier" (in fact, this was the
claim for much of the 80's and 90's), and I even bought
into it at one time. Having actually learnt what is easy
and what is hard - and having seen people fumble with their
microkernels over and over again - it's become obvious not
only to me that the "easier" argument was bogus.

For a while there the claim was "scales better". The logic
behind that argument was basically that since the model
forces you to make all your services appear distributed
anyway, then it should obviously naturally result in
microkernels being wonderful for clustering etc.

That, btw, would appear to be a logically sound argument,
but it ends up falling down on the fact that microkernels
want to support memory mapping too (sometimes more than a
monolithic kernel, since memory mapping is also a way to
avoid some of the performance issues - the Hurd tried to
really push this angle), and suddenly the whole transport
isn't network-transparent after all.

(There are other problems with the whole "scaling" argument,
not the least of which is that scaling on SMP and in a
cluster are two almost totally different dimensions, and
using the same model for the two is just not sensible, but
that's another issue).

For the last year or so, the new magic world has been
"security". It appears as totally bogus as the "ease of
maintenance" tripe was (and for largely the same reasons:
security bugs are often about the interactions
between two subsystems, and the harder it is to write
and maintain, the harder it is to secure).

I'm sure that ten years from now, it will be something else.

There's always an excuse.

>It is interesting to note what has happened to the Hurd as
>an example of a real world Microkernel project. It appears
>to have a reached a resonable level of maturity, enough
>for Debian to build a distro based on it - but is now
>stalled, despite apparently have come so close to its goal.
>It would appear that certain insurmountable problems
>(speed and reliability?) have forced developers to rethink
>and look at other kernels (L4, Coyotos).

Well, there's (I think) several arguments for why this

If you're a microkernel person, the first argument is that
Hurd isn't really a microkernel, it's an abomination that
makes all other microkernels look bad. Talk to any L4
person, and they'll tell you Hurd is something else

The other argument is that doing something that works
well enough to support basic UNIX system calls isn't that
hard. I should know. Linux 0.01, back in 1991, largely did
that. Making a whole Debian distribution on top of such a
system isn't actually that hard. The hard part is making it
all actually work well.

The final (and I think deciding) argument is that the
real argument for microkernels has nothing to do with
speed, ease of implementation, security, or anything else.

The real reason people do microkernels (and probably will
continue to do them, and make up new reasons for why they
are better) is that the concept sounds so good. It
sounded good to me too!

The whole "make small independent modules" thing just sounds
like manna from heaven when you're faced with creating an
OS, and you realize how daunting a task that is. At
that point, you can either sit back and enjoy the ride
(which I did - partly because I didn't initially really
realize how daunting it would be), or you can seek mental
solace in an idea that makes it sound easier than it is.

So that "microkernels are wonderful" mantra really comes
from that desperate wish that the world should be simpler
than it really is. It's why microkernels have obviously
been very popular in academia, where often basically cannot
afford to put a commercial-quality big development team on
the issue, so you absolutely require that the problem
is simpler.

So reality has nothing to do with microkernels. Exactly the
reverse. The whole point of microkernels is to try to
escape the reality that OS design and implementation is
hard, and a lot of work.

It's an appealing notion.

>No doubt Linus hopes thay won't.

Actually, if I were afraid of competition (and, quite
frankly, I'm not - since I'm not competing as much as
just having a damn good time), microkernel people aren't
where it would be.

I'd worry about some really smart kid in some random country
that I've never heard of, who just doesn't know how hard
things are, and who is hungry for the challenge, and decides
to "just do it". And does things differently (in some
respect - maybe he decides that the real problem is the
language, and writes a much better model for handling all
the complex issues).

For Linux, the "does things differently" wasn't so much
technical, but in the development model.

That's how real progress is made. Not by people who are
afraid of the complexity. Real progress is made by people
who are too ignorant to even realize that there is
complexity, and how things are "supposed" to work, and they
just do it their own way. And most of the time, their way
was just totally crazy. But sometimes that naïve way ends
up being something that nobody else had done before, and
that really really worked.

Over-thinking things is never how you do anything real.

< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
Hybrid (micro)kernelsTzvetan Mikov2006/05/08 04:41 PM
  Hybrid (micro)kernelsS. Rao2006/05/08 06:14 PM
  Hybrid (micro)kernelsBill Todd2006/05/08 06:16 PM
    Hybrid (micro)kernelsTzvetan Mikov2006/05/08 07:21 PM
      Hybrid (micro)kernelsnick2006/05/08 07:50 PM
      Hybrid (micro)kernelsBill Todd2006/05/09 01:26 AM
        There aren't enough words...Rob Thorpe2006/05/09 02:39 AM
          There aren't enough words...Tzvetan Mikov2006/05/09 03:10 PM
            There aren't enough words...Rob Thorpe2006/05/15 12:25 AM
        Hybrid (micro)kernelsTzvetan Mikov2006/05/09 11:17 AM
          Hybrid (micro)kernelsBill Todd2006/05/09 04:05 PM
  Hybrid (micro)kernelsrwessel2006/05/08 11:23 PM
    Hybrid kernel, not NTRichard Urich2006/05/09 06:03 AM
      Hybrid kernel, not NT_Arthur2006/05/09 07:06 AM
        Hybrid kernel, not NTRob Thorpe2006/05/09 07:40 AM
          Hybrid kernel, not NT_Arthur2006/05/09 08:30 AM
            Hybrid kernel, not NTRob Thorpe2006/05/09 09:07 AM
              Hybrid kernel, not NT_Arthur2006/05/09 09:36 AM
                Linux vs MacOSX peformance, debunked_Arthur2006/05/18 07:30 AM
                  Linux vs MacOSX peformance, debunkedRob Thorpe2006/05/18 08:19 AM
                    Linux vs MacOSX peformance, debunkedAnonymous2006/05/18 12:31 PM
        Hybrid kernel, not NTLinus Torvalds2006/05/09 08:16 AM
          Hybrid kernel, not NTAndi Kleen2006/05/09 02:32 PM
            Hybrid kernel, not NTmyself2006/05/09 03:24 PM
              Hybrid kernel, not NTmyself2006/05/09 03:41 PM
              Hybrid kernel, not NTBrendan2006/05/09 05:26 PM
                Hybrid kernel, not NTLinus Torvalds2006/05/09 08:06 PM
                  Hybrid kernel, not NTBrendan2006/05/13 01:35 AM
                    Hybrid kernel, not NTnick2006/05/13 04:40 AM
                      Hybrid kernel, not NTBrendan2006/05/13 09:48 AM
                        Hybrid kernel, not NTnick2006/05/13 07:41 PM
                          Hybrid kernel, not NTBrendan2006/05/13 09:51 PM
                            Hybrid kernel, not NTnick2006/05/14 05:57 PM
                              Hybrid kernel, not NTBrendan2006/05/14 10:40 PM
                                Hybrid kernel, not NTnick2006/05/14 11:46 PM
                                  Hybrid kernel, not NTBrendan2006/05/15 04:00 AM
                                    Hybrid kernel, not NTrwessel2006/05/15 07:21 AM
                                      Hybrid kernel, not NTBrendan2006/05/15 08:55 AM
                                        Hybrid kernel, not NTLinus Torvalds2006/05/15 09:49 AM
                                          Hybrid kernel, not NTnick2006/05/15 04:41 PM
                                          Hybrid kernel, not NTtony roth2008/01/31 02:20 PM
                                    Hybrid kernel, not NTnick2006/05/15 06:33 PM
                                      Hybrid kernel, not NTBrendan2006/05/16 01:39 AM
                                        Hybrid kernel, not NTnick2006/05/16 02:53 AM
                                          Hybrid kernel, not NTBrendan2006/05/16 05:37 AM
                  Hybrid kernel, not NTAnonymous2008/05/01 10:31 PM
                    Following the structure of the treeMichael S2008/05/02 04:19 AM
                      Following the structure of the treeDean Kent2008/05/02 05:31 AM
                        Following the structure of the treeMichael S2008/05/02 06:02 AM
                        Following the structure of the treeDavid W. Hess2008/05/02 06:48 AM
                          Following the structure of the treeDean Kent2008/05/02 09:14 AM
                            Following the structure of the treeDavid W. Hess2008/05/02 10:05 AM
                              LOL!Dean Kent2008/05/02 10:33 AM
                              Following the structure of the treeanonymous2008/05/02 03:04 PM
                                Following the structure of the treeDean Kent2008/05/02 07:52 PM
                                Following the structure of the treeFoo_2008/05/03 02:01 AM
                                  Following the structure of the treeDavid W. Hess2008/05/03 06:54 AM
                                    Following the structure of the treeDean Kent2008/05/03 10:06 AM
                                      Following the structure of the treeFoo_2008/05/04 01:06 AM
                                        Following the structure of the treeMichael S2008/05/04 01:22 AM
            Hybrid kernel, not NTLinus Torvalds2006/05/09 05:19 PM
              Microkernel Vs Monolithic KernelKernel_Protector2006/05/09 09:41 PM
                Microkernel Vs Monolithic KernelDavid Kanter2006/05/09 10:30 PM
                  Sigh, Stand back, its slashdotting time. (NT)Anonymous2006/05/09 10:44 PM
                  Microkernel Vs Monolithic Kernelblah2006/05/12 08:58 PM
                  Microkernel Vs Monolithic KernelRob Thorpe2006/05/15 01:41 AM
          Hybrid kernel, not NTAnalGuy2006/05/16 03:10 AM
            Theory versus practiceDavid Kanter2006/05/16 12:55 PM
              Distributed algorithmsRob Thorpe2006/05/17 12:53 AM
              Theory versus practiceHoward Chu2006/05/17 02:54 AM
                Theory versus practiceJS2006/05/17 04:29 AM
          Play online poker, blackjack !!! Gamezonex2007/08/16 01:49 PM
  Hybrid (micro)kernelsphilt2006/05/14 09:15 PM
    Hybrid (micro)kernelsLinus Torvalds2006/05/15 08:20 AM
      Hybrid (micro)kernelsLinus Torvalds2006/05/15 11:56 AM
        Hybrid (micro)kernelsRob Thorpe2006/05/16 01:22 AM
          Hybrid (micro)kernelsrwessel2006/05/16 11:23 AM
            Hybrid (micro)kernelsRob Thorpe2006/05/17 12:43 AM
              Hybrid (micro)kernelsrwessel2006/05/17 01:33 AM
                Hybrid (micro)kernelsRob Thorpe2006/05/19 07:51 AM
                  Hybrid (micro)kernelsrwessel2006/05/19 12:27 PM
      Hybrid (micro)kernelstechIperson2006/05/15 01:25 PM
      Hybrid (micro)kernelsmas2006/05/15 05:17 PM
        Hybrid (micro)kernelsLinus Torvalds2006/05/15 05:39 PM
          Hybrid (micro)kernelsColonel Kernel2006/05/15 09:17 PM
            Hybrid (micro)kernelsWink Saville2006/05/15 10:31 PM
              Hybrid (micro)kernelsLinus Torvalds2006/05/16 10:08 AM
                Hybrid (micro)kernelsWink Saville2006/05/16 09:55 PM
          Hybrid (micro)kernelsrwessel2006/05/16 11:31 AM
            Hybrid (micro)kernelsLinus Torvalds2006/05/16 12:00 PM
        Hybrid (micro)kernelsBrendan2006/05/16 01:36 AM
        Hybrid (micro)kernelsPaul Elliott2006/09/03 08:44 AM
          Hybrid (micro)kernelsRob Thorpe2006/09/04 09:25 AM
      Hybrid (micro)kernelsphilt2006/05/16 12:55 AM
        Hybrid (micro)kernelspgerassi2007/08/16 07:41 PM
  Another questionable entry on Wikipedia?Chung Leong2006/05/18 10:33 AM
  Hybrid (micro)kernelsisrael2006/05/20 04:25 AM
    Hybrid (micro)kernelsRob Thorpe2006/05/22 08:35 AM
Reply to this Topic
Body: No Text
How do you spell purple?