Forgot your password?
typodupeerror
Operating Systems Programming Software IT Technology

The Great Microkernel Debate Continues 405

Posted by Zonk
from the tiny-issues dept.
ficken writes "The great conversation about micro vs. monolithic kernel is still alive and well. Andy Tanenbaum weighs in with another article about the virtues of microkernels. From the article: 'Over the years there have been endless postings on forums such as Slashdot about how microkernels are slow, how microkernels are hard to program, how they aren't in use commercially, and a lot of other nonsense. Virtually all of these postings have come from people who don't have a clue what a microkernel is or what one can do. I think it would raise the level of discussion if people making such postings would first try a microkernel-based operating system and then make postings like "I tried an OS based on a microkernel and I observed X, Y, and Z first hand." Has a lot more credibility.'"
This discussion has been archived. No new comments can be posted.

The Great Microkernel Debate Continues

Comments Filter:
  • by adpsimpson (956630) on Thursday January 31, 2008 @12:24PM (#22247624)

    ...as flamebait.

    "We've not argued about this for a while. Let's have a shouting match...
  • by Midnight Thunder (17205) on Thursday January 31, 2008 @12:26PM (#22247662) Homepage Journal
    One of the main issues with microkernels is that of performance, but the trade-off results in reduced stability if you have a bad driver, since there is no notion of memory protection for drivers in a monolithic kernel.

    The way I see it, is given the current performance of systems, getting a fast, but slightly less stable kernel counts for a lot, but in the future when the overhead provided a microkernel is deemed insignificant we will see them become the norm. In many ways this is much like when we were all using SCSI CD burners because the processor couldn't keep up, but now we are all using IDE CD burners because CPUs can more than handle the task.

  • by davidwr (791652) on Thursday January 31, 2008 @12:27PM (#22247678) Homepage Journal
    Like many other "this vs. that" wars, neither micro- nor monolithic-kernel architectures are best for all tasks.

    In many cases the difference for the end-user is small enough that it's not worth doing things "the best way" if the tools and talent available lean the other way.

    We didn't go for VHS over Beta because it had better quality video, we went for it because of marketplace and other factors.

    We didn't go with a monolithic Linux over the once-Apple-sponsored mkLinux because it was inherently better for every possible task under the sun, we went with it because it was better for some tasks and good enough for others and it had more support from interested parties, i.e. marketplace factors.
  • by fishwallop (792972) on Thursday January 31, 2008 @12:30PM (#22247716)
    I much doubt whether the average user cares (never mind understands) if the kernel is monolithic, microkernel, or heated corn -- and for what we average users tend to use our compueters for (i.e. running our office apps, surfing the Interweb, listening to music, occassionaly watching video or fixing red-eye in pictures of our children) it's not going to be the kernel that dictates user experience or perception of "slow". You db admins, SETI enthusiasts and google administrators may care more. (I turned in my geek card long ago.)
  • Re:crickets (Score:3, Insightful)

    by Rycross (836649) on Thursday January 31, 2008 @12:38PM (#22247836)
    Linus Torvalds created a microkernal based OS? Which one?
  • Re:QNX Rules (Score:3, Insightful)

    by weicco (645927) on Thursday January 31, 2008 @12:41PM (#22247892)

    I don't see the point in buying QNX. They already have Singularity [microsoft.com] which seems very interesting to me. Now I don't know much about microkernels but the idea looks nice. Let compiler handle all the nasty IPC stuff at compile time to lower the performance penalty which comes from process context switches and such.

  • Re:Which one? (Score:3, Insightful)

    by filbranden (1168407) on Thursday January 31, 2008 @12:42PM (#22247898)

    But is QNX relevant? I mean, outside the world of embedded devices?

    Even agreeing that it is a nice OS, what is its market share as a desktop or server platform? Certainly less than 1/1000th of what Linux or even BSD have.

    Although microkernel OSs may be "nicer" from a design point of view, on the practical side the monolithical ones are serving us very well.

  • by Anonymous Coward on Thursday January 31, 2008 @12:44PM (#22247930)
    So what? New people are always poking their head in places like Slashdot. Plus the next generation of kids coming into the field.

    There has never been a clear winner in this particular debate so there is nothing wrong with getting a fresh take on things. Maybe something has changed because somebody had a great idea.

    Is/was BeOS using a microkernel? QNX is probably one of the oldest microkernels and they're still around.

    Microkernels are really popular in the small device market while monolithic kernels dominate heavy hardware (servers, workstations, desktops). Because microkernels do well on low-end hardware wouldn't they kick-ass on big hardware? I think if Linux had started with a microkernel and had a similar good design and developer buy-in then it would have been just as popular.
  • by teslar (706653) on Thursday January 31, 2008 @12:51PM (#22248016)
    Exactly - that makes it actually quite an insidious submission, you know... not only will we have a little shoutfest over micro kernels, we can also start complaining about dupes again and in discussions like this, it's only a matter of time before someone puts a vi vs emacs spin on it, since we haven't had that shoutfest for a while either.

    Not two, but three birds with one stone :)
  • by redelm (54142) on Thursday January 31, 2008 @12:54PM (#22248070) Homepage
    Dr Tannenbaum may well be correct that from theoretical considerations a microkernel is superior. But AFAIK after 15+ years of maintaining that, he and his supporters still do not have a useful exemplar.

    I do not doubt they've tried. The interesting information is why it hasn't worked. Unfortunately, people seldom publicise failures of ideas they advocate.

    One very obvious impediment is the existance of priviliged instructions. For example, on x86 the HLT instruction (used to trigger powersavings) is priviliged, Ring0. So the idle thread has to be Ring0, in the kernel. Then there is Linus' point to trampling memory spaces.

    I strongly suspect a microkernel will suffer in security or additional ring transitions/TLB if Ring1 or Ring2 are used. This modern fast hardware, this might be less noticeable.

  • by logicassasin (318009) on Thursday January 31, 2008 @01:00PM (#22248162)
    C'mon Andy... Give it up, you're not going to sway someone with your arguments, no more than you swayed the public to run "free GNU on their 200 MIPS, 64M SPARCstation-5". A lot of the stuff Andy stated in the "Tanenbaum-Torvalds" debate turned out to be just plain wrong.

    - He asserted that x86 architechture was doomed to extinction. Yet the majority of the -planet- uses an x86 machine of some sort as of 2008.

    - He alluded to the Linux kernel being hard to port because of it's ties to x86 architechture, citing how Minix was ported to x86, 680x0, and SPARC. Yet there's hardly a piece of silicon worthy of driving a terminal that Linux hasn't been ported to

    - oh... and the whole "Linux is obsolete" thing was a complete pile of rubbish.
  • by jadavis (473492) on Thursday January 31, 2008 @01:13PM (#22248354)
    Like many other "this vs. that" wars, neither micro- nor monolithic-kernel architectures are best for all tasks.

    Like many other "this vs. that" wars, people will use arguments like yours as a cop-out to avoid any serious analysis of the design tradeoffs and the implications of those tradeoffs.

    It is quite hollow to say that something is not the "best for all tasks," without some analysis as to when it is the best option, or which option has the most promise in the long term (such that it might be a good field of research).

  • by Anonymous Coward on Thursday January 31, 2008 @01:14PM (#22248370)
    He is still absolutely correct when he says that the most of the participants in the debate "don't have a clue what a microkernel is". Even Linus doesn't appear to understand microkernels, but he does a good job of masking his ignorance with vociferousness.
  • by PrescriptionWarning (932687) on Thursday January 31, 2008 @02:01PM (#22249012)
    whats wrong with saying Swing is decent? Agreed its not great, nor the greatest... but it has certainly gotten the job done in many cases wouldn't you say. I mean, FFS, thats what having an opinion is all about!

    Therefore, I call the parent a piece of flamebait.
  • Re:crickets (Score:5, Insightful)

    by dwiget001 (1073738) on Thursday January 31, 2008 @02:44PM (#22249700)
    You forgot... 4) ...? 5) PROFIT!!!
  • Re:Which one? (Score:3, Insightful)

    by DaveV1.0 (203135) on Thursday January 31, 2008 @03:04PM (#22249980) Journal
    At one point, Linux did not have 10% of the features it has now.

    Imagine if the people who developed and adopted Linux had said "It doesn't have 10% of the features that my current O/S has. Why should I bother with it?"
  • by Anonymous Coward on Thursday January 31, 2008 @03:23PM (#22250310)
    Assuming you believe in microkernels more than Minix, why not take a leadership role in GNU/Hurd and get that project going, again?

    Why should he? What exactly is so interesting about GNU/HURD that he can't do with MINIX3 already? The licenses are totally different as well (MINIX 3 is BSDL). Who in their right mind would even go within 10 miles of GNU/HURD at this point anyway?
  • by logicnazi (169418) <logicnazi@g[ ]l.com ['mai' in gap]> on Thursday January 31, 2008 @03:36PM (#22250516) Homepage
    I object to charachterizing this in terms of type safety.

    What you want is a kernel which only runs code that comes with a proof that it doesn't do anything bad (overwrite another process's memory). This could be in terms of type safety it could be some other form of analysis. This doesn't mean it even has to be interpreted (though I suspect most code would be)
  • Re:crickets (Score:4, Insightful)

    by Plunky (929104) on Thursday January 31, 2008 @03:54PM (#22250862)

    OS design, like writing compilers, is an EXPERT task. Knowing the broad principles of how it's done could never be enough. How could it?

    History is full of people who didn't know how to do something but did it anyway. Knowing the broad principles is a good starting point.

    I am one of those people, so I know.

  • by MichaelSmith (789609) on Thursday January 31, 2008 @05:37PM (#22252928) Homepage Journal
    You can have GNU+Linux and you can have GNU+HURD. Apart from GNU they have nothing in common.

    Though since HURD is really GNU it is wrong to talk about GNU/HURD. I am just pointing to that for illustration.
  • by bcmm (768152) on Thursday January 31, 2008 @05:51PM (#22253290)
    You are still confused.

    Linux is a kernel, which typically has GNU userland stuff running on it. HURD is a kernel, albeit a rather strange one. Like Linux, It is designed to run with a GNU userland and any applications which run on modern POSIX OSs like BSD, Linux and Solaris.

    When people talk about running Debian on it, they mean the userspace utilities and applications from Debian, which form a good base for any experimental POSIX OS. It would not be "Debian GNU/Linux", because it would not have any Linux in it at all, not even a little bit. (Linux properly refers just to the kernel, remember?).
    It wouldn't be Linux any more than Gentoo on MacOS X is Linux.
  • Still wrong. (Score:5, Insightful)

    by LWATCDR (28044) on Thursday January 31, 2008 @06:37PM (#22254088) Homepage Journal
    "On the topic of Minix 3, itself.

    It may be a fine instructional OS. Great! That's awesome. I applaud it and have no qualms promoting it in that realm. Beautiful."

    Not really Minix 3 isn't trying a microkernel verison of Linux it is trying to be a more secure and reliable POSIX operating system. It uses a microkernel design to achieve things like self healing and security. Adding those features to Linux would a complete rewrite of Linux.

    "If my info on GNU/Hurd was invalid, then I stand corrected. I assumed that Hurd was the microkernel with Linux (usually Debian) on top. I should have been clearer about that."

    You info is wrong and no it doesn't run Linux on top, and no you can't be clearer because that statment is totally wrong.

    "It's conceptually similar, in many ways, to Xen's hypervisor."
    No it isn't. Xen is a hypervisor it isn't a microkernel. You could host Hurd and or Minx 3 on Xen but you can't host Xen on Minx 3 or Hurd. You don't take an OS and just run it as a service under an microkernel and a hypervisor by it's self doesn't run applications like a microkernal OS does. The only way that they are similar is that they are small compact bits of code the provide some type of abstraction of the underlining hardware.

    "In both cases, Linux isn't the only OS to be hostable on Hurd."
    You don't host any OS on Hurd. You can create servers that offer the same services as a specific OS. Much like Wine does under Linux.

    "On the other hand, Tanenbaum isn't making apples to apples comparisons, otherwise why not take Vista to task, at the same time? Linux is nothing like Minix, so why compare the two in this way? Why not go after Solaris and others, as well?"
    Did you read the article? He wasn't comparing Linux to Minix 3 at all. He didn't go after any one.
    And yes he was critical of all current Operating Systems.

    "Better yet, make a super cool microkernel for Linux, support Xen-style hypervisors, or something. In other words, don't just complain, do something useful, to help out."

    Um.. Gee let's see he is working a POSIX operating system with the goals of making it secure and self healing.... Yea that is so useless. Just for kicks what OS or significant piece of FOSS have you written? How have you helped?

    So you have written a lot with NO UNDERSTANDING of what you are talking about.
    I want some new options for moderation just for posts like this. +5 Ignorant +5 Arrogant!

    Before you start telling Tanenbaum what he should do to be usful you need to learn the difference between a Hypervisor and a Microkernel, the difference between Hurd and Linux, and the difference between someone with an actual education in Computer Science and yourself. Might I suggest you pick up Tanenbaum's text book? It was of great help to Linus.

  • by hlee (518174) on Thursday January 31, 2008 @06:37PM (#22254100)
    Tanenbaum's misunderstood.

    His real interest is in building highly reliable, self healing operating systems. The research he has been involved in happens to demonstrate that microkernels are a good candidate towards achieving that goal, certainly better than a monolithic kernel anyway. He doesn't believe in microkernels per se, but simply as a tool that will help him achieve what is a higher goal - a highly reliable, self healing operating system. Imagine not having to reboot your computer, even when running the worst written applications or device drivers.
  • by Eli Gottlieb (917758) <<moc.liamg> <ta> <beilttogile>> on Thursday January 31, 2008 @08:56PM (#22256032) Homepage Journal
    So basically, it's 9P2000 remade with an extra dose of Unix-bugwards-compatibility.
  • I really like QNX, but how could we possibly create a microkernel that can support virtual memory (ie: swapping)? This problem killed Mach, and most microkernels seem to just avoid the issue so as not to run into the same problem.
  • Re:Design goals (Score:3, Insightful)

    by shmlco (594907) on Friday February 01, 2008 @04:03AM (#22258660) Homepage
    "If your goal is reliability and security..."

    Which brings us to the question of just why those AREN'T goals? Wait, I know. It's so we can get 5 more FPS out of Unreal, right?

    But seriously, even in a transaction-processing server environment, isn't it worth giving up some performance for a system that can't be crashed and can't be hacked?

Simplicity does not precede complexity, but follows it.

Working...