Slashdot Mirror


The Great Microkernel Debate Continues

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.'"

405 comments

  1. I'm not surprised... by Anonymous Coward · · Score: 1

    I'm not surprised people would say such nasty things about microkernels, on Slashdot of all places. I mean, FFS, people here actually think Java Swing is a decent toolkit. Do not rely on us for sensible opinions on software.

    1. Re:I'm not surprised... by PrescriptionWarning · · Score: 1, Insightful

      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.

    2. Re:I'm not surprised... by Anonymous Coward · · Score: 0

      > but it has certainly gotten the job done in many cases wouldn't you say.

      No, I wouldn't say many. And for the few cases it has gotten the job done, it diminished the field of computing rather than added to it.

    3. Re:I'm not surprised... by dave87656 · · Score: 1

      > but it has certainly gotten the job done in many cases wouldn't you say.

      No, I wouldn't say many. And for the few cases it has gotten the job done, it diminished the field of computing rather than added to it. Swing has its pluses and minuses but, if you need to write platform independent code, it's really the best game in town. There are other options (QT) but they have their drawbacks.

      Swing has come a long way, and, if you use it correctly, it works.
  2. Tag this article... by adpsimpson · · Score: 2, Insightful

    ...as flamebait.

    "We've not argued about this for a while. Let's have a shouting match...
    --
    Is crushing a suspect's child's testicles illegal?
    John Yoo: "No, [if] the President thinks he needs to do that."
    1. Re:Tag this article... by vtscott · · Score: 5, Informative

      And the date at the bottom of the article is "12 May 2006". The same article has been linked from slashdot before too. We really haven't argued about this for a while...

    2. Re:Tag this article... by teslar · · Score: 4, Insightful

      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 :)

    3. Re:Tag this article... by Anonymous Coward · · Score: 0

      I think just because the editors saw a II on the article, they thought this will make a good Micro/monolithic masturbatory material for the Slashdot crowd.

    4. Re:Tag this article... by Anonymous Coward · · Score: 1, Insightful

      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.

    5. Re:Tag this article... by mouko · · Score: 5, Funny

      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 a chance. Everyone knows that emacs is for little girls, anyway.
    6. Re:Tag this article... by just_another_sean · · Score: 1

      ... it's only a matter of time before someone puts a vi vs emacs spin on it .../quote
      You mean not everyone has figured out that vi is better then emacs?

      --
      Creationist Textbook Stickers Declared Unconstitutional by CowboyNeal
    7. Re:Tag this article... by Richard+Steiner · · Score: 1

      Those UNIX-centric editors all suck. Ever tried to use one of those on a synchronous UTS terminal? I don't think so... :-) :-)

      --
      Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
      The Theorem Theorem: If If, Then Then.
    8. Re:Tag this article... by Ricochet · · Score: 2, Funny

      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 a chance. Everyone knows that emacs is for little girls, anyway. (Yeah it's flame bait, but I'd like a little fun ...)

      Yeah emacs may be for little girls but this 'little girl' can kick you're butt. Let's take this outside ... owie, owie, bright thing in the sky burns the eyes, it burns the eyes. ;-)
    9. Re:Tag this article... by HexaByte · · Score: 4, Funny

      Well, I think that writing complaints about Slashdot dupes is best done on emacs when your OS has a monolithic kernel, and on vi when using a micro kernel.

      --
      HexaByte - he's a square and a half!
    10. Re:Tag this article... by fbartho · · Score: 2, Funny

      If you had used emacs you wouldn't have messed up that quote block!

      --
      Gravity Sucks
    11. Re:Tag this article... by mustafap · · Score: 1

      >"We've not argued about this for a while. Let's have a shouting match...

      Would you like a 5 minute argument, or the full half hour?

      --
      Open Source Drum Kit, LPLC deve board - mjhdesigns.com
    12. Re:Tag this article... by Anonymous Coward · · Score: 0

      Were you hoping that would be funny?

    13. Re:Tag this article... by Anonymous Coward · · Score: 0

      kick you're butt

      "your".

  3. crickets by 192939495969798999 · · Score: 4, Funny

    And now, cue thousands of replies from people who have personally created microkernels and have sensible observations to make on their validity as a base for an OS...

    (crickets)

    --
    stuff |
    1. Re:crickets by trolltalk.com · · Score: 3, Funny

      And now, cue thousands of replies from people who have personally created microkernels and have sensible observations to make on their validity as a base for an OS...
      ... Linus Torvalds ...
    2. Re:crickets by Rycross · · Score: 2, Insightful

      Linus Torvalds created a microkernal based OS? Which one?

    3. Re:crickets by Dancindan84 · · Score: 5, Funny

      Yeah. Slashdotters are being asked to:
      1) RTFA
      2) Have first hand knowledge of the subject
      3) Make a reasoned, non-biased post/article on the subject

      Talk about a dead end.

      --
      "Always forgive your enemies; nothing annoys them so much." - Oscar Wilde
    4. Re:crickets by Anonymous Coward · · Score: 0

      I don't think he has made any microkernel. The only kernel I have heard he has made ever is Linux.

    5. Re:crickets by Tribbin · · Score: 1

      Anyway; for most people the question is about existing-product A or existing-product B being better for the job it must perform.

      --
      If you mod this up, your slashdot background will turn into a beautiful sunset!
    6. Re:crickets by Dread+Roberts · · Score: 5, Funny

      Well, the Linux kernel used to be smaller...

    7. Re:crickets by electricbern · · Score: 1

      Wait! That wasn't on the registration EULA. Darn those small letters.

      --
      alias possession='chmod 666 satan && ls /dev > il && tail daemon.log'
    8. Re:crickets by operagost · · Score: 1

      Don't like to read the articles, eh?

      --

      Gamingmuseum.com: Give your 3D accelerator a rest.
    9. Re:crickets by OrangeTide · · Score: 3, Interesting

      Why would I create a microkernel when they so obviously suck?

      It's not hard to write a monolithic kernel that screams faster than something like Mach. but not all microkernels are like Mach. But even commercial microkernels like QNX have a lot of overhead for certain applications (like filesystem I/O).

      It is possible to have a fast microkernel if you completely discard the original concept of a microkernel and start over with a fresh design. L4 is quite fast for example, even if the whole Clan thing is a bit weird to me.

      Oh you don't get to count something as a microkernel if it is a monolithic kernel running the important bits and a microkernel running the less performance sensitive bits. (Mac OS X, Windows NT, etc)

      --
      “Common sense is not so common.” — Voltaire
    10. Re:crickets by Sique · · Score: 1

      Clans are very easy. Basicly the Clan Lord is one thread that does the protection for all the other threads within his clan.

      --
      .sig: Sique *sigh*
    11. Re:crickets by Anonymous Coward · · Score: 0

      Klan thing?

      Who wrote that OS, Robert Byrd?

    12. Re:crickets by dwiget001 · · Score: 5, Insightful

      You forgot... 4) ...? 5) PROFIT!!!

    13. Re:crickets by Anonymous Coward · · Score: 0

      The one that is going to own the desktop this year! Oh! Yeah Baby!

    14. Re:crickets by I8TheWorm · · Score: 1

      Why would they bother to do that when they can simply search /. posts from 2006 and c/p them here.

      Gah, that merely points out you forgot 4) search /. for prior art.

      --
      Saying Android is a family of phones is akin to saying Linux is a family of PCs.
    15. Re:crickets by Zollui · · Score: 1

      It's a good point and not funny at all. I spoke to a guy recently who told me he knew how to write a compiler... turns out he had done a one year's masters degree in IT over 2 decades ago. Needless to say, he couldn't tell me anything about the process of writing a compiler apart from that it involved parsing expressions, putting them through a shunting algorithm and checking syntax. I believe this is exactly the sort of 'informed' comment that will be attracted by a discussion about operating system design. 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?

    16. Re:crickets by Anonymous Coward · · Score: 0

      Yeah. Citizens are being asked to:
      1) Study the issues
      2) Learn the candidates stands on the issues
      3) Make a reasoned, non-biased vote

      Talk about a dead end.

    17. Re:crickets by emilper · · Score: 2, Interesting

      Compared to other supposedly more popular OSes, Linux is a pico-kernel (yes, I know size is not what "microkernel" is about). Anyway, with user-space drivers and fuse, doesn't the border between microkernels and monolithic kernels become a little blurred ?

    18. Re:crickets by Plunky · · Score: 3, Insightful

      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.

    19. Re:crickets by Zollui · · Score: 1

      That's fair enough. I have respect for all achievements where a man has pushed himself beyond his former limits. I am myself struggling with my little programming project which many here would probably find easy :).

      But seriously, designing and coding an OS is a very advanced task. You do need to learn a lot beforehand, before you can even dream about doing it. That's great if you really can do it, but the guy I met was simply a lazy guy who pretended he knew something when he clearly only ever had held a shaky grasp of the broad principles. It's that sort of attitude - which he held - which is very common, isn't helpful and doesn't contribute anything worthwhile.

    20. Re:crickets by ^switch · · Score: 2, Interesting

      It is possible to have a fast microkernel if you completely discard the original concept of a microkernel and start over with a fresh design. L4 is quite fast for example, even if the whole Clan thing is a bit weird to me. Most implementations of L4 no longer to the Clan's and Chief's IPC model which I believe you are referring to. In fact, I haven't seen an API with this IPC model for almost 10 years. L4 is being actively developed and researched by many groups -- http://www.ok-labs.com/, http://www.ertos.nicta.com.au/, http://l4ka.org/ and, as such, is a good microkernel to take a look at if you're interested to see what a modern microkernel does.
    21. Re:crickets by savuporo · · Score: 2, Informative

      There are quite a few. FreeRTOS, eCos, RTEMS, AvrX etc, some of them commercially quite successful. The proprietary counterparts like Nucleus are definitely very successful and in wide use.
      What, you have never heard of them ? Well, there are other widely used computing platforms besides personal computers.

      --
      http://validator.w3.org/check?uri=http%3A%2F%2Fwww.slashdot.org Errors found while checking this document as HTML5!
    22. Re:crickets by 192939495969798999 · · Score: 1

      I dunno, I know the broad principles of fireworks (explosives + chemicals + paper tube + fuse), but I really wouldn't be comfortable "launching" a homemade one.

      --
      stuff |
    23. Re:crickets by OrangeTide · · Score: 1

      yea. but it's encoded as bitfields in various numbers. and it doesn't really have an equivalent in the Unix world so it seems a bit mysterious.

      --
      “Common sense is not so common.” — Voltaire
    24. Re:crickets by OrangeTide · · Score: 1

      It's in all the specs, so I assume I am supposed to implement it when I write an L4. I had no idea it was just vestigial and people weren't really using it anyways. Do you have a link to verify that? It would be appreciated.

      --
      “Common sense is not so common.” — Voltaire
  4. Which one? by filbranden · · Score: 0

    I think it would raise the level of discussion if people making such postings would first try a microkernel-based operating system

    Which one? I don't know of any stable microkernel-based OS. Is there one? Is there one with at least 10% of the features that Linux and BSD based OSs have?

    1. Re:Which one? by Anonymous Coward · · Score: 5, Informative

      QNX. www.qnx.com. Best OS ever. Very long life support (qnx 4.x last patch was issued 17yrs after it was released). Now it is free for non-commercial use, with source.

    2. Re:Which one? by Anonymous Coward · · Score: 0

      Windows NT was NOT a microkernel based OS.

    3. Re:Which one? by JebusIsLord · · Score: 1

      RTFA

      --
      Jeremy
    4. Re:Which one? by filbranden · · Score: 2, Insightful

      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.

    5. Re:Which one? by macs4all · · Score: 1

      Forgive me if I'm wrong; but isn't OS X considered a Microkernel-based OS?

    6. Re:Which one? by Anonymous Coward · · Score: 0

      Windows NT (pre-4.0) and (especially) Windows CE before 6.0 (and all current versions of Windows Mobile is based on Windows CE 5.x) had many signs of microkernel architecture(CE allowed user-space drivers to go kernel-mode if need arises). So at least some elements of microkernel OSes are in wide usage today.

      p.s.CE 6.0 moved it's most frequently used services to be fully-kernel space for performance reasons.

    7. Re:Which one? by mrsbrisby · · Score: 5, Interesting

      NT (like OSX) has a microkernel, but the operating system isn't just the microkernel. Most of OSX (for example) actually runs on UNIX which runs as a single application of the microkernel. NT also has an enormous number of kernel-entry points which means that it too is a monlithic-kernel-based system that happens to run on a microkernel.

      A real microkernel-based system will have a lot of the userland facilities designed to take advantage of message passing and will probably look more like HURD or Squeak than it will like NT or NeXT. QNX and VxWorks are the only successful microkernel-based systems that I'm aware of, and frankly both of them are losing big to Linux, so we might have to say were the only successful systems in the future...

    8. Re:Which one? by LizardKing · · Score: 1

      Nope, Windows NT hasn't been a microkernel based OS since 1996. Version 3 (3.1 according to the article, but I think it applies to the entire 3 series) was microkernelish, but version 4.0 removed the microkernel aspects. This change was to make performance, particularly for graphics, better by allowing drivers direct access to the hardware, but it buggered up the stability no end.

    9. Re:Which one? by Anonymous Coward · · Score: 0

      QNX?

      It's been a few years since I used QNX, so take this with a grain of salt.

      I've used QNX a fair bit. It's pretty nifty, though hardware support and software support were sorely lacking last time I used it (BASH wouldn't compile without modifications). I like the interface, performance is decent, and it can be nice to have a system fail in pieces (e.g., the networking stack borked once and it was possible to restart it without rebooting).

      Overall, I would say that QNX needs to work on building a stronger community. With some more work, it could be a strong competitor for Linux and Mac OS X. However, the company makes their money, mostly with embedded and mission-critical systems, so community building isn't their highest priority.

      IIRC, they did open source the kernel recently (not sure of the license, though).

    10. Re:Which one? by sundarvenkata · · Score: 1

      But you see it is not as pure as the purists would expect it to be.

    11. Re:Which one? by blackchiney · · Score: 2, Informative

      You are partially correct. The mach kernel is one of the first implementations of microkernels. OS X is derived from this as well as the mklinux experiment of the late 90s. But just like the difference between CISC and RISC processors has been on a collision course, monolithic and microkernels have picked the best features of the other. OS X is based on the XNU kernel. A mach/monolithic hybrid. The performance of pure microkernels was just never up to the task.

    12. Re:Which one? by TheRaven64 · · Score: 2, Interesting

      The most popular microkernel these days is Xen. It actually has more system calls than classic UNIX, but device drivers and filesystems are all run outside of ring 0 and most of the system calls are direct equivalents to privileged instructions. It implements shared memory for IPC and recommends a lockless ring buffer for message passing.

      --
      I am TheRaven on Soylent News
    13. Re:Which one? by TheCoelacanth · · Score: 2, Interesting

      It is very misleading to call OS X microkernel based. It does run on a microkernel, but all of the normal drivers run in kernel mode so it is not a true microkernel.

    14. Re:Which one? by LWATCDR · · Score: 4, Interesting

      QNX is relevant. Is it popular on the desktop? Not really but then you could say is BSD relevant? Is it popular on the desktop compared to Windows, MacOS/X or even Linux?
      Is Linux relevant on the desktop? If you don't count duel boot machines how many Linux desktops are out there?

      "Although microkernel OSs may be "nicer" from a design point of view, on the practical side the monolithical ones are serving us very well."
      I have heard that argument before except it was about Unix. MS-DOS was so much faster and used less ram and drive space than Unix did.
      To just dismiss microkernels because monolithic kernels are good enough is silly.

      Actually Linux is starting to take some ideas from Microkernals. FUSE is a Microkernel idea. Moving more device drivers into userspace is also a very good idea. It means that security issues with a driver are less likely to root the OS or take out the OS with a crash.
      Stablity and security are important aren't they?

      But back to your comment yes QNX is relevant. It is relevant because it proves that you can have a small, fast, and stable microkernal OS.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    15. Re:Which one? by Anonymous Coward · · Score: 0

      Well, seeing that Linux is not a deterministic OS, which are used in real-time, mission-critical system, you are wrong. Linux is NOT a replacement for VxWorks, Integrity, etc. You have not idea what you are talking about!

    16. Re:Which one? by metamatic · · Score: 2, Funny

      I'm guessing that Andy Tannenbaum might want you to take a look at MINIX 3.

      That's just a wild stab in the dark, though.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    17. Re:Which one? by e4g4 · · Score: 4, Informative

      OS X, strictly speaking, is a hybrid kernel. Essentially, NeXT mashed together Carnegie Mellon's microkernel Mach with BSD (a monolithic kernel) - yielding the overwhelmingly originally named XNU kernel. (X is Not Unix). So in short - yes , OS X is a microkernel based OS, but is just as much a monolithic kernel based OS.

      --
      The secret to creativity is knowing how to hide your sources. - Albert Einstein
    18. Re:Which one? by rbanffy · · Score: 1

      I distinctly remember Microsoft announcing it would be microkernel based back when microkernels were the future and announcing a microkernel-based OS seemed fashionable. NT would be able to present an OS/2 personality to OS/2 programs and a POSIX personality for POSIX-compliant programs and future versions could have additional personalities (the shipping product was allegedly capable of doing it but with limitations so severe it was never really allowed to).

      In the end, the product they shipped had little resemblance to what was touted before and it is now apparent most of the "trophy-features" that were dropped before shipment were seemingly there to prevent people from considering alternatives (like Unixes or IBM's flavour of OS/2) during NT's development.

      This pattern was repeated over and over again on every Microsoft OS launch.

    19. Re:Which one? by macs4all · · Score: 3, Interesting

      So perhaps, like with launchd, Apple (who really does have decades of *NIX experience. Think A/UX) has actually come up with a third, and obviously viable, option: XNU.

      Therefore, a new question suggests itself: Do we really have to have a three-way debate? Micro v. Mono v. XNU (hybrid)???

    20. Re:Which one? by jeremyp · · Score: 2, Informative

      Actually, there is no microkernel in OS X. Everything in the operating system runs in the same kernel address space. Although individual subsystems within OS X can talk to each other with Mach messages (and also user space) they can also see each other's memory. Also, the VFS subsystem system and the network stack were lifted direct from BSD (although as of 10.4 they are much modified).

      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
    21. Re:Which one? by diegocgteleline.es · · Score: 4, Interesting

      I hate when people says "NT/OS X are microkernels but don't work like microkernels", or they call them "hybrid kernels"

      Either you're microkernel or not. Either you run filesystems and network stacks in separated, isolated processes and address spaces, or you don't. NT and OS X don't run anything of that as a separated process, which was the whole point of having a microkernel. They run it in the same process space than everything else. Just like like linux, solaris, windows 9x. In other words, they aren't microkernels.

      Yes, they have source-level design abstractions inherited from microkernels to make the design more modular. So do Linux, Solaris or any other decent monolithic kernel, even if they didn't inherited it from microkernels. Microkernel people wasted their years saying that a microkernel where needed to achieve "modularity", when the fact is that "modularity" in the design of software is not something that you can achieve only by running things in different process spaces. After 20 years they haven't realized that many parts of linux or solaris are more modular than their equivalents of minix or hurd.

    22. Re:Which one? by rcpitt · · Score: 1

      Actually, even more - think Lisa + Xenix

      --
      Been there, done that, paid for the T-shirt
      and didn't get it
    23. Re:Which one? by Schraegstrichpunkt · · Score: 1

      Moving more device drivers into userspace is also a very good idea. It means that security issues with a driver are less likely to root the OS or take out the OS with a crash.

      It depends on the driver. For a filesystem driver that's not serving stuff like /bin/login, that's true. For other hardware devices, you need a hardware architecture with an I/O MMU, or the driver can just instruct some device to do DMA into some sensitive region of memory.

      But yeah, moving stuff out of the kernel is the way forward in terms of security, and that's pretty much the definition of a microkernel architecture.

    24. Re:Which one? by David+Off · · Score: 1

      > NT (like OSX) has a microkernel

      erm, are you sure? I believe OSX is based on Mach 2.5 which is derived from BSD Unix and it is not uKernel based. Mach 3.0 and OSF/1uK are microkernel variants. I used to develop Mach 3.0 at CMU and the OSF but I will admit it is about 15 years since I've done any uK work. OSF/1uK was not taken up commercially because it was 8-10% slower than OSF/1 with the similar functionality. We had 3 OS personalities ported to Mach including OSF/1 Unix. Incidentally the OSF considered using NT as the uK layer with OSF/1 sitting atop, that would have been an interesting development.

      There were aspects of OSF/1 uK that were interesting but were not followed up commercially. For example you could build clusters on cheap hardware with certain functionality - like a RAID driver, running on certain uKs and not others.

      Still maybe 2008 is the year of the microkernel on the desktop?

    25. Re:Which one? by macs4all · · Score: 1

      The Lisa ran Xenix??? I did not know that. Documentation, please!

    26. Re:Which one? by LWATCDR · · Score: 1

      Over all I do agree with you.
      I have never been into being in too one solution is always the right solution.
      Performance is really becoming less and less of an issue but I can see how some device drivers might need to be in the kernel for performance reasons. As was in the article why should a bad scanner, printer, or mouse driver crash a system?
      I am not even saying that Microkernels are the best solution. I am just saying that to dismiss the comments of a man that really did write the book on OS design is just dumb.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    27. Re:Which one? by mr_mischief · · Score: 1

      There are worst-time patches and CPU binding patches for Linux. Not only that, but many embedded applications are not, in fact, in need of an RTOS at all. Linux won't displace QNX, LynxOS, and VxWorks completely, but to say it's not making gains in the embedded space is either disingenuous or ignorant of the facts.

      It'd also be pretty big news to, for example, MontaVista, Nokia, Cisco, and the BlueCat folks that embedded Linux isn't making any sales.

    28. Re:Which one? by diegocgteleline.es · · Score: 2, Informative

      Calling Xen a microkernel is wrong. Yes, it provides "isolation", and it has that in common with microkernel, but isolation is not something that was invented by microkernels, so i don't see why we should call "microkernel" to anything that provides isolation. AFAIK Xen doesn't provide a way to create subprocesses to run functionality on it, it doesn't provive a real "message passing system"...i'd call it "virtual hardware", but not "microkernel".

    29. Re:Which one? by rubycodez · · Score: 1

      not the best OS ever for general desktop and server use, realtime OS have limitations of what they can guarantee. Why Andy T. even bothers to mention all those embedded and military realtime OS as somehow bolstering his case is beyond me. For any claim of general purpose there's HURD and MINIX-3, and that about says it all.

    30. Re:Which one? by Anonymous Coward · · Score: 1, Informative
    31. Re:Which one? by supermank17 · · Score: 1

      Isn't VxWorks actually a monolithic kernel? I've developed a fair amount on both VxWorks and QNX, and while QNX is most definitely a microkernel, I don't think VxWorks is. Wikipedia seems to agree: http://en.wikipedia.org/wiki/Vxworks.

    32. Re:Which one? by Iron+Condor · · Score: 3, Interesting

      But yeah, moving stuff out of the kernel is the way forward in terms of security, and that's pretty much the definition of a microkernel architecture.

      I'm gonna get tarred and feathered for this but .... this is of course exactly what Vista is doing: "Hey, wouldn't it be better if we stopped letting any odd piece of software talk directly to the hardware in kernel mode? If kernel mode was reserved to ... y'now, ... the kernel?" So instead they exposed a (perfectly reasonable) API instead. And the only cost is that you need a new device driver for any old hardware. Like that 20-year-old joystick.

      Oh, it also makes it a lot harder to get around OS restrictions on illegal content access. No "directly-talking-to-the-CD-drive" any more. Which means in /.-land "built-in DRM". Which it isn't, of course, but could certainly be seen that way.

      Is it "better" for stuff to get moved out of the kernel? Well, "better" for whom?

      --
      We're all born with nothing.
      If you die in debt, you're ahead.
    33. Re:Which one? by cromar · · Score: 1

      this is of course FINALLY what Vista is doing

      There, fixed that for you ;)
    34. Re:Which one? by jonas_jonas · · Score: 2, Funny

      I'm gonna get tarred and feathered for this but...
      no, but tarred and gzipped? ;-)
    35. Re:Which one? by 0racle · · Score: 1

      xnu is based on Mach 3 but it is not a microkernel http://www.kernelthread.com/mac/osx/arch_xnu.html

      --
      "I use a Mac because I'm just better than you are."
    36. Re:Which one? by DaveV1.0 · · Score: 2, Insightful

      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?"

      --
      There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
    37. Re:Which one? by mrsbrisby · · Score: 1

      Vxworks "processes" can see each others memory. I don't think hardware isolation is a requirement of a microkernel.

    38. Re:Which one? by logicnazi · · Score: 3, Interesting

      What's your problem. I mean saying something is a hybrid kernel communicates what it is. No one who has a clue thinks it means they are split into separate processes or anything.

      In fact my big pet peeve is that the microkernel people don't distingush between source level abstractions and process seperation. I mean Tanenbaum's arguments here pretend like the better abstractions of message passing and no shared data structures are an argument for microkernels (in the sense of true process isolation) but they are only really an argument for certain abstractions in the source.

      Anyway all kernels use some source abstractions but presumably the reason to call some kernels 'hybrid' is that their abstractions are more robust and more throughly resemble the abstractions you would use in a microkernel. If you don't like the word tell us how we should describe microkernel code that someone stripped the process isolation from?

      --

      If you liked this thought maybe you would find my blog nice too:

    39. Re:Which one? by mallardtheduck · · Score: 1

      Having all services running in the same address space does not disqualify a system from being a microkernel. Otherwise it would be impossible to implement one on hardware that doesn't support virtual addressing.

      Since Minix pre-v3 could run on the original 8086, which lacks any form of virtual addressing, memory protection or even privelege levels, it is obviously possible to implement a microkernel on such a system.

      Thus, Mac OS X/Darwin could be considered a microkernel-based system as could Windows NT to a certian degree.

      There is no definate boundary between a microkernel and a monolithic kernel, it is more of a scale where a system can be more microkernel-like or more monolithic.

    40. Re:Which one? by The+One+and+Only · · Score: 1

      Apple (who really does have decades of *NIX experience. Think A/UX)

      I don't know if the A/UX folks are still at Apple or if their experience is relevant. I do know that Apple have decades of *NIX experience from NeXT, which has been working with *NIX since 1985, and which took over Apple when Apple bought them out in 1997.

      --
      In Repressive Burma, it's not just your connection that dies. slashdot.org/comments.pl?sid=314547&cid=20819199
    41. Re:Which one? by Surt · · Score: 1

      OT: Your link to make ns/cs default in firefox is a nice idea, but I can't imagine them going along with it. For inexperienced users, that would essentially mean such a firefox version wouldn't work on most sites on the internet. Firefox would lose users in drove.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    42. Re:Which one? by LWATCDR · · Score: 1

      So what you are saying is that bad security is good for the user?
      Microkernel doesn't mean DRM. BTW Vista isn't a microkernel and it seems to have a ton of DRM.
      All it takes is signed drivers and an MMU to make DRM just about as secure on a monolithic kernel as a microkernel.
      So that really isn't an issue.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    43. Re:Which one? by rs79 · · Score: 1

      "Actually, even more - think Lisa + Xenix "

      And if you start now you should be done by next week.

      Jesus those things were slooooooow.

      --
      Need Mercedes parts ?
    44. Re:Which one? by Actually,+I+do+RTFA · · Score: 1

      If you don't like the word tell us how we should describe microkernel code that someone stripped the process isolation from?

      Monolithic?

      --
      Your ad here. Ask me how!
    45. Re:Which one? by jonbryce · · Score: 1

      NT hasn't really been a microkernel since the display drivers were moved to kernel-space in NT4. That makes it less microkernel than linux - X runs in user-space.

    46. Re:Which one? by MichaelSmith · · Score: 1

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

      I know somebody who worked on a taxi dispatch system which entirely used QNX. Call centre workstations, servers, the lot.

    47. Re:Which one? by giminy · · Score: 1

      A real microkernel-based system will have a lot of the userland facilities designed to take advantage of message passing and will probably look more like HURD or Squeak than it will like NT or NeXT. QNX and VxWorks are the only successful microkernel-based systems that I'm aware of, and frankly both of them are losing big to Linux, so we might have to say were the only successful systems in the future...

      There are quite a few more microkernels in the world that are used with much success, typically in embedded systems (though some not). L4 and Integrity are also quite popular these days. Integrity powers the F-22 Raptor fighter plane as well a *lot* of avionics platforms and it is making big headway in security systems. Just as an example. There are more commercial microkernels in wide use. Read the article to find out which ;-).

      It's also a bit hard to say whether microkernel based systems are losing ground to embedded linux. I can think of quite a few places in which VxWorks and Integrity have displaced Linux where Linux had been deployed on commercial devices already (routers, control systems, and medical devices, mainly).

      And to pre-empt the "well, 3-4 microkernels is hardly a successful number compared to monolithic kernels" argument, answer me this: how many monolithic kernels are commonly used? I'd argue 2 or 3 (Linux, BSD, I guess Solaris if you don't consider it part of the BSD family). So the 3-4 successful microkernels, 2-3 monolithic kernels, and 2 hybrid systems account for probably 99% of deployed kernels. As for actual percentages of each deployed type, it would probably be something like 20% hybrid, 40% microkernel, and 40% monolithic kernel (yes, these numbers are entirely made up, but given the plethora of embedded devices that run either Linux or some microkernel, I think they outnumber Windows and mac installations by a fair margin ;-)).

      Reid
      (Who has used and developed on the Hurd, L4, OSX, NT, Linux, and Integrity, and who did RTFA).

      --
      The Right Reverend K. Reid Wightman,
    48. Re:Which one? by Anonymous Coward · · Score: 0

      I may be mistaken, but are you talking about this? http://en.wikipedia.org/wiki/Kernel_Patch_Protection

      And semi-offtopic to that issue, I find that MS doesn't understand a very simple rule in security, "Implementation is just as important as theory". So even though I hear about positive initiatives like UAC and MinWin, a step in the right direction doesn't mean that you're at the destination*.

      *Of course, in the case of Windows, backwards-compatibility undermines security, so I ignore it, which oversimplifies things.

    49. Re:Which one? by theonetruekeebler · · Score: 1

      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?" That's more or less exactly what they said. A lot of people looked at that 10% number and breathed a sigh of relief because the 90% was mostly dross. Then they answered that "Why should I bother?" question with "So we can get it right this time.
      --
      This is not my sandwich.
    50. Re:Which one? by metamatic · · Score: 1

      They could make the default "dangerous (allow all)".

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    51. Re:Which one? by Verte · · Score: 1

      You can provide the kernel interface from a userspace daemon and virtualise the remaining few instructions = instant backward compatibility.

      --
      We at slashdot are scientists, specialists and kernel hackers. Your FUD will be found out.
    52. Re:Which one? by David+Off · · Score: 1

      I'm just wondering whether that is really true. As I recall they are Mach 2.5 based and Avie then back ported some of the development work on Mach 3.0. Mach 3.0 is a uK architecture so to say that OSX is Mach 3.0 but not a uK doesn't make sense to me.

    53. Re:Which one? by Anonymous Coward · · Score: 0

      It is a microkernel core, but so much of the programming interfaces revolve around a single service that it's a bit odd to call it a Microkernel, just as it's a bit odd to call it UNIX. In essence, this means you can call anyone who summarizes the Apple design while praising them an idiot. It's a bit like the "debate" between RISC and CISC. It has no meaning anymore. x86 is implemented as a massively strange translation and RISC system, and SPARC and friends found their way to things like superscalar execution etc. It's fun to continue the debate from an academic standpoint, but these are viewpoints firmly rooted in time gone by. Similarly, FUSE brings far and away the most interesting part of microkernels to Linux, and without sacrificing the ability to run file systems closer to the system and faster.

    54. Re:Which one? by Surt · · Score: 1

      Ah, so the advantage would be that those of us who do use it don't have to install it? And I guess we'd have more opportunity to train other users?

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    55. Re:Which one? by metamatic · · Score: 1

      Right, that's it exactly, I think that a decent UI for cookie and script permissions should be a core part of the product.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    56. Re:Which one? by naasking · · Score: 1

      If you don't like the word tell us how we should describe microkernel code that someone stripped the process isolation from?

      Isn't it obvious? It's monolithic. If there is no isolation, there is no protection, thus, it's not a microkernel.

    57. Re:Which one? by jacquesm · · Score: 0, Troll

      they should GPL the source but they're pretty much stuck in licensing land as it is.
      If they did that QNX would make a huge jump forward, say a 'quantum leap' ;)

  5. Which one? by RVT · · Score: 1

    There are not to many micro kernel based os around for general use.
    I am sure somebody will point out Windows NT...

  6. Microkernels are the future by Midnight+Thunder · · Score: 3, Insightful

    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.

    --
    Jumpstart the tartan drive.
    1. Re:Microkernels are the future by timeOday · · Score: 1
      Microkernels are the future and always will be. If anything, you might see some more driver code moved into userspace in existing popular kernels, but as a per-driver design choice rather than some surprise explosion in market share by Hurd.

      Next up, an enthralling debate about RISC vs CISC.

    2. Re:Microkernels are the future by Col.+Klink+(retired) · · Score: 1

      > Microkernels are the future and always will be.

      Is that another way of saying they're vaporware? Just like Duke Nukem will always be released "in the future"...

      --

      -- Don't Tase me, bro!

    3. Re:Microkernels are the future by jadavis · · Score: 1

      One of the main issues with microkernels is that of performance,

      Do you have information that a microkernel is inherently slower than a monolithic kernel?

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    4. Re:Microkernels are the future by peragrin · · Score: 3, Informative

      while you are quite correct the question becomes why should the CPU handle those instructions? It is like USB 2.0 versus firewire 400. Firewire while "slower" burst rate has a higher steady rate precisely because it offloads some instructions.

      SCSI, firewire are examples of good tech working for you. The CPU should output instructions to devices smart enough to be able to work on their own. Leaving more cycles available to do things that actually matter.

      --
      i thought once I was found, but it was only a dream.
    5. Re:Microkernels are the future by diegocgteleline.es · · Score: 1

      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.

      One of the main problems with microkernels is that people who defends them is somehow obsessed with kernels. You know, a system is not just a kernel. Isolation is NOT bad...but the fact is that it's ALREADY happening: when a program crashes your kernel doesn't, when a graphic program crashes your X.org and gnome programs do not...etc etc.

      Yes, a crash in a monolithic kernel will bring the whole system down. And how many people cares? Almost nobody. The fact is that if you look a computer from a "systemic" point of view, the kernel with all its drivers is just a SMALL part of the system - compare it with gnome, X.org, openoffice, firefox...it has a lot of sense to consider it as "a single thing" rather than "a group of different things" - and design it accordingly.

      Why the microkernel people never tries to look at everything else which is not a kernel, and try to apply their principles there first, just to try? Take a look at a program - openoffice, for example. ldd /usr/lib64/openoffice/program/soffice.bin tells me it's using 60+ libraries. And a single crash in one of those libraries, even in stupid libraries that are not doing anything important, can take the WHOLE openoffice program down! Like monolithic kernels, today's userspace programs are "monolithic" things that could be divided in different isolated parts.

      Why don't microkernel people try their ideas there? Why don't try microkernel people to give us better userspace environments? Maybe because they know it's a waste of time? Or maybe because they're obsessed with kernels? Of course, nobody listens them because monolithic kernels work very well, just like nobody listened them when they said in the 80's that monolithic kernels would not be mainteinable in the "future"

    6. Re:Microkernels are the future by Anonymous Coward · · Score: 0

      Microkernels: the future, since 1992.

    7. Re:Microkernels are the future by doti · · Score: 1

      Yes, it is.

      --
      factor 966971: 966971
    8. Re:Microkernels are the future by grumbel · · Score: 1

      the kernel with all its drivers is just a SMALL part of the system True, but you also have to keep in mind that it is a small part of the system because its a monolithic. You wouldn't want to do Gnome-VFS or KDEs KIO in kernelspace in a monolithic kernel, since they might crash quite a lot more then say a ext3 filesystem, they also might depend on a lot of external libraries, which you don't really want in kernel space either. With a microkernel system on the other side all that stuff could be implemented "into" the kernel, with all the benefits from a userspace implementation, but in addition all the benefits of proper integration (i.e. all apps have access to the same filesystem instead of just those that link to libgnome-vfs).

      That said, this issue still isn't all that good of an argument for microkernels, since monolithic kernels can just implement a few hooks for userspace programs to offer things like userspace filesystems and in case of Linux they have.
    9. Re:Microkernels are the future by operagost · · Score: 1

      I guess you didn't read the article, either.

      --

      Gamingmuseum.com: Give your 3D accelerator a rest.
    10. Re:Microkernels are the future by AKAImBatman · · Score: 4, Informative

      Depends. Ever hear of FUSE? It's been showing up in quite a few distros for the capabilities it buys by running outside of kernel space. It's become so important, that it has been ported to BSD, Solaris, and Mac OS X.

      What does it do? Why, it's a monolithic driver that provides an interface to support userspace filesystem drivers. i.e. A microkernel in practice, if not in definition. Ergo, the grandparent's point about a slow migration.

    11. Re:Microkernels are the future by fishbowl · · Score: 1

      You claim that memory protection isn't possible in a monolithic kernel?

      --
      -fb Everything not expressly forbidden is now mandatory.
    12. Re:Microkernels are the future by Anonymous Coward · · Score: 0

      But isn't handling my data exactly what "actually matters"? An idle CPU does me no good.

      As for "offloading some instructions", there are also hardware implementations of TCP/IP, too. Linux doesn't use them. They're usually slower, and impossible to fix when (not if) a bug is found. I've also seen hardware for JVM, floating-point, and graphics come and go. Unless you're playing Doom5 with all the effects maxed out, the cheapest integrated graphics on the market is *fine* (and 1000 times better than the most expensive card from a decade ago).

      This debate has been going on so long we named it back in 1968. Don't think you can settle it by saying 'SCSI, Firewire good'.

    13. Re:Microkernels are the future by the_humeister · · Score: 1

      while you are quite correct the question becomes why should the CPU handle those instructions?
      cost

    14. Re:Microkernels are the future by logicnazi · · Score: 1

      I think your POV is a little desktop centric. I agree that there is limited argument for the sort of fault isolation in the desktop that Tanenbaum makes such a big deal about. Ultimately if it crashes the apps the system might as well go down.

      On the other hand if you are writing an OS for ATMs, for flight avionics, for monitoring a nuclear reactor or a host of other purposes this sort of reliability makes great sense. The difference being (of course) that the applications you expect to run on these OS's will themselves be programed to deal with failures but no one is going to write all your productivity GUIs to recover if the disk subsytem goes down (taking buffers with it).

      It's just a technique for achieving a certain kind of reliability. Arguing about which is better is like arguing whether linked lists are better than B-trees. They are both useful ideas but in different applications.

      If you are interested in the desktop then the answer is probably going to be the same thing we have already seen happening. Kernels for desktop systems will adopt some of the abstractions from microkernels and seperate out some things into other processes but will also keep shared data structures and other monolithic features.

      --

      If you liked this thought maybe you would find my blog nice too:

    15. Re:Microkernels are the future by julesh · · Score: 2, Informative

      Depends. Ever hear of FUSE? It's been showing up in quite a few distros for the capabilities it buys by running outside of kernel space. It's become so important, that it has been ported to BSD, Solaris, and Mac OS X.

      What does it do? Why, it's a monolithic driver that provides an interface to support userspace filesystem drivers. i.e. A microkernel in practice, if not in definition. Ergo, the grandparent's point about a slow migration.


      Unfortunately, the problem with FUSE is that it's painfully slow. And yes, I do know what I'm talking about, having written drivers for it myself.

    16. Re:Microkernels are the future by jonbryce · · Score: 1

      Most of the ATMs I've seen run on a stripped down version of either NT4 or Windows 2000. These days, with all the bugs ironed out, they seem to work just fine.

    17. Re:Microkernels are the future by Eli+Gottlieb · · Score: 1, Insightful

      So basically, it's 9P2000 remade with an extra dose of Unix-bugwards-compatibility.

    18. Re:Microkernels are the future by mrv20 · · Score: 1

      I've been noticing the opposite - an increasing number of ATMs with windows error dialog boxes visible on the screen.

      It could be because the screens are also getting brighter so it's easier to see than an out-of-order message on one of the older models, but at least with those you got the impression that the ATM software had noticed the fault - when the interface appears to be carrying on running behind an error message it comes across as a bit schizophrenic.

      --
      "Algebraical symbols are used when you don't know what you are talking about" - BCS
    19. Re:Microkernels are the future by TummyX · · Score: 1

      That's true, but it does make it a lot easier to write drivers for things where speed doesn't matter as much (FTP fs, SSH fs, etc).

    20. Re:Microkernels are the future by psmears · · Score: 1

      Yes, a crash in a monolithic kernel will bring the whole system down. And how many people cares? Almost nobody.

      Really? Remind me not to use any kernel you've been writing ;-)

      Seriously—it is a lot more important than you are suggesting. You are right that one must look at the computer as a whole system, rather than focussing on any particular part, but it is also important to look at the impact of failure of any one component. Yes, if a single library within openoffice does have a bug, that can take down the whole openoffice program—but that means that one user loses (probably) one or two documents from one of their running applications. If the kernel goes down, then all users on the system lose all documents from all applications they were running—and in a system where there may be tens or even hundreds of users, that's bad news!

      What's more, if openoffice crashes or locks up, I can restart it myself. If an entire server locks up, I can't always fix it myself; I may have to wait for an admin to restart it.

      That's all true for crashes, but it's also true for data corruption: a bug in an openoffice library may corrupt my document, but a kernel bug may end up corrupting everyone's data.

      If microkernels can improve the kernel reliability so that this sort of thing happens much less often (and I'm not arguing that they can—though I think ast would!) then I'm all for them...

    21. Re:Microkernels are the future by Anonymous Coward · · Score: 0

      So basically, it's 9P2000 remade with an extra dose of Unix-bugwards-compatibility.
      9P sucks. For example, if you're in Europe, and have mounted a filesystem from an Australia machine, and wants to copy (or move) a 15 GB file from the directory A to directory B on that machine, you will end up moving all those gigabytes twice back and forth through all the oceans and the ~1s latency. Just for kicks. 9P doesn't have like NFS or even FTP any RENAME or MOVE rpc/operation.

      And then, the design of the protocol itself isn't that great. It's a pain in the ass to make it work 'somehow' through any link with some latency. The performance is horrible.

      Like all things plan9, you can clearly see that sickening elitist attitude and the arrogance of never letting practical technical consideration disturb their fricking 'design'.

      God thanks plan9 (just like microkernels) never caught on. Otherwise we would all have to spend years and years trying to make pigs fly, and get that shit working in the end with half of the speed and reliability of some BSD from 15 years ago.

    22. Re:Microkernels are the future by naasking · · Score: 1

      There are many microkernels that have demonstrated that microkernels are just as fast, if not faster than monolithic kernels (faster because there's less resource contention and locking in kernel space, they use fewer resources because the resources are better partitioned, etc.). See L4, EROS (now CapROS on Sourceforge), QNX, and the forthcoming Coyotos operating systems.

  7. Both have their place by davidwr · · Score: 3, Insightful

    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.

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
    1. Re:Both have their place by gillbates · · Score: 0, Troll

      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.

      Same argument works just as well for Windows (better, actually):

      We didn't go with a Proprietary Windows over the open-source Linux 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. It had better driver support, was more widely adopted, and more familiar to the majority of people. We found that the things which differentiated Linux - better security, higher reliability - were just not important enough to most users to justify the time expenditure of learning a new operating system.

      There's no point in re-inventing the wheel if you aren't going to do it right. Granted, I like Linux better than Windows, and it does have some really compelling advantages for those able to benefit, but the Micro-vs-Monolithic kernel argument was lost a long time ago. We know that Linux is suboptimal. But even for its shortfalls, it is still by far the best choice available. It is not merely "good enough" - it is the best option one has for a PC operating system.

      And please don't troll about the Windows statement. That was for demonstration purposes only.

      --
      The society for a thought-free internet welcomes you.
    2. Re:Both have their place by Anonymous Coward · · Score: 0

      We didn't go for VHS over Beta because it had better quality video, we went for it because of marketplace and other factors. So which is better for pr0n, micro- or monolithic- ?
    3. Re:Both have their place by Ryan+Amos · · Score: 1

      Be fair here; MkLinux was really an educational project for Apple's core developers to play around with Mach before starting the heavy lifting on OS X. Porting an existing OS lets you play with things and get them wrong in a sandbox so you can see why you might want to make certain design decisions when coding one from scratch.

      I used MkLinux, and it was at the time the only way to run Linux on Mac hardware. It didn't stick around for long; once the Apple sponsored developers had played with it long enough, it was abandoned as they started moving over to OS X development.

      Monolithic Linux had been around for a long time before MkLinux (which came out somewhere around Linux kernel 1.2.) It was far better supported on the PC side of things, so it was the only natural course to take to port a monolithic kernel to Mac hardware. The monolithic kernel was easier to use, and you could basically re-use HOWTOs and instructions from the x86 tree.

    4. Re:Both have their place by jadavis · · Score: 5, Insightful

      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).

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    5. Re:Both have their place by Anonymous Coward · · Score: 0

      Depends on your favorite pr0n keywords. Do you like "tiny" and "petite" or "huge", "massive", "monster"?

  8. And another debate goes on. by AltGrendel · · Score: 4, Funny
    --
    The simple truth is that interstellar distances will not fit into the human imagination

    - Douglas Adams

    1. Re:And another debate goes on. by Anonymous Coward · · Score: 2, Insightful

      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.

    2. Re:And another debate goes on. by rbanffy · · Score: 1

      "QNX is probably one of the oldest microkernels and they're still around."

      There probably is some x86 box in some factory that still runs the first version and never crashed since it was first booted under it.

      I leaned C under QNX. It sure felt just like any other Unix of that time (late 80s).

    3. Re:And another debate goes on. by DirkGently · · Score: 1

      I leaned C under QNX. It sure felt just like any other Unix of that time (late 80s).

      That's like saying a Tranny is a chick because you never stuck your hand down her pants.

      --

      I keep trying to pick fights, but I can't shake this Excellent karma.

    4. Re:And another debate goes on. by rbanffy · · Score: 1

      I am sure one of the design goals of QNX was to resemble Unix as much as possible without compromising the real-time features. Being unix-ish made it a lot easier to program for.

      Besides that, it had "vi", "cc" and lots of the nice stuff you would expect on a Unix box.

      And, BTW, Unix was really spartan those days. The next two Unix-likes I used were on green-screen text-only terminals on multi-user boxes that had a serial console port. GUIs were something reserved for high-end workstations costing tens of thousands of dollars.

  9. Slashvertisement by sydneyfong · · Score: 1
    From TFA:

    ... 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.

    The easiest way to try one is to go download MINIX 3 and try it. (emphasis mine)
    --
    Don't quote me on this.
    1. Re:Slashvertisement by nekokoneko · · Score: 1

      And let me tell you I have indeed used MINIX 3 and it is very much a work in progress. I used it in my OS class in college. Thumbs up for the simplicity of fiddling with its source code (it was, after all, first designed with educational purposes), but I would find it unbearable to use it on a daily basis.

    2. Re:Slashvertisement by moderatorrater · · Score: 2, Interesting

      I'm going to disagree with you. This debate's been raging for years, and he's calling for people to try the most available one on the market right now. He's not going to get money from it, all he'll get is maybe some development done for it. Since he's a professor and could just as easily make the development an assignment or extra credit, it's much more likely that he's trying to inject some experience into the debate instead of turning it into some nerdy gladiatorial fight between him and Linus.

      The real accusation you should be making is that he's a coward and a chicken because he's really only scared of Linus bringing his wife to the match.

    3. Re:Slashvertisement by Hatta · · Score: 1

      Is it a work in progress because the kernel isn't finished yet, or because the userland isn't finished yet?

      --
      Give me Classic Slashdot or give me death!
    4. Re:Slashvertisement by cromar · · Score: 2, Informative
      The userland, mostly. FTFA:

      MINIX 3 is [the MINIX kernel] plus a start at building a highly reliable, self-healing, bloat-free operating system... It can run X, etc. As it is mainly for educational purposes, it's more of a proof of concept than an attempt to create a user friendly OS. The article is actually pretty interesting...
  10. Who cares about the kernel? by fishwallop · · Score: 3, Insightful

    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.)

    1. Re:Who cares about the kernel? by Lally+Singh · · Score: 1

      They don't. Fundamentally micokernelism is a software engineering issue, and you'll notice the actual SEs taking about the same view on this (hint: they don't agree with Linus - watch the reliability & bloat of Linux over the years as an example). But me-toos want to join in to support their crew. Sort of like people in your entourage talking smack and starting crap with your competitor's entourage. Of course, only you and your competitor have any actual talent or understanding of the issues at hand, but the followers need to pretend like their opinions matter.

      --
      Care about electronic freedom? Consider donating to the EFF!
    2. Re:Who cares about the kernel? by Sloppy · · Score: 1

      I much doubt whether the average user cares (never mind understands) if the kernel is monolithic, microkernel

      I bet he cares if he has a binary-only driver w/out source, upgrades his kernel, and finds out that his driver doesn't work anymore, because it was built to be so tightly integrated with a specific (and no longer present) kernel. Oops, I guess I didn't really need that video card.

      (Granted, the real solution is to not use drivers that can't be maintained.)

      I also think we're losing out on some features and functionality, due to things like filesystems being (or at least seeming) too hard for "ordinary" programmers to implement. Yeah, we have FUSE, but it at least smells like a hack, and I'm reluctant to trust it (and therefore I project that other programmers feel the same way ;-). With a microkernel, I think a lot more programmers would be writing filesystems and we'd have some really neat features out there. Look at the kioslaves to get some kind of feel for what that might be like.

      I have a hunch that monolithic kernels have really made a difference (if subtle) to the end-user experience, and that it has been overall negative. Obviously I can't prove/illustrate that, without use of the Subjunctive Time Machine.

      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    3. Re:Who cares about the kernel? by Anonymous Coward · · Score: 0

      Really? That's interesting... So which are you: a camp follower 'me-too' or someone with 'actual talent or understanding of the issues'? ' talking smack and starting crap with your competitor's entourage' - does a real software engineer think like this? I rather suspect that Minix is the result of a more sophisticated mind than yours, and that there are very many people with a broad understanding of the issues. In fact, people with a broad understanding are the problem. Nothing was ever achieved with a broad understanding of the issues.

    4. Re:Who cares about the kernel? by Timothy+Brownawell · · Score: 1

      I much doubt whether the average user cares (never mind understands) if the kernel is monolithic, microkernel, or heated corn The "heated corn" type tastes like paper.
    5. Re:Who cares about the kernel? by Verte · · Score: 1

      Most users do not care so much about implementation details, no. But design details do make many higher level features easier to implement. Things like virtualisation, userspace mount, and the gnome-vfs would have been (or have been) easier and fit more naturally with a system designed on a microkernel. Being able to put together a special file or filesystem in a minute or two and using it immediately without root privileges doesn't mean much on its own to the non-geek, but the things it allows application programmers to do does.

      And of course there are people serving web sites, for example, that have different requirements to the typical home user.

      --
      We at slashdot are scientists, specialists and kernel hackers. Your FUD will be found out.
    6. Re:Who cares about the kernel? by Chirs · · Score: 1

      I do linux kernel development for a living.

      I agree that the kernel has bloated, but much of the bloat is due to increased hardware support, increased capabilities (debug tools, better scheduler, etc.) and cleaner design. At the same time, it's running on smaller systems than ever before (cell phones anyone?) but you need to do some tweaking to make that happen.

      As for the reliability, I'll happily take 2.6.16 over 2.2.17. We had to do an awful lot of work to get 2.2 into "shippable" state.

      Linux is far from perfect, but it's pretty darn good--especially when you consider the sheer amount of churn in the kernel release over release.

  11. hmmmm... by William+Robinson · · Score: 4, Funny
    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

    Hmmm....he must be new here ;)

    1. Re:hmmmm... by realwhz · · Score: 1

      He actually means ``IEEE put the paper on its Website. Someone then posted a link to it to Slashdot, thus rekindling an ancient discussion about microkernels vs. monolithic systems.''

    2. Re:hmmmm... by Anonymous Coward · · Score: 0

      You should read what Mr. Tannenbaum has to say about microkernels.

      Basically, what he is saying is that there are 3 major approaches that he knows, and that he can't recommend any of the three, but he is sure that microkernels will win in the end.

      One of the approaches is to have several microkernels running on the same machine, so that each user and each application can see the whole OS to itself. The performance, according to Mr. Tannenbaum is normal and if one of the OS is down, the rest do not notice it.

      Moreover, he goes to say that one of the OS is in charge of all I/O, and the rest of the OS are just app wrappers. It is even done the other way around, one OS runs all apps and each driver runs in its own OS. The advantage is that even a rogue driver or program can't bring the system down and there is almost no performance penalty.

      I think that is too similar to VMWare Hypervisor. As always practice is way ahead of theory.

  12. Old News by j_kenpo · · Score: 3, Funny

    Thats great.... the article is dated May 12, 2006. Is it still "news" if its "old news"?

    1. Re:Old News by Random+BedHead+Ed · · Score: 4, Funny

      Old articles for nerds. Stuff that mattered.

    2. Re:Old News by macurmudgeon · · Score: 1

      Yeah, it must be a really slow news day. Not only is the article from almost two years ago, it doesn't really say much.

      Summary:

      • Try my OS
      • I disagree with Linus
      • Here are a handful of real world examples of (more or less) microkernal OSs
      • Some conjecture about security benefits from microkernals at the cost of speed
    3. Re:Old News by CCFreak2K · · Score: 1

      Is the space pope reptilian?

      --
      "Beware of he who would deny you access to information, for in his heart he dreams himself your master."
    4. Re:Old News by Anonymous Coward · · Score: 0

      The article was written on a microkernel architecture. It's just now finished processing :P

  13. QNX Rules by Anonymous Coward · · Score: 1, Interesting

    Great OS, millions in use, fast, small - Microsoft should hve bought them!

    www.qnx.com

    1. Re:QNX Rules by weicco · · Score: 2, Insightful

      I don't see the point in buying QNX. They already have Singularity 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.

      --
      You don't know what you don't know.
    2. Re:QNX Rules by mechsoph · · Score: 1

      Let compiler handle all the nasty IPC stuff at compile time to lower the performance penalty which comes from process context switches and such.

      There's almost nothing a compiler can do about IPC. Since it involves a context switch and some kernel work, it's entirely dependent on the OS and hardware.

    3. Re:QNX Rules by Anonymous Coward · · Score: 0

      Nonsense, the new quantum theory based compilers take care of all IPC for you if you use the "collapsed schroedinger field" flag. The resultant binary is smaller, too, since the compiler backremoves from the timestream all of the would-be-dead code, and it never has to worry about branch prediction failure. The only real downside is that every time you run a compile, a nearby kitten dies, so the animal rights folks are up in arms.

    4. Re:QNX Rules by rbanffy · · Score: 1

      "They already have Singularity"

      Everybody knows singularities suck.

      And, BTW, why the hell would it be the compiler's job to handle IPC? Shouldn't it the job of whatever is behind the OS API?

    5. Re:QNX Rules by julesh · · Score: 2, Informative

      BTW, why the hell would it be the compiler's job to handle IPC? Shouldn't it the job of whatever is behind the OS API?

      The compiler doesn't really handle IPC: what happens is that the compiler (or rather the loader) verifies that the programs are type- and memory-safe before allowing them to run. Then they are all loaded into a single memory space so that IPC is trivial. It's a neat concept, although not the first time it has been implemented (see an OS called 'JX').

    6. Re:QNX Rules by julesh · · Score: 1

      There's almost nothing a compiler can do about IPC. Since it involves a context switch and some kernel work, it's entirely dependent on the OS and hardware.

      Singularity handles IPC without a context switch by delegating security requirements to the compiler rather than relying on the hardware. I'm not sure of the precise details of how MS have done it, but my own thoughts on the matter suggest that it would be possible to implement IPC without involving the kernel at all.

    7. Re:QNX Rules by mechsoph · · Score: 1

      Singularity avoids context switches by running everything in kernel mode. This works because it's all written in C# and can thus be verified before loading.

      [flame] You're own thoughts are wrong. Try using someone else's for a while, and stop talking our of your ass. [/flame]

      I suppose with singularity, there is some blurring between the kernel and compiler, but given that all the code is running in supervisor mode, it is still definitely the kernel doing the work. If you can figure out how to do IPC without a kernel, publish dammit.
    8. Re:QNX Rules by julesh · · Score: 1

      I suppose with singularity, there is some blurring between the kernel and compiler, but given that all the code is running in supervisor mode, it is still definitely the kernel doing the work. If you can figure out how to do IPC without a kernel, publish dammit. My scheme would only work in some circumstances, but I believe that the effort involved in writing processes to create those circumstances is justified by the benefits: IPC for just the cost of a method call.

      The circumstances are:

      * Both processes are running in the same memory space (e.g. via a mechanism like singularity's)
      * The type of IPC to be performed is a synchronous RPC.
      * The recipient method does not require synchronization with any other behaviour in the recipient process
      * The compiler is able to prove that the recipient method cannot throw an exception, or it is acceptable to the recipient process that any exception thrown be ignored.

      In these circumstances, I see no reason at all why the invoking process cannot simply call the method of the recipient process, in its own context and on its own stack. I see no reason, given this, why the kernel would have to be involved at all.
    9. Re:QNX Rules by mechsoph · · Score: 1

      If your programs are running the the same address space, they are the same process in the Unix and VMS/NT sense. Your IPC then is really just communication between threads, for which there are several different low-overhead options. Really though, synchronous communication or invoking a routine in the context of a separate "program" should be equivalent to a method invocation on another object with private fields. I don't think you'd gain anything but overhead by using another stack.

    10. Re:QNX Rules by julesh · · Score: 1

      If your programs are running the the same address space, they are the same process in the Unix and VMS/NT sense.

      Except that in an environment like Singularity, they are in separate protection domains: the difference is that address spaces aren't the method of protection being used. Or would you consider Singularity a single-tasking multi-threaded OS?

    11. Re:QNX Rules by mechsoph · · Score: 1

      Or would you consider Singularity a single-tasking multi-threaded OS?

      Well no. Based on a conversation with someone from MSR, Singularity can run other Unix-style processes on top of its kernel, though that loses its low-overhead of running everything in one address space. However, pure Singularity is a single process, multi-threaded OS, speaking using traditional definitions of process and thread. This makes it like a number of single-address space embedded OS's, though with the added benefit of verified task isolation.

  14. What does it mean to try an OS? by unbug · · Score: 1

    No, seriously. Trying an application I can understand but an OS? To make any meaningful statement about the usability particular OS, I'd have to seriously use it a couple of months at least. After all, it took me couple of years just to get away from Windows.

    1. Re:What does it mean to try an OS? by Hatta · · Score: 1

      Right, and exactly what are you trying when you try the OS? Most of what you see is the userland, just a bunch of applications. And it's those applications that are going to make the biggest impression on the usability of an OS. For most users what kernel they're using, and whether it's monolithic or micro doesn't really matter. Even between BSD and Linux I couldn't tell you what difference the kernel makes, but I sure notice the lack of GNU utilities on BSD.

      --
      Give me Classic Slashdot or give me death!
  15. Same argument for drug use or homosexuality? by laing · · Score: 0, Troll

    Should we all be considered unqualified to comment on anything that we haven't tried? How about capital murder?

    There have been plenty of studies comparing the performance of monolithic vs. microkernel architectures. The monolithic implementations always perform better. Sure they aren't as elegant from a CS perspective - but the same could be said of OO code vs. structured for small implementations.

    Show me a good microkernel based OS distribution and I'll give it a try. I haven't seen anything yet that outperforms what I'm using.

    1. Re:Same argument for drug use or homosexuality? by uglydog · · Score: 1

      i find the issues u raise disconcerting. guess i'll mod this post flamebait

    2. Re:Same argument for drug use or homosexuality? by dave420 · · Score: 1

      Well, if you don't know what a person is or what murder is, maybe discussing capital murder might not be a great idea. :)

      Microkernels, from what I understand, do take a (slight) performance hit, but are far more stable. If we adopted them in our current OSs, they would be slightly slower, but they'd be far more future proof, with less problems than we see now on the desktop (pick your OS - they all have these issues - dodgy drivers, etc.).

    3. Re:Same argument for drug use or homosexuality? by laing · · Score: 1

      Drivers will always be an issue. The microkernel architecture just moves them all to user space. That doesn't make them any less buggy.

      So we are on the same page about microkernels taking a 'slight' performance hit. The same thing applies to IPV6 vs. IPV4. Nobody wants to take the latency hit and the burden of the higher switching load. Most of the time the simpler solution is the 'better' one. Yes, also most of the time the simple solutions are less scalable. I'll take my performance now and worry about scalability when I need to scale up.

      I love the fact that my parent post was modded (-1 Troll). I must have hit a nerve somewhere.
      --
      This space for rent

    4. Re:Same argument for drug use or homosexuality? by Iron+Condor · · Score: 1

      but they'd be far more future proof,

      No.

      The only indication of future success is past success. All else is wishful thinking.

      Serving up the same dish again and again isn't going to change your toddler's reaction to it. Change the dish, offer incentives of some sort, or learn to live with it. "You spit those peas at me so today we have them again" isn't going to get you terribly far.

      It doesn't matter why microkernels failed to flood the market. They just didn't, and no amount of "we never got a fair chance" is going to change that.

      --
      We're all born with nothing.
      If you die in debt, you're ahead.
  16. Open Source monolithic kernels by FudRucker · · Score: 1

    Open Source monolithic kernels are best, allowing any user to build their own custom kernel and a choice of either having device drivers & support to either be built as a module or in to the kernel itself...

    personally i prefer to build as much as possible as modules with the exception of filesystem support for / (ext3) which i prefer to build in to the kernel itself thus making an initrd unnecessary...

    the Linux kernel is one of the finest pieces of software to ever be built since the beginning of computers...

    --
    Politics is Treachery, Religion is Brainwashing
    1. Re:Open Source monolithic kernels by Schraegstrichpunkt · · Score: 1

      Open Source monolithic kernels are best, allowing any user to build their own custom kernel and a choice of either having device drivers & support to either be built as a module or in to the kernel itself...

      The ability to build drivers into the kernel could disappear and almost nobody would notice. Most distros already use an initial ramdisk (initrd) to load essential boot-time drivers, start RAID arrays, initialize LVM, populate /dev/, and mount the root filesystem.

      Like it or not, Linux is slowly turning into a microkernel. The question will soon be whether Linux can be any good at being a microkernel.

    2. Re:Open Source monolithic kernels by NekoXP · · Score: 1

      Just tell me how that is different to having an open source microkernel with the same drivers?

      There is nothing to say a microkernel can't be built as a monolithic *image*, the definition of microkernel is the abstraction (message passing, module loading etc.), not the binary blob it comes in (after all, a lot of microkernels, plus their entire platform support on a certain hardware configuration, are loaded from ROM or flash..)

      One could argue that with the exception of the things Linux really relies on being in the kernel (TCP/IP stack etc.), nothing really requires being built in to the kernel. If it can be built as a module, it should be, so that it can be loaded and unloaded manually or automatically on the basis of a problem. It could also be rebuilt without the full kernel. Building it into the kernel as a static and unmovable entity, I think, is a bad idea. Linux has far and away more than enough abstractions to keep modules seperate from kernel nitty gritty. However, Linux also has the problem of having no reliable interface for drivers - symbols change from version to version. Modules generally depend on very specific kernel versions (support going away from one version to a few higher). This makes modular kernels hard to maintain, although efforts like SuSE and RedHat's to keep their distro kernels binary compatible (part of the effort to keep many modules out-of-kernel-packages for external packaging).

    3. Re:Open Source monolithic kernels by DarkOx · · Score: 2, Informative

      umm, wrong....

      Loadable modules have nothing to do with micro/monolithic design. In a micro kernel those modules would have their own memory space, their own pid like identifier assigned by the monitor, and be doing all their communication with the rest of the kernel via some IPC process.

      When you load a module in Linux, it lives in the same memory space as the rest of the kernel and can freely exchange data with the rest of the kernel via writing directly shared data structures. Modules don't give you a less monolithic kernel, what the do is allow you to determine what the monolith looks like at run time instead of compile time.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    4. Re:Open Source monolithic kernels by SL+Baur · · Score: 1

      the Linux kernel is one of the finest pieces of software to ever be built since the beginning of computers... I don't know if I would go that far, but it certainly has stood the test of time. I was hooked from day 1 when I found out that all of my favorite (at the time) software was already installed (Slackware February 1995 release with kernel 1.2.1).

      What makes Linux successful (in the engineering sense) is the fact that everything is modularized and customizable, from userland components right down to the kernel. Linus' attitude certainly helps too. For all of the people out there struggling with Vista, how many have ever gotten a patch in the mail from Bill Gates to fix a problem? More than once I've gotten patches like that from Linus.

      The microkernel "debate" isn't interesting. If existing userland plugs in and Just Works and runs with acceptable performance, I don't think anyone really cares.
  17. VAX VMS by bADlOGIN · · Score: 1

    "I tried an OS based on a microkernel and I observed it was decades out of date first hand."

    And that was for a COBOL programming class in college 10 years ago while Linux was just
    starting to ramp up and kick ass;)

    --
    *** Sigs are a stupid waste of bandwidth.
  18. Rise of virtualization = return of microkernel by Nooface · · Score: 5, Interesting

    The rise of virtualization proves the validity of the microkernel concept, whereby the hypervisor now takes the place of the original "kernel" (note the similarity in block diagrams: microkernel vs. hypervisor designs). Virtual machines are now used instead of function-specific modules in the original microkernel designs, with specialized VMs for performing I/O and to host virtual appliances with just enough user-level code needed to support a particular application.

    --

    Nooface
    In Search of the Post-PC Interface
    1. Re:Rise of virtualization = return of microkernel by diegocgteleline.es · · Score: 1

      Indeed...and noticed how pretty much all the virtualization guests and hosts and are not microkernels? In fact, virtualization makes even more difficult for true microkernels to rise, since one of their advantages (isolation) can be obtained through virtualization.

    2. Re:Rise of virtualization = return of microkernel by peragrin · · Score: 1

      what is really funny is that Virtualization uses microkernels to load monolithic kernels, which run a lot faster for serving data.

      --
      i thought once I was found, but it was only a dream.
    3. Re:Rise of virtualization = return of microkernel by Schraegstrichpunkt · · Score: 1

      what is really funny is that Virtualization uses microkernels to load monolithic kernels, which run a lot faster for serving data.

      Do they, actually? It's not as though virtualization doesn't incur a performance hit.

    4. Re:Rise of virtualization = return of microkernel by fred+fleenblat · · Score: 1

      i got no mod points, but damn that was insightful.

    5. Re:Rise of virtualization = return of microkernel by nxtw · · Score: 2, Informative

      Well, let's consider a few virtualization platforms.

      VMware ESX Server's "vmkernel" is supposed to be a custom microkernel that happens to use drivers from Linux (all device drivers run inside the vmkernel). Guest OSes (including the Linux-based service console used to manage the server) run on top of the vmkernel and access all hardware though it.

      The Xen hypervisor does less than VMware's vmkernel; it loads a "dom0" guest that manages the system and performs I/O. With few exceptions, this guest is the only guest that directly interfaces with hardware. The hypervisor manages memory, schedules the CPU, and manages communication between guests.

      Microsoft's Hyper-V appears to operate in a similar fashion to Xen.

      In the case of Xen and Hyper-V, it's still different than a microkernel; the guest instance that is performing I/O is still a monolithic kernel - usually Linux with Xen and currently Windows 2008 with Hyper-V.

      In all three systems, you've got one special guest that handles important system functions and one kernel handling I/O (be it a guest as in Xen/Hyper-V or be it the vmkernel in VMware). There's no "filesystem" process/VM, no "network driver" process/VM, etc.

    6. Re:Rise of virtualization = return of microkernel by nxtw · · Score: 1

      Xen and Hyper-V both depend on a modified guest OS with special privileges for hardware access. This is typically Linux in Xen, although you can use other OSes as well. Hyper-V uses Windows 2008.

      VMware ESX Server uses its own vmkernel that uses modified Linux drivers to perform device access.

  19. A little old... by Crazy+Man+on+Fire · · Score: 1
    From the article:

    Recently, my Ph.D. student Jorrit Herder, my colleague Herbert Bos, and I wrote a paper entitled Can We Make Operating Systems Reliable and Secure? and submitted it to IEEE Computer magazine, the flagship publication of the IEEE Computer Society. It was accepted and published in the May 2006 issue. (Emphasis mine)


    So, "recently" an article was published in IEEE's May 2006 issue. Looks like this is nothing new.
  20. A very good read... by Anonymous Coward · · Score: 0

    ...but not really news, is it? Clue the May 2006 date at the bottom.........

  21. Magical Unicorn kernel by Blakey+Rat · · Score: 1

    We should just convert all our OSes to run using a magical unicorn kernel. I've seen about the same number of microkernel OSes and magical unicorns, so switching to the unicorn system should be just as easy as switching to a microkernel, and it gives many additional advantages, such as immortality and a horn that can cure all wounds instantly.

    1. Re:Magical Unicorn kernel by cromar · · Score: 1
      FTFA:

      * QNX
      * Integrity
      * PikeOS
      * Symbian
      * L4Linux
      * Singularity
      * K42
      * Mac OS X
      * HURD
      * Coyotos
    2. Re:Magical Unicorn kernel by Anonymous Coward · · Score: 0

      Nope, my horn is just a thing popping on my forehead.
      I'm not supposed to give you anything. I don't care.

      Unicorn

  22. Empirical study?! by Anonymous Coward · · Score: 0

    What?! Clearly _empirical study_ has no place in Computer Science! Any field with "science" in the name, after all, isn't really a science. :)

    It's much easier to get papers published if you constrain yourself to cooked data-sets and compare your methods to 20-year-old baselines.

  23. The Real Story by Anonymous Coward · · Score: 0

    No, your geek card was revoked, and you were handed a Nerd card. You miss being a geek, or you wouldn't have read this article nor bothered to post. You know you miss it. Heck, what are you even doing, surfing Slashdot at all?

  24. Who cares... by geekmansworld · · Score: 1

    They both work.

  25. Software Darwinism by Spazmania · · Score: 1, Troll

    The best software is the software that, given a reasonable choice, folks choose both choose to write and choose to use. Microkernels are not a new idea, yet few folks have chosen to write them and few have chosen to use the ones that have been written. That speaks for itself.

    Besides, what does Andy think, that we're all going to say, "Wow, you're dead on, lets rewrite Linux from scratch with a microkernel?" Linux works. Unless we reach a point where it substantially doesn't (like Windows) there's no value to considering that deep a design change.

    --
    Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    1. Re:Software Darwinism by Foerstner · · Score: 1

      The best software is the software that, given a reasonable choice, folks choose both choose to write and choose to use.

      So, Windows, then?

      --
      The US free market: two halves of a government-granted duopoly are free to set the market price.
    2. Re:Software Darwinism by Spazmania · · Score: 1

      So, Windows, then?

      On the desktop that sure seems to be the case. On the other hand, Linux is doing quite well in some large server niches despite Windows' best efforts.

      Also, it's fair to note that Apple hasn't given up the ghost just yet and they're still using a Microkernel the last I heard.

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
  26. Have you tried The GNU Hurd? by QuietRiot · · Score: 1

    I'm interested in experiences /. readers have had with The Hurd. Have you installed or run this system? What did you think?

    1. Re:Have you tried The GNU Hurd? by idiotnot · · Score: 1

      If you have some older hardware around, install it and try for yourself. The biggest limitations of GNU for a long time were performance and the ~2gb filesystem size limit. They've fixed the latter (up to like 10gb now), but the performance still is pretty lousy. What's got development kind of stalled, as I see it, are two issues:

      1. New hardware. GNUMach's SATA support is seriously lacking, and last time I looked, they still have problems on machines with >1gb ram.
      2. New development focus. Thomas Bushnell was responsible for a good part of the hurd in its original design. He's really not as involved with development as much as he once was. The new de-facto leadership have been working on other projects trying to get a replacement for Mach. First it was L4, then it was Coyotos (it still is, afaik).

      Still, if you've got an older machine around, install it. A quick debian install first, then crosshurd. Having a linux install is nice, because sometimes you need better fsck abilities. I had a public host up for about six months as a challenge to some IA acquaintances. They finally got in, but it took awhile. System never crashed, either.

    2. Re:Have you tried The GNU Hurd? by Schraegstrichpunkt · · Score: 1

      It needs to be rewritten to use L4. GNU Mach is painfully heavy.

  27. old news... by Anonymous Coward · · Score: 0

    Andy Tanenbaum, 12 May 2006

  28. Design Philosophy by Darkseer · · Score: 5, Interesting

    I did my senior project in college on this in 1998... At that time I was looking at something from MIT called the exo-kernel and comparing it to some 2.4 version of the linux kernel. Back in 1998 the problem was mainly that nobody had invested in that particular mirco-kernel technology, unlike say mach, because it was a research project. In my conclusion, it was clear I could not do a meaningful comparison of complex applications on both OSes due to its lack of maturity. But there was one thing that was clear, the design philosophy behind the micro kernel allowed a much more flexible way to interact with the hardware.

    The time it would take to design an implement a what the equivalent of driver would be were smaller. In the end it puts more flexibility into the hands of the application designer with the kernel taking care of just the bare minimum. The initial work at the time reported a 10x improvement in performance since you could customize so much of how the hardware resources were being used. This of course comes at a price, in addition to developing the application, you need to develop the drivers it uses, possibly increasing the time to write anything significant.

    But in the end, flexability was key, and you can see some of the microkernel design philosophies start to seep into the linux kernel. Take a look at kernel modules for example. The code is already being abstracted out, now if it just effectively was designed to run in userspace.

    My thoughts are that in the end the microkernel will win do to the fact that I can engineer a more complex OS that is cheaper to change, not because it is faster. Tis is the compromise that was made with compilers vs. machine language programming. In the end I think Tanenbaum will win, linux will become a microkernel out of necessity, and Linus as it turns out would have gotten a good grade from Dr. Tanenbaum. He just would have handed his final project in 40 years late by the time it happens.

    --

    BOFH, My model for being a sysadmin :)

    1. Re:Design Philosophy by AlXtreme · · Score: 1

      But in the end, flexability was key, and you can see some of the microkernel design philosophies start to seep into the linux kernel. Take a look at kernel modules for example. The code is already being abstracted out, now if it just effectively was designed to run in userspace.

      Userspace like with Filesystem in USErspace? Done!

      I think it's a question of necessity. There are quite a few people working on writing all kinds of filesystems for Linux, so it's natural to try to make writing filesystems easier, if only for developing a prototype first.
      There are far fewer people working on NIC or soundcard drivers (a few per chipset, perhaps), so the necessity to come up with a general interface for kernel modules in userspace is smaller.

      Given time I don't have a doubt that a general xUSE-API or a Minix-style kernel-userspace message bus will be developed.
      --
      This sig is intentionally left blank
    2. Re:Design Philosophy by happyfrogcow · · Score: 1

      While this may be irrelevant to your insight, 1998 seems a bit early for 2.4. The relevant part might just be that it was some current version of the linux kernel.

      http://www.linuxtoday.com/news_story.php3?ltsn=2001-01-05-001-04-NW-LF-KN

      Anyway, sorry if it's irrelevant.

    3. Re:Design Philosophy by dnnrly · · Score: 1

      You point out that there needs to be an investment to write drivers whenever you write an application. I imagine that this would be one of the first things that a library would be created for. I'm sure that there are plenty of people out there that would like to get their teeth stuck into something like that!

    4. Re:Design Philosophy by jd · · Score: 5, Interesting
      The problems with traditional microkernels lie in the heaviness of the module-to-module communication and in the number of context switches. An exokernel is pretty much entirely in one context, and exopc seemed to have very efficient communication, so that design looked extremely good. (Although a fair comparison isn't possible, a crude one would be to compare Exopc + the Cheetha web server with Linux + Tux, both serving static content. See how well they scale, when stress-tested.)

      Exokernels aren't the only microkernels of interest, though. There have been efforts to produce mobile nanokernels, on the theory that drivers are generally smaller than data, so in a cluster, moving the code to the data should be more efficient on resources. The opposite extreme has been to produce kernels that span multiple systems, producing a single virtual machine. Here, kernelspace and userspace are segmented and the latency between machines is simply another sort of context switch delay, yet the overall performance is greater than a loosely-coupled cluster could ever produce.

      Microkernels have a lot of potential, a lot of problems have been solved, there are still problems that need to be solved better. eg: if a driver crashes, there needs to be a transaction log that permits the hardware to be returned to a valid state if at all possible, or rebooted then rolled into the last valid state. This isn't just a software problem, it's a hardware problem as well. Being able to safely reboot individual components on a motherboard in total isolation requires more than fancy coding and software switches. You need a lot more smoothing circuits and capacitors to ensure that a reboot has electrically no impact - not so much as a flicker - on anything else.

      Where microkernels would truly be "at home" would be in machines that support processor-in-memory architecture. Absurdly common function calls, instead of going to the CPU, having instructions and data fetched, and then being executed, along a long path from the OS' entry point to some outer segment of code, can be embedded in the RAM itself. Zero overhead, or damn near. It violates the principle of single-entry, single-exit, but if you don't need such a design, then why waste the cycles to support it?

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    5. Re:Design Philosophy by naasking · · Score: 1

      Back in 1998 the problem was mainly that nobody had invested in that particular mirco-kernel technology

      What? L3, L4, EROS, QNX, and KeyKOS microkernels all predate 1998, and most of them are top performers.

  29. Theory vs practice ... science vs engineering by redelm · · Score: 2, Insightful
    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.

    1. Re:Theory vs practice ... science vs engineering by diegocgteleline.es · · Score: 1

      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.

      In future multicore systems with many many cores, you'll be able to run a process (=microkernel daemon) in every core - we'll have true multitasking, context switching will not be needed. Not that this is going to makes microkernels happen, but it makes more feasible.

    2. Re:Theory vs practice ... science vs engineering by sundarvenkata · · Score: 1

      But still is proving correctness of such complex interactions necessary given the current mission-critical nature of microkernels?

    3. Re:Theory vs practice ... science vs engineering by samael · · Score: 1

      It's funny how in the article he mentions both several useful examples of microkernels and his refutation with the memory spaces argument.

    4. Re:Theory vs practice ... science vs engineering by ecki · · Score: 1
      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

      RTFA:

      Are Microkernels for Real?

      In a word: yes. There were endless comments on Slashdot Monday (May 8) of the form: "If microkernels are so good, why aren't there any?" Actually there are. Besides MINIX 3, there are:

      • QNX
      • Integrity
      • PikeOS
      • Symbian
      • L4Linux
      • Singularity
      • K42
      • Mac OS X
      • HURD
      • Coyotos

      I'd consider QNX for example quite useful to help nuclear power plants from blowing up. And Symbian, while not a true microkernel, has shipped in probably well over one hundred millions phones.
    5. Re:Theory vs practice ... science vs engineering by paleshadows · · Score: 1
      The response of Tannenbaum to this sort arguments, which I think is very well worded, is:

      "While MINIX 3, QNX, Integrity, PikeOS, Symbian, L4Linux, Singularity, K42, HURD, Coyotos, and others [all microkernels] are an eclectic bunch; clearly I am not alone in seeing something in microkernels. If you are wondering why microkernels aren't even more widely used, well, there is a lot of inertia in the system. Why haven't Linux or Mac OS X replaced Windows? Well, there is a lot of inertia in the system. Most cars in Brazil can run on home-grown ethanol so Brazil uses relatively little oil for vehicle fuel. Why doesn't the U.S. do that and reduce its dependence on the volatile Middle East? Well, there is a lot of inertia in the system. Getting people to change, even to superior practices, is very hard."
      Mind you, the word on the street is that Microsoft has assembled a group to attempt to commercialize Singularity, which means microkernels might all of a sudden find their way into the very heart of mainstream...
    6. Re:Theory vs practice ... science vs engineering by laejoh · · Score: 0

      Three Rings for the Elven-kings under the sky,

      Seven for the Dwarf-lords in their halls of stone,

      Nine for Mortal Men doomed to die,

      One for the Dark Lord on his dark throne

      In the Land of Mordor where the Shadows lie.

      One Ring to rule them all, One Ring to find them,

      One Ring to bring them all and in the darkness bind them

      In the Land of Mordor where the Shadows lie.

      Or did I missunderstand your point about the HLT instruction?

    7. Re:Theory vs practice ... science vs engineering by redelm · · Score: 1
      Sorry, I do not consider embedded, dedicated or other special-purpose OS qualify as "General Purpose" OS. They certainly have their uses, but cannot compete when security (wild user code) or flexibility (hardware) is important.

      You might as well consider MS-DOS to be microkernel :)

    8. Re:Theory vs practice ... science vs engineering by Anonymous Coward · · Score: 0

      Ok, so where's my GNU Hurd Live CD again?
      All those examples are, either not microkernels, unused, or simply are not. QNX is the closest to being a good example. But it is used only for fringe applications just like real-time OSes.

  30. So... by jakim · · Score: 0

    I was convinced cluelessless was required to post on slashdot.

  31. The more you know ... by N1ck+N4m3 · · Score: 2, Interesting

    ... "ficken" in german means to bang, to bonk, to frig, to fuck, to hump, to screw or to shag!

    1. Re:The more you know ... by genericpoweruser · · Score: 1

      And Tannenbaum means Christmas tree!

      --
      A fool and his lamb are worth two in the bush.
    2. Re:The more you know ... by ficken · · Score: 1

      oh no. You got me.

      --
      Victory shall be mine!
  32. micro-Kernel? by Anonymous Coward · · Score: 0

    Your woman wants large length and big girth!

    Try MegaDik(tm) today!

  33. You know who argues about microkernels? by Anonymous Coward · · Score: 0

    People with micro penises. Just sayin'.

  34. Is he really still talking about this??? by logicassasin · · Score: 2, Insightful

    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.

    --
    Fifty watts per channel, baby cakes.
    1. Re:Is he really still talking about this??? by gsnedders · · Score: 2, Informative

      - 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

      IIRC that comment dates back to when Linus was strongly tied to x86 -- sure, since 2.0 it's modular enough to make porting it easier, but back when 1.x was around that sure as hell wasn't the case. Porting it to 68k took a huge effort of rewriting large parts (the first port of Linux).
    2. Re:Is he really still talking about this??? by turgid · · Score: 2, Informative

      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.

      *sigh* That old chestnut.

      Every x86 processor for the last decade, whether from intel, AMD or VIA is a superscalar, out-of-order, register-rich RISC internally with a layer that decodes x86 op codes and translates them into the native RISC code. The Transmeta chips were RISC/VLIW internally and could emulate any instruction set by loading the translation code at power-up.

    3. Re:Is he really still talking about this??? by Anonymous Coward · · Score: 0

      Yet the majority of the -planet- uses an x86 machine of some sort as of 2008. Last time I checked my phone, TV, DVD player, washing machine or car did not use x86 cpu.
    4. Re:Is he really still talking about this??? by 91degrees · · Score: 1

      Nor do they use Linux.

      Most of the machines that run Linux, or any similar OS do use an x86.

    5. Re:Is he really still talking about this??? by Anonymous Coward · · Score: 0

      The majority of the planet uses an x86 machine of some sort - on the desktop.

      The real majority of the planet runs something other than x86. The GPU on your graphics card? Your Xbox360? Playstation3? NintendoDS? Wii? Cell phone? Router? Cable box? How about all those cars out on the highway? Your cordless house phone? What about the CPU in your keyboard? Your cordless mouse? That nifty Bluetooth headset? What about all those iPods and other portable media players? Your ink jet printer? Laser printer?

      I know that my household owns exactly two x86 cpus, and at least two dozen of something else.

      Three cordless phones, two cell phones, two media players, two portable CD players, two cars (at least six CPUs in each...), wireless router, FIOS access point, ink jet printer, laser printer, cordless mouse, microwave oven, high efficiency furnace (it has a cpu), programmable thermostat, wireless indoor/outdoor thermometer, Nintendo DS, Gameboy Color, X10 controller (plus five remotes), and two external USB hard drives, one flatbed scanner, one slide scanner, two digital cameras. None of these are x86.

      Yes I read TFA. My favorite quote was near the end.

      "Cars don't have reset buttons. They are full of software but don't need them."

      Cars don't have reset buttons *that you can see* (or touch...). The have watchdog timers instead, and the watchdog presses the reset for you.

      One night I was cruising down the road in my 2003 Honda Odyssey van when the whole dash board shut down, then it rebooted, just like when you turn the key on. Lit up like an arcade game with all the gauges pegged at maximum deflection, then everything returned to normal. The whole process took about two seconds. It has not repeated since.

      Don't have reset buttons, indeed.....

    6. Re:Is he really still talking about this??? by turgid · · Score: 1

      The Pentium Pro (and hence Pentium II) and everything thereafter from intel is internally RISC.

      The Cyrix 6x86 onwards (now VIA) was RISC internally.

      The AMD K6 onwards was RISC internally.

      The original Pentium line was the last 386-native processor from intel. It had two integer execution units and a highly optimised floating-point unit which gave it about twice the performance of a 486 at the same clock. To get full benefit of the twin integer pipelines, you had to have pentium-optimised (i.e. instructions specially ordered) code.

      It was baroque and was as far at they could take native CISC. Motorola also had a 68060, but Apple dropped that and switched over to PowerPC, which was not instruction set compatible. They opted for dynamic binary translation instead. It worked well.

  35. I think I'm right damnit, so STFU! by C_Kode · · Score: 1

    This shouldn't even be a slashdot discussion. Why? 99% of slashdoters don't actually have a clue on the subject. 90% of those that think they know what their talking about is because someone else told them something totally bias and they took it as fact.

    My opinion on the subject. I don't have a f'in clue, but will follow the mantra. Use the right tool for the job. I'm sure it fits in the OS kernel world just as it fits everywhere else.

    1. Re:I think I'm right damnit, so STFU! by cromar · · Score: 1

      99% of slashdoters don't actually have a clue on the subject. Actually, that makes it a perfect article for /. All kidding aside, some of us do actually know what we are talking about, so...
  36. Problem uploading by jbeaupre · · Score: 1

    It was written May of '06, but they were still working on porting the CPIP driver to Minix to upload it (proving Minix can do everything Linux can). http://www.blug.linux.no/rfc1149/

    At least that's my theory.

    --
    The world is made by those who show up for the job.
  37. Uh? "12 May 2006" by cpotoso · · Score: 1

    Are we so devoid of things of interest that we need to recall an article dated "12 May 2006"?

  38. Whoosh! by trolltalk.com · · Score: 1

    joke

    O <- your head

  39. Wow by spaceon · · Score: 1
    A nearly 2 yr old article, wow... the debate is on fire!

    Also... I think this

    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.' would be more relevant if there were micro-kernal OS's around other than the ones embedded in consumer toys.

    We don't care if Furbies or Tickle-me-Elmo uses a micro-kernal.
    1. Re:Wow by spaceon · · Score: 1

      Bah, I'm showing my age... nearly thirty years on and I still slip and say "kernal" instead of "kernel".

      (I think the lesson for the article poster is "don't blindly repost shit from reddit")

  40. Linux microkernal ... by trolltalk.com · · Score: 5, Informative
    Geez, nobody gets the joke?

    If you read the article, Tannenbaum reminds everyone of how Microsoft paid Ken Brown to write a book accusing Linus of stealing the Minix microkernel. FTFA:

    In the unlikely event that anyone missed it, a couple of years ago Microsoft paid a guy named Ken Brown to write a book saying Linus stole Linux from my MINIX 1 system. I refuted that accusation pretty strongly to clear Linus' good name. I may not entirely agree with the Linux design, but Linux is his baby, not my baby, and I was pretty unhappy when Brown said he plagiarized it from me.
    1. Re:Linux microkernal ... by Anonymous Coward · · Score: 0

      FYI: Minix 1 and 2 are not micro-kernels. Minx 3 is. Linux is also not a micro-kernel.

    2. Re:Linux microkernal ... by the_humeister · · Score: 1

      It's not that funny if you have to explain it.

  41. Virtualization Resolves These Issues by CodeBuster · · Score: 1

    It seems to me that at the center of many system X vs system Y debate(s) lies the fact that binary incompatibility of programs written for different system(s) or hardware(s) continues to exist in spite of the fact that virtualization has shown us the way out. The virtualization can occur at many levels including both the programming level with languages like Java or C# and at the hardware level with virtualization software such as VMWare. Now obviously there will need to be some part of the system at some level that is NOT virtual (i.e. something has to talk to the hardware after all). However, it is in this sense that the Microkernel IMHO has the advantage because it has the potential to minimize, to the extent that such minimization is possible, those parts of the operating system which are NOT contained within the virtualization layers. The less code which is maintained outside the virtualization layers the greater the ease of portability for both the OS and programs written for it. Although I am not intimately familiar with all of the history and nuances of the Torvalds vs Tanenbaum debates, I think that Tanenbaum makes a good point when he says the the Microkernel is frequently misjudged or dismissed merely on the basis of a perceived maturity or present commercial viability rather than on the technical merits.

  42. My microkernel experience by xZgf6xHx2uhoAj9D · · Score: 1

    About 3 or 4 years ago, I installed Debian GNU/Hurd. Incidentally, Debian GNU/Hurd is infinitely easier to install than Debian GNU/Linux, and the hardware support was better as well. I'm not exactly sure how, as the Hurd was based on Linux 2.0's drivers as well, but it worked perfectly with my hardware when Debian GNU/Linux wouldn't.

    My impessions of Debian GNU/Hurd was that it was very cool, very very fun, very unstable, and very slow.

    I don't know that his suggestion that people complain after trying out a microkernel OS is a good one, as there are a lot of bad microkernel OSes out there. For what it's worth, I think Microsoft's direction with Singular is the Correct way to go: many of the advantages of a microkernel without many of the disadvantages (namely no context switches between parts of the kernel).

  43. The death of the kernel? by Peaker · · Score: 2, Interesting
    Kernels provide:
    1. Hardware abstraction
    2. Resource management

    They do this using:
    1. Superior access at the hardware-level
    2. Implement address space separations for security/reliability purposes


    I believe the use of superior hardware access, and address space separations should die out in favor of an alternative: runtime-level protection.

    As more and more systems move to be based on bytecode-running virtual machines and as JIT's and hardware improves, it is becoming clearer that in the future, "static native code" (C/C++ executables and such) will die out to make room for JIT'd native code (Java/.NET).
    I believe that this will happen because JIT can and will optimize better than a static compiler running completely before execution. Such languages are also easier to develop with.

    Once such runtimes are used, some aspects of reliability/safety are guaranteed (memory overruns cannot occur. References to inaccessible objects cannot be synthesized). By relying on these measures for security, as well, we can eliminate both the need for elevated kernel access, and address space/context switches. This is desirable for several reasons:
    1. Simplicity. Lack of address space separations (processes) is simpler.
    2. Uniformity of communication: Objects can use one another without regard of "process boundaries", as long as a reference to the object exists.
    3. Performance: While "safe" languages are considered of lower performance today (and will have better JIT'd performance in the future), they can eliminate context and address space switches which have considerable costs in current systems.


    Once relying on the runtime for security and reliability, a "kernel" becomes nothing more than a thread scheduler and a hardware abstraction object library.

    I believe this is the correct design for future systems, and is my answer to the micro vs monolothic question: Neither!
    1. Re:The death of the kernel? by julesh · · Score: 1

      I believe [language-based protection] is the correct design for future systems, and is my answer to the micro vs monolothic question: Neither!

      Such systems still need kernels (e.g. Singularity, JX, etc.) though. And most of the current crop of kernels for those systems resemble microkernels more than they do monolithic ones (perhaps because the disadvantages of microkernels mostly disappear once you stop using memory protection).

    2. Re:The death of the kernel? by Anonymous Coward · · Score: 0

      Such languages are also easier to develop with
      That is very subjective. A language with a GOOD library. THAT is easier to develop with. It is why people love .net. The library is HUGE. C# would be a toy language without it.

      You are also putting too much hope on the magic 'optimizations' that a JIT can do. Most byte languages are nothing more than emulators that emulate some 'perfect' machine. Compiled languages could do the exact same thing. HOWEVER self modifying code is frowned upon. While with bytecode languages it is NEEDED for any sort of performance. Most performance does not come from a recompile. It comes from the programmer actually figuring out what is taking so long and putting in 'hacks' to fix it.

    3. Re:The death of the kernel? by 12357bd · · Score: 1

      Well hardware has already improved, and the not 'static native code' applications are still memory/cpu hogs that behaves poorly even on new and powerfull machines.

      The point is, no matter how good the hardware becomes, the software part can (and is) always pushed to the point of to waste every available resource. In that environment, JIT languages are displaced because they are a waste of resources, the hipotetical gain in programming is overcome by the penalty performance of the needed runtimes.

      In short, we already know how to waste cpu cycles, no need of JIT languages for that, thanks.

      --
      What's in a sig?
    4. Re:The death of the kernel? by BitZtream · · Score: 1

      So basically you want to make a virtual copy of the hardware and run everything on it. Why? If you have to write a bunch of software to abstract the hardware in a way that makes it look seperate, why not just make the hardware capable of seperating things out and doing everything you want to do in the VM? Oh wait ... this has been done ... outside of the x86 world for years ... VMs are obviously the ideal solution, which is why they are all written entirely in their native byte code rather than using machine langauge under the hood ... wait, no, the all still are written in machine language in the end ... Your JIT compiler is just that, a compiler, in the end it performs the same function as a normal compiler, just at a different time. While these types of languages have their place and their usefulness, the end result is still the same thing, everything gets converted to machine language. If you can do it in a JIT, you can do it in a C/C++ compiler, the language/syntax/portablity is different, the end result is still machine code that gets executed.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
  44. Path of least resistance and theoretical advantage by mlwmohawk · · Score: 1

    The prime issue in the micro vs macro kernel debate is for lack of a better term, expedience and practical improvement. It is easier to develop in a shared resource traditional kernel environment than it is in a microkernel environment. There are, of course, exceptions but it is generally true.

    Furthermore, while microkernels can potentially be more reliable and secure, how much more? Is a well tested and mature monolithic/modular kernel much worse than a well tested and mature microkernel? I have Linux and freebsd boxes, on reasonable hardware, with zero system failures over the course of years. So is that microkernel going to be measurably much better?

    Addressing the original author, I have done a good share of kernel development in Windows (DOS and NT based), Linux, FreeBSD, and a whole bunch of embedded work in raw assembly over the years (right down to building my own prom burner in the 70s). I am speaking from first hand knowledge and as someone who has also published work and shipped actual product.

    The *only* advantage that Microkernels bring is a lesser amount of code that actually runs in the kernel. The reasoning is a theoretical advantage that with fewer lines of code there is a lesser chance of failure. With kernel modules being simpler and easier to test. To get this advantage, however, you may have to complicate otherwise simpler algorithms. I argue that making the implementation of portions of the system more complex renders those specific systems potentially less reliable. If the kernel is secure and reliable, but the interfaces on top of it are less so, from the application and usability level, what has been gained?

    The "system" from application on down to the hardware needs to be reliable. The applications need to be well written. The API libraries have to be well written. The system and hardware drivers have to be well written. The kernel code has to be well written. Even if it is just the application crashing and the kernel is fine, that system is usable and unreliable for the work it is intended to perform.

    So, are Microkernels "better?" In a theoretical sense, yea, they are a clean design and really "fit" in the aesthetic of well designed software. Are they ever going to take hold? Who knows? Never say never. I don't think so, because if something is easier to do (monolithic/modular kernels) people would rather do that. Most people will always follow the path of least resistance.

  45. "memory protection"... by SanityInAnarchy · · Score: 1

    If you want a sense of how a microkernel might be developed, go play with Erlang. Literally thousands of "processes", but because the memory is entirely managed, there's not really a performance tradeoff versus a threaded app. (Or at least, versus a threaded app in a similar, bytecode architecture.)

    But that also shows you the essential problem with microkernel designs. From what I can tell, most microkernels have been written in C, which wasn't really designed to work as a message-passing system. Also, they are written with the assumption that memory protection is something which has to be done as memory segmentation...

    If you still think that, by the way, read up on Microsoft's Singularity.

    And your SCSI-vs-IDE analogy doesn't fit at all. If you really think overhead is going to become irrelevant, why not write everything in Ruby?

    The reason the performance of a given kernel is relevant is, it affects the entire system. Just pulling numbers out of my ass, if an IDE CD burner used 200 clock cycles per second, it'd kill a CPU at 200 mhz, use 10% of a CPU at 2 ghz, and be fairly insignificant on a dual-2.5ghz or an eight-core monster. (Ironically, once you get to dual-core, part of the reason it's insignificant is the same as before -- even if it uses 100% of one CPU, you still have another whole CPU available. Similarly, the SCSI version was attractive because it'd leave you most of a CPU by offloading to some specialized processor on the CD drive.)

    Point is, not all overhead is like that. Sure, some is -- if Beryl is slow on my machine, I can probably just upgrade my video card and it'll be fast. But a lot of OS overhead is going to be slow at any speed.

    It might not matter (for now) how slow disk access is -- on this laptop, quite a few FS operations will go to the kernel first, then (via FUSE) to a userspace NTFS implementation, then back to the kernel where it's encrypted before it hits the disk, and most of the time, it's still faster than the disk can physically read and write.

    But it almost certainly does matter how slow your video driver is. For gamers, that means the difference between a smooth 60fps at a high resolution to having to turn all the settings down and getting maybe 40fps.

    --
    Don't thank God, thank a doctor!
    1. Re:"memory protection"... by Sloppy · · Score: 1

      Also, they are written with the assumption that memory protection is something which has to be done as memory segmentation...

      20 years ago, I would have shuddered in horror at the words I am about to utter, but: What's wrong with segmentation? As I look back at the bugs and resulting security problems that have plagued modern flat-memory-model systems, and the efforts to deal with the problem, it looks to me like segmentation is what everyone wishes they had, anyway. Array overflow bug? BOOM, exception.

      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    2. Re:"memory protection"... by cromar · · Score: 1
      Just to say it real for the kids, that should be:

      200 clock cycles per second, it'd kill a CPU at 200 hz, use 10% of a CPU at 2 mhz
    3. Re:"memory protection"... by SanityInAnarchy · · Score: 1

      Should have said 200,000,000 clock cycles per second. I guess I'm not used to thinking of CPUs measured in the kilohertz or lower.

      --
      Don't thank God, thank a doctor!
    4. Re:"memory protection"... by SanityInAnarchy · · Score: 1

      I think we might be talking about the same thing.

      Think of it this way: The granularity of a system with no memory protection at all is the entire system. Array overflow on Mac OS 9, in ANY program? Whoops, you just overwrote the kernel. Or fubared some other, completely unrelated process.

      The granularity of most modern systems is the process. Array overflow is not an exception, it's a segmentation fault, an illegal operation, etc. Or it's randomly corrupting some other part of your program, possibly with security implications.

      What I was suggesting, which I think you agree with, is that we move to managed memory, where the granularity of memory protection is the constructs of the language/VM. Here, array overflow means exception -- but you could conceivably have entire self-contained "programs", and a "kernel" which catches those exceptions and simply nukes the appropriate program.

      That is what I think Microsoft's Singularity is about, and it's hardly the first.

      --
      Don't thank God, thank a doctor!
  46. Plan 9 authors: "Tanenbaum hasn't learned anything by diegocgteleline.es · · Score: 5, Interesting
    This is the opinion of plan 9 authors WRT microkernels and other things:

    The implementers of Plan 9 are baffled by Andy Tanenbaum's recent posting. We suspect we are not representative of the mainline view, but we disagree at some level with most of the "GENERALLY ACCEPTED" truths Andy claims. Point by point:

          - The client-server paradigm is a good one
            Too vague to be a statement. "Good" is undefined.
          - Microkernels are the way to go
            False unless your only goal is to get papers published. Plan 9's kernel is a fraction of the size of any microkernel we know and offers more functionality and comparable or often better performance.
          - UNIX can be successfully run as an application program
            `Run' perhaps, `successfully' no. Name a product that succeeds by running UNIX as an application.
          - RPC is a good idea to base your system on
            Depends on what you mean by RPC. If you predefine the complete set of RPC's, then yes. If you make RPC a paradigm and expectevery application to build its own (c.f. stub compilers), you lose all the discipline you need to make the system comprehensive.
          - Atomic group communication (broadcast) is highly useful
            Perhaps. We've never used it or felt the need for it.
          - Caching at the file server is definitely worth doing
            True, but caching anywhere is worthwhile. This statement is like saying 'good algorithms are worth using.'
          - File server replication is an idea whose time has come
            Perhaps. Simple hardware solutions like disk mirroring solve a lot of the reliability problems much more easily. Also, at least in a stable world, keeping your file server up is a better way to solve the problem.
          - Message passing is too primitive for application programmers to use
            False.
          - Synchronous (blocking) communication is easier to use than asynchronous
            They solve different problems. It's pointless to make the distinction based on ease of use. Make the distinction based on which you need.
          - New languages are needed for writing distributed/parallel applications
            `Needed', no. `Helpful', perhaps. The jury's still out.
          - Distributed shared memory in one form or another is a convenient model
            Convenient for whom? This one baffles us: distributed shared memory is a lousy model for building systems, yet everyone seems to be doing it. (Try to find a PhD this year on a different topic.)

    How about the "CONTROVERSIAL" points? We should weigh in there, too:

          - Client caching is a good idea in a system where there are many more nodes than users, and users do not have a "home" machine (e.g., hypercubes)
            What?
          - Atomic transactions are worth the overhead
            Worth the overhead to whom?
          - Causal ordering for group communication is good enough
            We don't use group communication, so we don't know.
          - Threads should be managed by the kernel, not in user space
            Better: have a decent process model and avoid this process/thread dichotomy.

    Rob Pike
    Dave Presotto
    Ken Thompson
    Phil Winterbottom
  47. We NEED a microkernel, not Linux... by serviscope_minor · · Score: 1

    We need a REAL microkernel. You know, a kernel which has userspace filesystems. Userspace graphics. Userspace USB drivers. All the messy bits of sound (like network transparency, mixing and resampling) in userspace.

    Oh, wait.

    For those of you who didn't get the joke, look up http://fuse.sourceforge.net/, http://libusb.sourceforge.net/ and http://www.x.org/ for starters.

    --
    SJW n. One who posts facts.
  48. Minix3 + KDE by ProteusQ · · Score: 1

    I'd love to demo that combo, in case anyone wants to take on the challenging of porting.

  49. Fix the CPU and stop this silly debate by master_p · · Score: 3, Informative

    The only reason this debate is going on is because CPUs do not have the concept of modules. If they did, then each module would not be able to crash the rest of the modules.

    If you wonder how to do modules without sacrificing the flat address space, it's quite easy: In most CPU designs, each page descriptor has a user/supervisor bit which defines if the contents of a page are accessible by the other pages. Instead of this bit, CPUs must use the target address to look up module information from another table. In other words, the CPU must maintain a map of addresses to modules, and use this map to provide security access.

    This design is not as slow as it initially might seem. Modern CPUs are very fast, and they already contain many such maps: the Translation Lookaside Buffer, the Global Descriptor Table cache, the Local Descriptor Table cache, Victim Caches, Trace Caches, you name it.

    1. Re:Fix the CPU and stop this silly debate by Bluesman · · Score: 1

      You've just described virtual memory and processes with their own virtual address space.

      Unless I'm missing something.

      --
      If moderation could change anything, it would be illegal.
    2. Re:Fix the CPU and stop this silly debate by Eli+Gottlieb · · Score: 1

      Now, now. If someone actually implemented the proper solution to the problem, we couldn't keep arguing about the virtues of monolithic and micro- kernels.

    3. Re:Fix the CPU and stop this silly debate by Anonymous Coward · · Score: 0

      Clearly you haven't looked at a little known processor called the 80x86. If you had, you would have noticed the "protected mode" where each of the hardware-defined tasks could have its own code data and stack segment - all of which could be kept separate from each other. These segmenty things operate in parallel with the paging introduced in the 386 version of the device. It has all these weird and wonderful descriptor tables and gates and what have. Please don't confuse the protected mode segments from the utterly useless real-mode ones.

      Alas, this is all well and good, and all of it is pretty well ignored in most systems. The hardware task stuff is ignored (too slow and too baroque), and all of the segments are set to overlap (i.e., ignored). Just imagine all of the problems that would not have occurred had the code, stack and data segments been separated from the get go.

    4. Re:Fix the CPU and stop this silly debate by master_p · · Score: 1

      32-bit 80x86 segmentation requires 48-bit addressing...the flat address space is 32-bits.

    5. Re:Fix the CPU and stop this silly debate by master_p · · Score: 1

      You did: modules != pages.

  50. Linus's Microkernels by bobbuck · · Score: 1
    He made several of them but no one* has seen them because they're so tiny...


    *No one is noone for Slashdotters.

  51. I guess you've never seen a Mac by Anonymous Coward · · Score: 0

    Mac OS X runs on top of the Mach microkernel. Idiot.

  52. See TFA on archive.org by Hobart · · Score: 2, Informative

    Since the Vrije Universiteit Comp-Sci webserver has buckled under the firepower of the fully armed and operational Slashdot Effect, those who want to RTFA can go to Archive.org's Wayback Machine ...

    'cause TFA was written in May 2006.

    http://web.archive.org/web/*/http://www.cs.vu.nl/~ast/reliable-os/

    --
    o/~ Join us now and share the software ...
    1. Re:See TFA on archive.org by chill · · Score: 1

      Well, the University site is back up. But now minix.org has been bitch-slapped out of existence.

      --
      Learning HOW to think is more important than learning WHAT to think.
    2. Re:See TFA on archive.org by AndrewStephens · · Score: 1

      Since the Vrije Universiteit Comp-Sci webserver has buckled under the firepower of the fully armed and operational Slashdot Effect
      bah, that would have never happened if the web server was running on a properly designed micro-kernel. AMIRITE???!?
      --
      sheep.horse - does not contain information on sheep or horses.
  53. Linus is right by Anonymous Coward · · Score: 1, Funny

    I am with Linus on this one. Of course.
    I firmly believe not to be on Linus' side of the debate is treacherous

  54. Ok, here is my experience... by Anonymous Coward · · Score: 1, Funny

    I tried an OS (QNX) based on a microkernel and I observed first hand that it would not run my windows-based games (not even Solitaire!).

  55. Cosmos, C# Open Source Managed Operating System by Anonymous Coward · · Score: 0

    "The kernel, and really the whole system design, is a microkernel. The initial boot runtime is a monolithic system, only out of necessity. But onnce a 'normal' managed environment is set up, all other code (drivers, MM, scheduler, etc) would run in separate AppDomains, thus out of sheer convention the system is microkernel. What's even better for a VM-based microkernel OS is that the major historical argument against microkernels - the speed slowdown from processor context switching - is moot. Context switching (e.g. Ring 0 for kernel mode, Ring 3 for userspace, etc) is inherently unnecessary, since the VM environment handles all memory security guarantees." (Extracted from interview to Cosmos developers)

  56. In the end by Anonymous Coward · · Score: 0

    You said "in the end" four times. In the end, I think you're going to need to get a new catchphrase.

    1. Re:In the end by heinousjay · · Score: 1

      It beats "at the end of the day."

      If I have to hear that ever again I'm likely to lose what little sanity I still possess.

      --
      Slashdot - where whining about luck is the new way to make the world you want.
  57. Re:Path of least resistance and theoretical advant by Anonymous Coward · · Score: 0

    The stability of a monolithic system is that of the least stable component loaded into kernel space. If you choose hardware which has very well tested drivers then yes, you can attain a stable system. But anytime you replace hardware or upgrade drivers you run the risk of comrpomising that stability. When any code in kernel space fails the kernel has no option but to fail as that code could have overwritten critical portions of the kernel. The state of the entire machine is indeterminate.

    In a microkernel, the stability of the system is that of the kernel alone. Hardware drivers are loaded in user-space so that if any driver fails the failure is contained within the memory allocated to that driver. The kernel can then restart the driver at it's leisure and the system can continue to function.

  58. for crying out loud by boogahboogah · · Score: 1

    I read that posting over a year ago ! How about some current items FCOL ...

  59. My Girlfriend Dumped me... by hyperz69 · · Score: 1

    because of my Microkernel. She says her new man has a truly Monolithic Kernel.

  60. Re:Path of least resistance and theoretical advant by mlwmohawk · · Score: 1

    In a microkernel, the stability of the system is that of the kernel alone. Hardware drivers are loaded in user-space so that if any driver fails the failure is contained within the memory allocated to that driver. The kernel can then restart the driver at it's leisure and the system can continue to function.

    That is exactly true with regards to the kernel proper, but not of the drivers be they hardware or system. What happens to the function the driver is intended to perform? If writing the driver for a microkernel is harder and more complex, then it has a higher probability of failure. Right?

    Put it simply, who gives a rats ass if the kernel is fine if services on top of the kernel are less reliable? They are still vital to the functionality of the system. The kernel doesn't need to crash to make the system unusable.

    I don't see how it makes the whole system more reliable, it may make certain portions of the system more reliable (the kernel specifically), but the whole system, including the drivers, still needs to be reliable.

  61. Need a safe kernel, not micro by 0xABADC0DA · · Score: 5, Interesting

    We don't need a microkernel written in any language, especially not C. What we need is a kernel where everything is protected by being typesafe (a 'safe' kernel). Like a kernel written in Java (jxos) or .net (singularity), or limbo (inferno), or maybe D. People forget the original purpose of the "memory management unit" was for swap on mainframes and not for process protection. And anybody who has looked at the mess that is fork, mmap, etc dealing with memory protection in a monolithic system should know it's not good at process protection. It's absurd how much complexity and overhead is caused by this.

    A 'safe' kernel sounds slow, because it is probably interpreting bytecodes and has garbage collection. But you get many performance advantages also:

    1) idle thread can actually do something, by making programs take less room (compacting gc), offloading some of the work of free(), and optimizing code. So programs respond faster when you switch back to them.

    2) lack of data copying. Current systems often copy a *lot* of data from calls to read(2), write(2) and friends, and attempts to reduce this with calls like sendfile or page sharing is very complicated and has a lot of overhead. With a 'safe' kernel you can just give a read-only view, or any number of other very simple methods where no copying takes place.

    3) mmu can be used to optimize garbage collection. Only pages written to since the last collection need to be checked for references to new objects, which can improve performance drastically if the instructions inserted to implement a software 'memory barrier' can be removed. It can also help run a gc in parallel since it can easily know if the objects it is looking at have changed during the collection.

    4) can eliminate all TLB flushes and stalls from swapping page tables

    5) much faster context switch means programs can have smaller time slices, so responsiveness is improved. Meaning less latency in audio (and everything else) without special hacks like magic 'realtime' processes.

    6) can run on all hardware, even when lacking memory protection

    7) hardware access safer than micro or monolithic kernel, and easier to write drivers

    ... and so on.

    1. Re:Need a safe kernel, not micro by logicnazi · · Score: 2, Insightful

      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)

      --

      If you liked this thought maybe you would find my blog nice too:

    2. Re:Need a safe kernel, not micro by Timothy+Brownawell · · Score: 1

      This gets particularly interesting if you don't allow globals. Then you get a capability system, and can do all sorts of cool things.

      And I'd guess that doing this with a type-safe bytecode instead of hardware protection would mean that there's minimal or no performance penalty compared to what we have now, because of the lack of copying and TLB flushes and the optimization tricks that having a runtime code profile could let JIT compilers do.

    3. Re:Need a safe kernel, not micro by 0xABADC0DA · · Score: 1

      Ok I see your point, but in practice if your code is not typesafe then that means any interface between it any other code (or the OS) is going to be through deep copies, only public fields, and with sanity checks... so basically ints, strings, and maybe some really simple structs like we have now with traditional syscalls. Gross. I know singularity does some kind of copying like that, but I wouldn't say it's a great idea...

      Besides, these languages are in a sense simply doing all their work inside a byte[], thus the code is still typesafe -- you have to do the same work to prove 'not doing anything bad' as to prove bounds on an array.

    4. Re:Need a safe kernel, not micro by ceroklis · · Score: 1

      The only problem with this is that you are forced to write every single application in the "managed" language the kernel is written in. This is simply not acceptable. You have to support all the existing C applications and some applications need the speed of assembly.

    5. Re:Need a safe kernel, not micro by Anonymous Coward · · Score: 0

      Best approach for C applications is VMWare.

      For those rare cases where assembly language is needed a "kernel" module could be an acceptable compromise.
      Or perhaps some extension method to the JIT compiler ("extension-bytecode X should be interpreted as ..."). Both would require permissions, obviously.

    6. Re:Need a safe kernel, not micro by Anonymous Coward · · Score: 0

      A 'safe' kernel sounds slow...
      It seems like it is slow. From http://www4.informatik.uni-erlangen.de/Projects/JX/publications/jx-sec.pdf (jxos):
      Performance is in the 50% range of monolithic UNIX performance for computational-intensive OS operations. The difference becomes even smaller when I/O from a real device is involved.

    7. Re:Need a safe kernel, not micro by Anonymous Coward · · Score: 0

      What we need is a kernel where everything is protected by being typesafe (a 'safe' kernel). Like a kernel written in Java (jxos) or .net (singularity), or limbo (inferno), or maybe D.


      To get rid of assembler or C, you need hardware that uses a more useful BIOS (PC BIOS leaves the CPU in 16 bit mode), and no hardware is allowed to be timing-specific (asm is also used where timing is important) and no hardware should need weird and wonderful workarounds for bugs.

      People forget the original purpose of the "memory management unit" was for swap on mainframes and not for process protection


      And TLBs, the weird 64 GB RAM ppro extensions to allow more ram on a 32bit CPU, DMA where the hardware needs physical memory addresses, MTRRs and a number of other wonderful limitations. Right now correct cache use is as important as correct swap use was. You can't get rid of an MMU without severely impacting performance.

      Oh, and your apps will still be written in C -- at least some.
    8. Re:Need a safe kernel, not micro by gregarine · · Score: 1

      This was published 12 May 2006. Why is it on the front page today?

      --

      I like traffic lights
    9. Re:Need a safe kernel, not micro by 0xABADC0DA · · Score: 1

      To get rid of assembler or C ... Obviously you need some asm and possibly C to bootstrap the kernel, and you may need a few lines here and there for broken hardwares. But this is less than 1%, and done once with the port to that arch.

      And TLBs, the weird 64 GB RAM ppro extensions to allow more ram on a 32bit CPU, DMA where the hardware needs physical memory addresses, MTRRs and a number of other wonderful limitations. Right now correct cache use is as important as correct swap use was. You can't get rid of an MMU without severely impacting performance. Yes, you can. For instance caching is done with pages in a monolithic OS so it avoids copies, but with a safe OS the object could be shared across multiple processes all using the same physical address (since they don't need to be protected from each other), or each process can be given a 'view'. You don't need TLBs if you don't have virtual addresses, which are not a requirement with a safe os. Since there is only one memory space (kernel + all running code) you can use physical addresses for DMA.

      You still want virtual memory since it can make a lot of the os simpler (in contrast to monolithic kernels where it makes them more complicated but is used because it has to be). But an architecture without virtual addressing could run faster and with less power -- if mainstream processors were to be designed that way.

      Oh, and your apps will still be written in C -- at least some. So what? In monolithic like linux your apps will still be written in Java -- at least some.

      The difference is whether everything suffers from the overhead of memory protection or whether just some of your old-style programs do.
    10. Re:Need a safe kernel, not micro by SanityInAnarchy · · Score: 1

      Devil's advocate:

      The difference is whether everything suffers from the overhead of memory protection or whether just some of your old-style programs do.

      The difference is whether everything suffers from the overhead of garbage collection or whether just some of your newfangled programs do.

      I actually agree with you, but that is not a compelling argument.

      --
      Don't thank God, thank a doctor!
    11. Re:Need a safe kernel, not micro by naasking · · Score: 1

      The downside is that it will likely be a single-address space system, so you can't use more than your addressable memory, ie. MMU operating systems can theoretically host two processes each consuming 4GB on a 32-bit machine, where a language-based system like Singularity can't. You can solve this by introducing page tables again, but you also reintroduce many of the problems you sought to avoid (TLB flushes, slower context switches, copying, etc.). There may be alternative designs which don't suffer from this limitation though, and I agree that language platforms are the future.

    12. Re:Need a safe kernel, not micro by Anonymous Coward · · Score: 0

      The difference is whether everything suffers from the overhead of garbage collection or whether just some of your newfangled programs do. ... I actually agree with you, but that is not a compelling argument. I would see your point if garbage collection were not already faster in actual programs even without some advantages that would come from direct mmu access:

      http://www.ibm.com/developerworks/java/library/j-jtp09275.html

      The few cases where hand-optimized assembly is needed, like in media converters or raw number crunching, can be handled with special unsafe functions, 'native code methods' as it were.
    13. Re:Need a safe kernel, not micro by SanityInAnarchy · · Score: 1

      That's why I prefixed that point with "devil's advocate".

      Without this new information (which I did know about), you don't really have an argument. With this information, it's kind of a compelling argument, and my only remaining comment is, what kind of garbage collection? (Can they be swapped out at will? Will they support soft or hard realtime?)

      Assigning a big blob of memory to an application is a pretty much solved problem. Is garbage collection sufficiently solved for this to be desirable of a general-purpose OS? (I really hope so. It's exciting stuff!)

      --
      Don't thank God, thank a doctor!
    14. Re:Need a safe kernel, not micro by Anonymous Coward · · Score: 0

      Without this new information (which I did know about), you don't really have an argument. Is it my purpose to write a master's thesis for a post on /.? No, it is not.

      This is a discussion on the relative merits of micro and monolithic kernels, and related system design. I give a link for your benefit, not for the argument's sake -- because the argument is directed at people who have at least a basic understanding, but who may not have seriously considered or imagined the possibilities.
  62. Ok I'll try by sryx · · Score: 1

    I tried an OS based on a microkernel and I observed that it was slow, hard to program, and not in use commercially first hand.

    Have fun with that one guys!

  63. Notes on interprocess communication by Animats · · Score: 5, Interesting

    As someone who's done operating system internals work and has written extensively for QNX, I should comment.

    Down at the bottom, microkernels are about interprocess communication. The key problem is getting interprocess communication right. Botch that, from a performance or functionality standpoint, and your system will be terrible. In a world where most long-running programs now have interprocess communication, it's amazing that most operating systems still do it so badly.

    For interprocess communication, the application usually needs a subroutine call, and the operating system usually gives it read and write. Pipes, sockets, and System V IPC are all queues. So clunky subroutine call systems are built on top of them. Many different clunky subroutine call systems: SOAP, JSON, XMLHttpRequest, CORBA, OpenRPC, MySQL protocol, etc. Plus all Microsoft's stuff, from OLE onward. All of this is a workaround for the mess at the bottom. The performance penalty of those kludges dwarfs that of microkernel-based interprocess communication.

    I've recently been writing a web app that involves many long-running processes on a server, and I wish I had QNX messaging. I'm currently using Python, pickle, and pipes, and it is not fun. Most notably, handling all the error cases is much harder than under QNX.

    Driver overhead for drivers in user-space isn't that bad. I wrote a FireWire camera driver for QNX, and when sending 640 x 480 x 24 bits x 30 FPS, it used about 3% of a Pentium III, with the uncompressed data going through QNX messaging with one frame per message. So quit worrying about copying cost.

    The big problem with microkernels is that the base design is very tough. Mach is generally considered to have been botched (starting from BSD was a mistake). There have been very few good examples anyone could look at. Now that QNX source is open, developers can see how it's done. (The other big success, IBM's VM, is still proprietary.)

    Incidentally, there's another key feature a microkernel needs that isn't mentioned much - the ability to load user-space applications and shared libraries during the boot process. This removes the temptation to put stuff in the kernel because it's needed during boot. For example, in QNX, there are no display drivers in the kernel, not even a text mode driver. A driver is usually in the boot image, but it runs in user space. Also, program loading ("exec") is a subroutine in a shared object, not part of the kernel. Networking, disk drivers, and such are all user-level applications but are usually part of the boot image.

    Incidentally, the new head of Palm's OS development team comes from QNX, and I think we'll be seeing a more microkernel-oriented system from that direction.

    1. Re:Notes on interprocess communication by Eli+Gottlieb · · Score: 2, Insightful

      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.

    2. Re:Notes on interprocess communication by Verte · · Score: 1

      I quite like what Coyotos does here- it treats the memory as one giant disk cache, and includes the pager in the TCB. Maybe not for everyone, but there are pages and pages on how well a similar setup performed in EROS.

      --
      We at slashdot are scientists, specialists and kernel hackers. Your FUD will be found out.
    3. Re:Notes on interprocess communication by Animats · · Score: 1

      Actually, it's probably time to get rid of paging out to disk. At best, virtual memory creates the illusion of having twice as much memory, while seriously reducing performance. With DRAM at $64/GB, it's now more trouble than it's worth. Disk rotation isn't getting any faster.

      (QNX actually does have limited support for virtual memory; it's used for big GCC compiles and not much else.)

    4. Re:Notes on interprocess communication by Eli+Gottlieb · · Score: 1

      Actually, it's probably time to get rid of paging out to disk. Unfortunately, that would necessitate hiring good programmers to remove all the bloat from today's software. And by bloat I mean "graphics", "user-friendliness", "internationalization", and "multimedia capability".

      OK, so I exaggerate a bit. We could probably get software back down to the size where we could run decent-sized systems in nothing but RAM. Still, on Linux and OS X the pagers actually keep a good working set in memory at all times, so they actually speed things up vs. the no-paging solution (which I suppose would require closing an app to open another if I run out of RAM?).
  64. it's like Zonk is just phoning it in by OrangeTide · · Score: 1

    Dear Zonk,
    once I got the slashdotted site to load it was like 2006 all over again. When some new information is presented about microkernels then feel free to link to that. Or at least say "May 2006" at the end of the article so we know not to overload some poor webserver for something that is not worth our time.

    --
    “Common sense is not so common.” — Voltaire
    1. Re:it's like Zonk is just phoning it in by hedwards · · Score: 1

      Yeah really, I thought that this one was mostly settled, and years ago. I thought that was why linux started to include kernel modules that could be loaded at run time so that those modules wouldn't have to be loaded for every machine running stock Linux.

      It's nice to have all the modules compiled into a monolithic kernel, but it gets terribly inefficient when many or most of those drivers are for devices which aren't even present in the system, or cannot be present in the same system. I admit that it's also nice not to have to think about loading in additional modules, but a kitchen sink kernel causes its own share of headaches. Especially when you need to recompile the kernel just because you're adding a new piece of hardware, rather than just loading it as a module.

      I find that even without specific compiler optimizations that my FreeBSD system runs faster when I leave out the kernel cruft for things that I don't have in my computer. I can't imagine that Linux would be any different, especially when I consider the size of it.

  65. It's all about the users by gilesjuk · · Score: 1

    End users don't much care for the technical side of things, they want performance, security and ease of use.

    Recompiling a kernel or having to have a specific kernel version to use a driver is a ball ache. It's the biggest weakness of Linux and the monolithic kernel.

    Amiga OS was microkernel back in the 80s, it worked pretty well. Due to space and hardware considerations it lacked memory protection and resource tracking. But it was running on 7.14Mhz CPU back then and still feels more responsive than some OSes do now.

    1. Re:It's all about the users by Anonymous Coward · · Score: 0

      You're the kind of person that Tannenbaum is complaining about - you don't have a clue why Linux is called monolithic and how a microkernel differs from that. Having a microkernel is no cure for driver incompatability, nor does it imply having a driver interface that is any more version independent. There's no reason you couldn't have a monolithic kernel with a great driver interface and a microkernel with a rotten one.

  66. Microware's OS9 8K Kernel!! by BrendaEM · · Score: 2, Interesting

    Back in the 1980's, I had a Color Computer 3, which was a pretty anemic machine, but it ran Microware's OS9 Level II. The Color Computer had a 6809b processor, which could only natively map 64K into its address space. Additional hardware allowed OS9 to map any eight of 8K blocks into the processor. Of that 64K, the entire kernel was eight kilobytes. The OS was a real-time multi-user windowing operating system.

    My old system had 3-1/5 720K disks. The whole operating system fit on one disk. Adding another disk gave you a primitive graphical file manager.

    Don't believe me? Here we go!

    VCC Emulator:
    http://vcc6809.bravehost.com/index.html

    You need OS9 Level II Disk Images:
    http://vcc6809.bravehost.com/disks/os9l2.zip

    Some Quicky Instructions:
    The emulator emulates this expansion-slot thing called a Multipak, in which you drop the "502 floppy controller" into, in which you can mount the (360k) disk images, as seen above. From there you can boot, by typing: DOS

    You can load/unload commands at will, and load a bunch of merged ones with:
    load utilpak1

    There is a manual here. Check out the technical section, the whole OS is a re-enterent tree!
    http://www.clubltdstudios.com/coco/downunder/OS9/OS9_Level_2.zip

    Be careful with the commands deldir (rmdir) dsave (xcopy) os9gen and cobbler...and format too. If you have external floppys the emulator can format them, if so mounted!

    A little cramped for virtual-storage? You can install a virtual hard disk controller into the Multipak, and mount this virtual disk image virtual controller.
    http://vcc6809.bravehost.com/bin/nitros9.zip

    To boot from the virtual hard disk, change the FD-502 disk controller settings to RGBDOS. To boot from the virtual HD, Mount the HDD controller in the multipack which was a slot expansion thing. To boot, type DOS253

    But ick, a small 32 column screen. You can fix it by:

    wcreate /w1 -s=2 0 0 80 24 00 02 02
    shell i=/w1&

    No change? Press [Home] you just opened another virtual terminal and forked an shell to it. You can press [F11] for fullscreen, [F10] to kill the status line.

    There's more disks here:
    http://www.clubltdstudios.com/coco/downunder/OS9/

    On the OS9 disks, you can find Basic09 and it's runtime RunB. For it's day, Basic09 was arguably the best compiled basic offered anywhere. Basic09/RunB/OS9 allowed dll-style basic programming in the 1980s. Today, you would find its error handling lacking, as actually requiring a line number, and C programmers would miss the case/switch statements.

    The asm source code is out there for both OS9 and NitrOS9, which is OS9 modded for the Hitachi 6309.

    Enjoy : )

    At times I do wonder why the Linux kernal has to be recompiled for hardware changes. The kernel modules are a step in the right direction, but why is everyone still loading Nvidia TNT support? The kernel should be the kernel and that's it, and whatever hardware you have should be abstracted, and at least separable. Linux doesn't have commands like cobbler and OS9 gen to build a bootstrap from compiled modules. While the kernel modules are a good idea, why aren't they used for all devices? Flash drives are still being mounted as SCSI's? Because the kernel isn't modular, and it makes it harder to swap out device support for the end user.

    --
    https://www.youtube.com/c/BrendaEM
    1. Re:Microware's OS9 8K Kernel!! by BrendaEM · · Score: 1

      I also want to add that some people are having success running OS9 under MESS/XMESS, but I don't know how to configure it yet. I am going to do an experiment to see if the VCC emulator will run under Wine : )

      --
      https://www.youtube.com/c/BrendaEM
    2. Re:Microware's OS9 8K Kernel!! by Anonymous Coward · · Score: 0

      Flash drives are mounted as SCSI drives because USB mass-storage encapsulates SCSI commands.

  67. why use unreadable fixed width pages? by belmolis · · Score: 1

    My immediate reaction to this article is not about microkernels at all. It is: "Why would somebody like Andy Tannenbaum use an HTML generator that creates unreadable over-wide fixed width pages?" Does he not read what he posts? I understand it when some non-technical person uses an HTML generator that does this, but surely he could do better than this.

  68. Did you ever study CPU architecture? by Anonymous Coward · · Score: 0

    I've only read a little, but the difference between kernel and not-kernel are twofold:

    a) kernel accesses everything, not-kernel cannot even accidentally (in theory)
    b) kernel can access not-kernel but that is insecure so doesn't, not-kernel can access kernel only if the kernel lets it

    so when you swap from kernel to not-kernel, you need to change the memory mapping (since the kernel may have moved the app out and back again) and any memory exchange HAS to be done through a copy. Neither should access each others' memory space directly.

    Each of these actions take CPU time.

    So if a driver is in kernel, it can directly access kernel memory buffers. If it is user-mode, it must copy data where the kernel will read it safely.

    Is that copy process going to be slower than not-copy or not?

    1. Re:Did you ever study CPU architecture? by maxwell+demon · · Score: 1

      But couldn't the kernel just re-map a page from the calling process to the device driver's one? Then no extra copying would be required.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    2. Re:Did you ever study CPU architecture? by Anonymous Coward · · Score: 0

      But couldn't the kernel just re-map a page from the calling process to the device driver's one? Then no extra copying would be required.

      Mapping pages requires modifying page tables which is often more expensive than copying.

    3. Re:Did you ever study CPU architecture? by jadavis · · Score: 1

      So if a driver is in kernel, it can directly access kernel memory buffers. If it is user-mode, it must copy data where the kernel will read it safely.

      Why not map the memory-mapped I/O regions to a user-mode device driver? Then it can directly access the device.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    4. Re:Did you ever study CPU architecture? by Verte · · Score: 1

      Mapping pages requires modifying page tables which is often more expensive than copying. Even if you were correct (strictly speaking, it may be correct on a kernel such as Linux where kernel calls are so expensive), you only have to do it once. Now the driver has almost everything it needs right there in userspace, and writing to the hardware appears no slower than a regular memory write.
      --
      We at slashdot are scientists, specialists and kernel hackers. Your FUD will be found out.
  69. Like jump-rope by Tony · · Score: 4, Funny

    For little girls, and big fuck-off boxers.

    (With pardons to Eddie Izzard.)

    --
    Microsoft is to software what Budweiser is to beer.
    1. Re:Like jump-rope by kat_skan · · Score: 1

      Indeed. A career filled with blunt head trauma certainly would explain why an otherwise rational person might come to prefer Emacs.

    2. Re:Like jump-rope by mouko · · Score: 1

      For little girls, and big fuck-off boxers.

      (With pardons to Eddie Izzard.) Maybe, but Chuck Norris uses vi, and not even big fuck-off boxers fuck with the Chuck. (Yeah, I went there.)
  70. I used to work on a commercial microkernel by Soong · · Score: 1

    And the biggest thing it was lacking was another million manhours (from something like the Linux Swarm or the Microsoft Horde) to just put in all the zillion features that the major OSes have. Aside from that it could compete on performance (and exceed in a few specially marketable ways that made the whole thing worth buying) and also have a few extra features that microkernels do better.

    --
    Start Running Better Polls
  71. What constitutes the kernal ? by ardmhacha · · Score: 1

    Apologies for the dumb question.

    What actually makes up the kernel? If I am logged on to a unix/linux server what can I see that is part of the kernel?
    On a HP box that I use (see below) are any of the listed processes part of the kernel?
    $ uname -rs
    HP-UX B.11.11
    $ ps -ef
              UID PID PPID C STIME TTY TIME COMMAND
            root 0 0 0 Jan 11 ? 1:22 swapper
            root 8 0 0 Jan 11 ? 0:00 supsched
            root 9 0 0 Jan 11 ? 0:00 strmem
            root 10 0 0 Jan 11 ? 0:00 strweld
            root 11 0 0 Jan 11 ? 0:00 strfreebd
            root 2 0 0 Jan 11 ? 2:33 vhand
            root 3 0 0 Jan 11 ? 6:48 statdaemon
            root 4 0 0 Jan 11 ? 0:10 unhashdaemon
            root 12 0 0 Jan 11 ? 0:00 ttisr
            root 13 0 0 Jan 11 ? 0:00 ioconfigd
            root 1 0 0 Jan 11 ? 0:01 init
            root 27 0 0 Jan 11 ? 0:00 lvmkd
            root 28 0 0 Jan 11 ? 0:00 lvmkd

    1. Re:What constitutes the kernal ? by SpinyNorman · · Score: 1

      The kernel is the lowest level software that interacts directly with the hardware (processor, memory controller, etc) and provides a more abstract virtual machine in terms of processes, threads, memory allocation, inter-process communication. A micro kernel would essentially stop there and let things like device drivers and file systems be implemented at user level, whereas a monolithic kernel would include stuff like that as part of the kernel itself.

      Of the stuff you list there (just going on the names, without knowing specifically what these are in the HP world), it's a mix of user-space stuff (strXXX C-library, daemons), possibly kernel (swapper may be part of memory subsystem), and some stuff that (ttisr = teletype interrupt service routine?, lvmkd = logical volume make device?) that could be considered as either depending on the kernel design... in this case kernel given that it's a Unix box.

  72. A modest proposal for Tanenbaum by mikehoskins · · Score: 3, Interesting

    I know this article is old, but can we agree to this?

    First, a couple of background questions... Andy, you believe wholeheartedly in microkernels, right? Do you believe in them more than Minix, or is this merely a shameless plug for your product, Minix?

    Based on those two responses, here is my proposal.... Assuming you believe in microkernels more than Minix, why not take a leadership role in GNU/Hurd and get that project going, again? http://www.gnu.org/software/hurd/hurd.html

    Perhaps, you can get assistance from the Xen people, too. http://www.xensource.com/

    That's my modest proposal....

    1. Re:A modest proposal for Tanenbaum by Anonymous Coward · · Score: 2, Insightful

      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?

    2. Re:A modest proposal for Tanenbaum by mikehoskins · · Score: 0

      What exactly is so interesting about GNU/HURD that he can't do with MINIX3 already?

      Why pick GNU/HURD (Linux) over Minix 3? The answer is Linux (vs. Minix), of course.

      Linux has a VAST array of applications, drivers, libraries, and kernel features that aren't ported to Minix. And "seemingly almost everyone" develops for Linux, too. Then, there's the sheer number of Linux users, servers, etc.

      How many server farms are there for Minux? ISP's? Data Centers?

      So, there's a LOT that Linux can do that Minix cannot possibly begin to do, for the above reasons.... Do you want to port all the stuff in Linux to Minix? I didn't think so.

      What does Minix have over Linux, again? Oh yeah, Ivory Tower Purity (tm).

      What does Linux have, in one word? "Momentum"....

      OK, so you're a typical Anonymous-Coward-Linux-Basher. Fine -- I'll bite. Substitute Linux with FreeBSD (BSD) or OpenSolaris (CDDL). Try the argument, again.

      (Naturally, FreeBSD still has *some* of the same issues as Minix, when compared to Linux, but it's a whole lot closer to Linux in terms of apps, drivers, libraries, and kernel features, plus head count. There are FreeBSD ISP's, for example, and FreeBSD has most of the same open source apps as Linux).

      I tried Minix 3 and it felt old, clunky, and feature-less. Where are my favorite apps? I don't know. Minix is an OS for education sake, not real world use.

      Flame away!

    3. Re:A modest proposal for Tanenbaum by NovaX · · Score: 2, Interesting

      GNU/HURD isn't Linux. It is an utter failure of an OS kernel and was always more about hype by the FSF - they really didn't put much effort into it. Perhaps because Stallman couldn't write it in ELisp. ;)

      Remember that Minix-3 was a fairly recent update of v2.0, which was completed in the late 80s. Minux is still a joy to work with as a programmer, but well past its time for being used as a standard OS. Its perfect for classrooms and learning kernel programming. You'd probably enjoy programming against it than Linux, for example. It was never intended, and effort was made to ensure it wasn't allowed, to be extended and used for real-world. The complexity to make it fully featured would destroy its simplicity and student projects that make it ideal for education.

      --

      "Open Source?" - Press any key to continue
    4. Re:A modest proposal for Tanenbaum by Anonymous Coward · · Score: 0

      Why pick GNU/HURD (Linux) over Minix 3?

      Well arn't you the biggest idiot to have posted in this entire article. You don't even know what OSes are under discussion: how can you possibly believe you are qualified to comment to on this subject?

    5. Re:A modest proposal for Tanenbaum by MichaelSmith · · Score: 1, Insightful

      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.

    6. Re:A modest proposal for Tanenbaum by Xabraxas · · Score: 1

      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.

      That is not an accurate description of GNU/Hurd. Hurd replaces Linux. They are mutually exclusive (not counting virtualization), hence GNU,/Hurd vs GNU/Linux. GNU/Hurd is the Hurd microkernel combined with the GNU userland to make a complete operating system. GNU/Linux is the Linux monolithic kernel combined with the GNU userland to make a different, although similar operating system. They are similar because the userland is exactly the same and they wouldn't seem very different to the casual user but underneath they are very different from each other, obviously as one is a microkernel and the other is a monolithic kernel.

      --
      Time makes more converts than reason
    7. Re:A modest proposal for Tanenbaum by bcmm · · Score: 2, Insightful

      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.

      --
      # cat /dev/mem | strings | grep -i llama
      Damn, my RAM is full of llamas.
    8. Re:A modest proposal for Tanenbaum by mikehoskins · · Score: 1

      OK, obviously you didn't read past that question. I was responding to the parent's question.

      So, you have to read the context (previous author) and my follow-up to have a clue about what I'm referring.

      I made a mistake about Hurd's relationship to Linux (non-existent). Otherwise, you are missing the point, completely.

    9. Re:A modest proposal for Tanenbaum by hlee · · Score: 5, Insightful

      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.

    10. Re:A modest proposal for Tanenbaum by Anonymous Coward · · Score: 0

      Wait, +1 Insightful?

      Mods, if you don't know anything about the subject being discussed, don't moderate it. Seriously.

    11. Re:A modest proposal for Tanenbaum by Anonymous Coward · · Score: 0

      Dipshit! The microkernel is the kernel. Debian is a distribution -- kernel + userland utilities. Debian HURD is the GNU/HURD microkernel + GNU userland utilities. Nothing linux about it. The article wasn't about linux vs minix or even micro vs monolithic. It was a rebuttal to the idea that microkernels aren't good. The only accurate thing you've posted is the admission that you're useless.

      Now go back to buttfucking all your fag friends, homo.

    12. Re:A modest proposal for Tanenbaum by Anonymuous+Coward · · Score: 2, Interesting
      There was however a version of linux hosted as a server on Mach (MkLinux) - the Mach kernel being considered a 'hardware' platform of sorts as seen from the linux kernel perspective.

      And linux was similarly ported to the L4 microkernel.

      I don't know how Debian/Hurd manages to get all that array of kinky linuxish apps working on Hurd, but the idea of actually running the whole linux as some Hurd server shouldn't be that weird.

    13. Re:A modest proposal for Tanenbaum by Verte · · Score: 2, Informative

      why not take a leadership role in GNU/Hurd and get that project going, again? The Hurd going along swimmingly, thankyou. They don't have vast Hurds of unix-replacing developers, but they do have people who enjoy what they do and know it inside out.

      I doubt Andy would be so interested in the Hurd, he is very much the message-passing fan. He also doesn't like the GPL.
      --
      We at slashdot are scientists, specialists and kernel hackers. Your FUD will be found out.
    14. Re:A modest proposal for Tanenbaum by LWATCDR · · Score: 1

      Not at all. I did read it all.
      Minix-3 is still very new. It deserves to get ALOT of attention because it is one of the most interesting FOSS projects out there right now.

      Right now with Linux what happens if you have an exploit in a device driver?
      You have an exploit in the Kernel.
      Right now if you have a crash in a Device driver what happens?
      You have a Kernel panic.

      So a bad serial port, printer, or webcam will take out a server.
      Witn Minix if a device driver crashes the os will take a debug snapshot and then restart the device driver. You can not do that with a monolithic kernel. Linux depends on every device driver and a lot of other code to be bug free.
      The idea behind Minix3 and all Microkernels is that the few lines of code you have in the kernel the few bugs you have in the kernel. The basic idea is to reduce the number of critical lines of code to a bare minimum.

      Minix3 is trying to do something that Linux just can't. It is trying to be self healing. Linux is a very reliable OS as it is but it still can not and can never handle a device driver crash.
      Minix is trying to create an ever more stable and reliable OS that can.

      Your post was just so clueless about the goals of Minix, what a Microkernel is, what a Hypervisor is, HURD is, and what Linux is that I just had to post. The truth is that none of it would have been so bad if you hadn't had the shear arrogance to suggest that you knew what Tanenbaum should be doing to help more than he did.

      Maybe you should look at some of the design features of Minix-3
      Reduce kernel size

      Reduce Kernel Size
      Monolithic operating systems (e.g., Windows, Linux, BSD) have millions of lines of kernel code. There is no way so much code can ever be made correct. In contrast, MINIX 3 has about 4000 lines of executable kernel code. We believe this code can eventually be made fairly close to bug free.

      Cage the bugs
      In monolithic operating systems, device drivers reside in the kernel. This means that when a new peripheral is installed, unknown, untrusted code is inserted in the kernel. A single bad line of code in a driver can bring down the system. In MINIX 3, each device driver is a separate user-mode process. Drivers cannot execute privileged instructions, change the page tables, perform I/O, or write to absolute memory. They have to make kernel calls for these services and the kernel checks each call for authority.

      Limit drivers' memory access
      In monolithic operating systems, a driver can write to any word of memory and thus accidentally trash user programs. In MINIX 3, when a user expects data from, for example, the file system, it builds a descriptor telling who has access and at what addresses. It then passes an index to this descriptor to the file system, which may pass it to a driver. The file system or driver then asks the kernel to write via the descriptor, making it impossible for them to write to addresses outside the buffer.

      Survive bad pointers
      Dereferencing a bad pointer within a driver will crash the driver process, but will have no effect on the system as a whole. The reincarnation server will restart the crashed driver automatically. For some drivers (e.g., disk and network) recovery is transparent to user processes. For others (e.g., audio and printer), the user may notice. In monolithic systems, dereferencing a bad pointer in a (kernel) driver normally leads to a system crash.

      Tame infinite loops
      If a driver gets into an infinite loop, the scheduler will gradually lower its priority until it becomes the idle process. Eventually the reincarnation server will see that it is not responding to status requests, so it will kill and restart the looping driver. In a monolithic system, a looping driver could hang the system.

      Limit damage from buffer overruns
      MINIX 3 uses fixed-length messages for internal communication, which eliminates certain buffer overruns and buffer management problems. Also, many exploits work by overrunning a buffer to trick the progr

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    15. Re:A modest proposal for Tanenbaum by Anonymous Coward · · Score: 0

      Yeah, but, wake me up when a microkernel based operating system does something other than sit in a research lab -- and no, faux micro-kernels do not count, which is what is usually mentioned when this question is asked. ACTUAL honest to God microkernel-based operating systems.

    16. Re:A modest proposal for Tanenbaum by aliquis · · Score: 1

      But uhm, it's gpl, and yeah, gpl software always rule and will always win, so that's why his os suck and hurd would be much better, pretty much so, yeah!

      Because like, look at Sun! Solaris suck lol! Gentoo wins! Solaris + GPL = autowin for Sun always!

      (Nah, I'm just tired..)

    17. Re:A modest proposal for Tanenbaum by aliquis · · Score: 1

      The momentum for Hurd is insane!

    18. Re:A modest proposal for Tanenbaum by Anonymous Coward · · Score: 0

      ALOT

      "a LOT".

      The idea behind Minix3 and all Microkernels is that the few lines of code you have in the kernel the few bugs you have in the kernel.

      "fewer", "fewer".

      had the shear arrogance

      "sheer".

      fairly close to bug free

      "bug-free".

    19. Re:A modest proposal for Tanenbaum by Anonymous Coward · · Score: 0

      RTFA, cunt. He lists several micro-kernel OSes that are in use in real-life.

    20. Re:A modest proposal for Tanenbaum by Anonymous Coward · · Score: 0

      *REAL* Micro-kernels, cunt. Every one of those is a fucking monolithic kernel which has used a few micro-kernel concepts.

      You do understand why micro-kernels have gone exactly fucking nowhere outside of research labs, right? It's because you need to constantly redesign your interface across the kernel as you develop... and most software is built incrementally. This is why the HURD never, ever gets closer to release, and why Linux development goes like a rocket.

      Microkernels, at least, pure hard line ones... and pure academic wank. Their great contribution is a better understanding of how NOT to build software.

  73. Darwinism and "the best" by Sloppy · · Score: 1

    In just about all contexts, from biology to the subtlest of memes (including OS design), Darwinism selects "the best" using values that are utterly different than just about any person's values, almost certainly including your own. This is why the evolutionary winner just happens to be a system that you just said doesn't work.

    Learn from nature, but don't revere it. It's telling you how things are, not what to do.

    And no, I don't think (can't RTFA, slashdotted) Andy is suggesting Linux be rewritten. He's advocating how new projects should start. I think it's funny that so many people think that his general concept of breaking down problems and having clear interfaces, happens to somehow be wrong for OS kernels, even though they accept the same principles for every other type of software.

    --
    As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
  74. Design goals by Tony · · Score: 3, Informative

    He mentions them because they meet his design goal: they are highly-reliable operating systems used in mission-critical applications. (Here, "mission" might be, "Bombing the fuck out of people.") He is building his case that it's easier to design a bullet-proof OS using a microkernel, as opposed to a monolithic kernel.

    And he's right. If your goal is reliability and security, a microkernel is a better design. Both goals rely on limiting the amount of time (and the amount of code) spent in kernel space. "Process isolation" is the mantra.

    NeXTStep was a hybrid kernel. It was *almost* a microkernel (based on Mach). And, it was *highly* usable. It had the most usable UI in the industry, and still does in its current reincarnation as OS-X.

    I think microkernels still have legs.

    --
    Microsoft is to software what Budweiser is to beer.
    1. Re:Design goals by rubycodez · · Score: 1

      but those useable systems had to leave many parts of the Mach architecture behind (that's why they're not microkernel OS)

      we're back to Minix-3 and HURD as the only two real-world general purpose examples, Minix is interesting and has potential, but HURD is just unfinished science project

    2. Re:Design goals by shmlco · · Score: 2, Insightful

      "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?

      --
      Any sect, cult, or religion will legislate its creed into law if it acquires the political power to do so.
    3. Re:Design goals by rubycodez · · Score: 1

      why would you think a user-space app stack running on a microkernel can't be hacked or crashed? No one cares if the microkernel is still up when the money-moving database is compromised. there are monolithic OS with security as the primary design goal, and plenty with robustness as primary design goal (100% uptime over years is nothing new to client's datacenters where I work, NSK & OS/390 for example)

    4. Re:Design goals by shmlco · · Score: 1

      Yes, but many of the ways the server or database BECOMES hacked lies in holes in the OS (network buffer overruns, TCP/IP stack hacks, some weird service or port exploit, and so on), which in turn are escalated up into kernel until the entire system becomes rooted.

      While the perfect bug-free service will probably never exist, they can be isolated, and communications between the lower-priority services and the kernel can be be better protected, monitored, and defended.

      --
      Any sect, cult, or religion will legislate its creed into law if it acquires the political power to do so.
  75. Why we use VMs by Tony · · Score: 1

    In my experience, VMs are used more for management simplicity, rather than their security, stability, or simplicity (the whole point of microkernels). Most people who use VMs do so to either a) make better use of hardware by running multiple operating system instances, or b) create a disk-based image of a running system for backup and restore (and other management) purposes.

    It's all about the ease of management, rather than the things a microkernel cares about.

    --
    Microsoft is to software what Budweiser is to beer.
  76. Hilarious by Stan+Vassilev · · Score: 1

    Always fun to watch both sides fight in whether..or argument, because reality consistently demands hybrid solutions to most problems, for best efficiency and maintainability. The balance needs to be carefully selected on a per project basis, what types of users will the OS target be, in what environment it'll be used, commonly run on what type hardware etc. etc.

    They are both wrong and right, and it's tragic they don't realize it.

  77. Debate Needs More Clarity by logicnazi · · Score: 2, Interesting

    This debate could use a lot more clarity about what is actually being debated. The truth is there are two separate design strategies that generally go under the term microkernel.

    1) The conceptual/syntactic division of the OS code into separate 'servers' interacting through some message passing paradigm. Note that a clever build system could easily smoosh these servers together and optimize away the message passing into local function calls.

    2) The division of the compiled code into seperate processes and the running of many integral parts of the OS as user processes.

    Note that doing 1 and not 2 is a genuine option. If the analogy is really with object oriented programming then one can do what one does with oop: program in terms of the abstract but emit code that avoids inefficencies. While sysenter/sysexit optimizations for L4 based microkernels (and probably others) have made IPC much cheaper on current hardware there is still a cost for switching in and out of kernel mode. Thus it can make a good deal of sense to just shove all the logical modules into ring0.

    --------

    This brings us to the other point that needs clarification. What is it that we want to achieve? If we want to build an OS for an ATM, an embedded device or a electric power controller I think there is a much stronger case to be made for microkernels in sense #2. However, in a desktop system it really doesn't matter so much whether the OS can recover from a crash that will leave the applications in an unstable state. If the disk module crashes taking it's buffers with it you don't want your applications to simply continue blithely along so you may as well reboot.

    But this is only a question of degree. There is no microkernels wrong macrokernel yes answer or vice versa. It's just that each OS has a different ranking of priorities and should implement isolation of kernel 'servers' to a different degree.

    ----

    The exact same can be said when it comes to dealing with microkernel style development (i.e. #1). Both Linus and Tanenbaum do have a point. Just like OO programming insisting on the abstraction of message passing servers can sometimes serve to improve code quality but also like OOP sometimes sticking religiously to the paradigm can make things less efficent or even more confusing. Also if you have enough developers and testers (like linux does) you might want to sacrifice the prettiness of the abstraction for performance and count on people catching the errors.

    However, what baffles me is why Tanenbaum seems to think you can't have the advantages of 1 without really having a microkernel. This is just a matter of code organization. If I want to insist that my disk system only talks to other components via a messaging API I can just do so in my code. I could even mostly do this and only break the abstraction when shared data makes a big difference.

    Ultimately though it's like arguing about OOP vs. functional or dynamic vs. static. Yup, they both have some advantages and disadvantages.

    --

    If you liked this thought maybe you would find my blog nice too:

  78. Not VxWorks by klossner · · Score: 1

    VxWorks is exactly the opposite of a microkernel. Everything, including application code, runs in kernel mode (unless you turn on the expensive RTP mechanism.) You link the OS into your application. OS calls are just subroutine jumps. This lack of overhead lets you run very fast, but if your application uses a bad pointer to trash something in an OS data structure, it can take weeks to find the bug.

    1. Re:Not VxWorks by mrsbrisby · · Score: 1

      VxWorks is exactly the opposite of a microkernel. Everything, including application code, runs in kernel mode (unless you turn on the expensive RTP mechanism.) You link the OS into your application. OS calls are just subroutine jumps. This lack of overhead lets you run very fast, but if your application uses a bad pointer to trash something in an OS data structure, it can take weeks to find the bug.
      Same as it is with MINIX 2.0 but people still call that a Microkernel.
  79. Re:your sig by Mister+Whirly · · Score: 1

    "Microsoft is to software what Budweiser is to beer."

    The king? Really? Careful, statements like that will get you flamed here.

    --
    "But this one goes to 11!"
  80. Mach XeNU drivers crash OS all the time! by itsybitsy · · Score: 1

    EVERYTIME, which is way to frequent, that my mac book Pro crashes, running the monolithic microkernel MacOSX (10.4 - 10.5.1), the Mac asks if I want to report it to Apple. I always say yes and berate them for having IO Drivers in the Kernel (since that's been the reason for the crashes - every time. I encourage them to remove the drivers from the their monolithic microkernel and put them into their own protected space.

    Someone has to tell Apple that their Kernel design implementation sucks big time - simply because it crashes WAY TOO OFTEN. MacOSX 10.4 through the current up to date Mac OSX 10.5.1 Leopard (System Version: Mac OS X 10.5.1 (9B18), Kernel Version: Darwin 9.1.0) crashes very frequently week with IO problems (see the actual crash logs at the end of this posting). Usually these problems are with device drivers such as EyeTV or Parallels. If this was a true microkernel design like Minix or QNX the entire machine would not have to be rebooted, just the EyeTV or Parallels apps would need to be rebooted. Why the heck should a problem with the USB driver bring down the entire OS? How on earth can that be justified Apple? It can't so improve the quality by removing ALL drivers from the Kernel and put them in their own processes. Thank you very much in advance.

    APPLE PLEASE PLEASE PLEASE REMOVE ALL DRIVERS FROM THE MACH XNU MICROKERNEL AS SOON AS POSSIBLE. THANKS. AT LEAST GIVE ME THE CHOICE OF HAVING THEM SEPARATED - THE EXTRA CPU % COST IS A PRICE THAT I AS A USER WOULD MAKE TO GAIN THE FAULT TOLERANCE AND RELIABILITY. Below you'll see my actual kernel crash logs for six months - as you can see the number of crashes are intolerable and just amazing to behold when a true microkernel that separates out drivers would have prevented reboots in all these cases.

    I HEREBY Challenage ALL Mac OSX users to publish their Kernel Crash Logs for ALL the world to see. Maybe this way APPLE will take microkernels seriously.

    Links to the issue of the flawed XNU kernel. (Gee, XNU, almost sounds like the XeNU character out of the Scientology creation mythology. XeNU http://en.wikipedia.org/wiki/Xenu. ;--).

    The culprit: bad monolithic design of http://en.wikipedia.org/wiki/XNU#I.2FO_Kit and http://en.wikipedia.org/wiki/Mach_kernel

    http://www.linuxjournal.com/article/6105
    http://www.maconintel.com/news.php?article=177
    http://developer.apple.com/macosx/architecture/index.html
    http://www.applematters.com/index.php/section/comments/how-long-will-apple-keep-the-mach-microkernel/

    "Frankly, I think it's a piece of crap," Torvalds says of Mach [XeNU], the microkernel on which Apple's new operating system is based. "It contains all the design mistakes you can make, and manages to even make up a few of its own." - Linus Torvalds, http://news.zdnet.co.uk/software/0,1000000121,2085525,00.htm

    I only quote Linus because he's right regarding MACh XeNU. However, he's wrong about microkernels in general as the frequent crashing of Linux reveals.

    ---- ACTUAL MacBook Pro Monolithic XNU Kernel Crash Logs ----- REAL WORLD CRASHES REVEALED -----

    Sat Mar 24 07:38:10 2007
    panic(cpu 0 caller 0x0035AE53): freeing free mbuf
    Backtrace, Format - Frame : Return Address (4 potential args on stack)
    0x36563ca8 : 0x128d08 (0x3c9ac4 0x36563ccc 0x131de5 0x0)
    0x36563ce8 : 0x35ae53 (0x3ea228 0x9cfc 0x36563d28 0x2)
    0x36563d08 : 0x35b1f3 (0x4835b800 0x804c 0x36563d28 0x800)
    0x36563d28 : 0xa3d6ad (0x4835b800 0x36563dec 0x6 0x6007c0e0)

  81. Religious beliefs aside by Z00L00K · · Score: 1
    I actually think that Microkernels aren't that bad, but it is also about how they are implemented.

    The basic idea of a microkernel is that it shall provide very small code that actually has direct access to hardware in a system. This can lead to a bottleneck when it comes to hardware access if the design isn't well done. However, the advantage is that if the design is done right the microkernel can provide for better stability since much code isn't running with the full privileges of the machine and therefore is limited when it comes to the possibility of causing harm to other modules or the microkernel.

    This is at least the theory and there are designs that are a lot worse. But as with all technology it can be abused, and you may run into limitations that are bound to that architecture so my opinion is "Your mileage may vary" if you should use a microkernel or not in your design.

    --
    If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
  82. Minix and the Hurd by jbailey999 · · Score: 1

    I've used Minix and the Hurd quite a bit, so can answer his challenge: The problem with the microkernel debates is that no serious contenders have ever shown up.

    Both communities are very hard to contribute to and are generally closed. AST won't consider the use of GCC as a compiler or a GNU userland because they're GPLd. So that team has to deal with building compilers and such. Which means that if you want to implement something like ELF shared libraries in Minix, you have a whole toolchain to build, not even just an ELF loader.

    For the Hurd, the community contribution problem is subtler. The maintainers of the Hurd, who don't actually contribute anything to the Hurd anymore, have a grand design that the Hurd should look like and follow. In traditional GNU form, there's no pragmatism whatsoever. This leads to things like not having >2GB partitions until just a couple of years ago.

    I can only conclude that the problem with Microkernels is the complete inability of the maintainers of these projects to work well with others and their complete lack of desire to solve the problems. One day perhaps someone will come along and just do the work required. Then we'll get an answer.

    1. Re:Minix and the Hurd by ficken · · Score: 1
      Ah, but there are big players:

      Are Microkernels for Real?

      In a word: yes. There were endless comments on Slashdot Monday (May 8) of the form: "If microkernels are so good, why aren't there any?" Actually there are. Besides MINIX 3, there are:

      * QNX
      * Integrity
      * PikeOS
      * Symbian
      * L4Linux
      * Singularity
      * K42
      * Mac OS X
      * HURD
      * Coyotos
      --
      Victory shall be mine!
    2. Re:Minix and the Hurd by just_asgard · · Score: 1

      hmm, mac os x is a hybrid kernel.

  83. Re:your sig by flinnb · · Score: 1

    No, it's more like: "Tastes like shit, but it sells a lot so we don't care to improve it." Now the comparison is much clearer, isn't it?

  84. Re:your sig by zIRtrON · · Score: 1

    Buttwiper.

  85. Re:your sig by Mister+Whirly · · Score: 1

    Not really. I've never ate a Microsoft product before, so I have no idea what they taste like. For that matter, I've never actually ate shit before, so I don't know what that tastes like either. It would be rather difficult to compare the taste of two objects I have never consumed before...

    --
    "But this one goes to 11!"
  86. Only works for /. users though... by Actually,+I+do+RTFA · · Score: 1

    We should just convert all our OSes to run using a magical unicorn kernel. I've seen about the same number of microkernel OSes and magical unicorns, so switching to the unicorn system should be just as easy as switching to a microkernel, and it gives many additional advantages, such as immortality and a horn that can cure all wounds instantly.

    Keep in mind that while many people on Slashdot would be fine switching to a Unicorn Kernel, the virginity requirement will keep it from becoming mainstream.

    And I have used QNX a little. I always wanted to have the time and motivation to look at it again.

    --
    Your ad here. Ask me how!
  87. Perfect fit for multicore? by WarwickRyan · · Score: 1

    From my basic understanding of microkernal based OSes - that they're systems where each function is represented by a closed boxed subsystem, aka a clean OO model.

    Wouldn't such a system be a perfect fit for multicore processors? Seems pretty straightforward to split the tasks up between the cores, as they're all independant 'black boxes'.

  88. I gave a presentation on the Microkernel Debate. by anwyn · · Score: 2, Interesting
    I have made a presentation on the Tanenbaum-Torvalds microkernel vs monolithic kernel Debate in 2006 to the Austin Linux Group.

    Basicly, the microkernel is a horrible example of bondage and discipline programming. In order to solve the low level problem of stray memory references, the professors from academia have come up with a low level solution, using the Memory Management Unit, (MMU) to prevent these errors. Unfortunately, this "solution" does high level collateral damage. By breaking the OS into a lot of little pieces, the u-kernels intoduce inefficiency. By putting constraints on how OSes are designed, ukernels make design, coding, and debugging more difficult. All of this to do checking, that at least in theory, could have been done at design, compile, or link time.

    This error is basicly caused by wishfull thinking. The u-kernel advocates wish that Operation Systems design were less difficult. To Quote Torvalds:

    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.

    Criticism of microkernels is said to be almost unknown in the academic world, where it might be a career limiting move (CLM).

    In 1992, Tanenbaum said "LINUX is obsolete" and "it is now all over but the shoutin'" and "microkernels have won". It is now 2008, and the micro kernel advocates still have nothing that can compete with LINUX in its own problem space. It is time for micro kernel advocates to stop shouting.

  89. No, I'm New Here. by Anonymous Coward · · Score: 0

    No, I'm Anonymous Coward.

  90. Mobile Phones - Symbian is a Microkernel OS by thaig · · Score: 1

    Symbian has a file server process, for example, which handles everything to do with filesystems. Comms subsystyems, e.g. bluetooth, run as servers.

    There are ways in which it is not pure but I think that it demonstrates a lot of the characteristics.

    I can't say what I actually think about it because (DISCLAIMER) I'm an employee.

    There are a lot of smartphones based on it, though, (>50 million sold last year) so it might be the most common microkernel OS in existence.

    --
    This is all just my personal opinion.
  91. QNX message parsing == Cleaner Architectured Prog? by refactored · · Score: 2, Interesting
    The most fascinating thing about QNX is the message passing /thread priority / context switching rules.

    As far as I can make out they are...

    1. A thread can only send messages to higher priority threads, not to lower priority ones.
    2. Whereupon a context switch immediately occurs and the high priority thread handles the message.
    3. Higher priority threads can only send structure free signals. "Hey, look at me" to lower priority threads.
    Sounds weird and restrictive, but I bet it creates a far cleaner architecture.
  92. BeOS by Anonymous Coward · · Score: 0

    BeOS was a microkernel (in C++ no less), and it certainly blew the doors off Linux as a desktop OS in 1998. It was quite zippy, and far better than other operating systems at multimedia at that time with its ultra low latency.

    Yes, Linux got much better over the years, but we could only speculate what improvements would have been made to BeOS had it survived.

  93. Give me a break by uofitorn · · Score: 1

    Because we all know that which is popular must be technically superior *cough* windows *cough*.

    --
    "What kind of music do pirates listen to?" -Paul Maud'dib
    "Yeeeaaarrrrr n' Bee!!" -Stilgar, Leader of Sietch Tabr
  94. IPC Design by LeotheQuick · · Score: 1

    One thing I don't understand is, microkernels are supposed to be more durable and secure because they split the kernel up into a lot of small user mode programs. But once you figure out how to run code in kernel mode all bets are off on security anyway, which is a design choice of computer engineering for CPUs anyway. The way it looks in Linux more and more is being done in user mode now anyway. DBUS, HAL, UDEV, these are all userspace programs, aren't they? I even started using a user mode framebuffer console. What is a microkernel, anyway? Is it really distinguishable for any other kernel, or are aspects of both micro and monolithic kernel designs used in each?

  95. Still wrong. by LWATCDR · · Score: 5, Insightful

    "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.

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    1. Re:Still wrong. by Anonymous Coward · · Score: 0

      You don't create anything in HURD. Service or otherwise. It is vaporware of the DNF kind. When the kernel reached a bootable state(Debian/Hurd), came the realisation that it was useless and was redesigned from scratch for the nth time.
      At least, Minix 3 boots right now.

    2. Re:Still wrong. by BasharTeg · · Score: 1

      Finally someone puts one of these assclown *nix users with no actual CompSci knowledge or education, who read kernel mailing lists until they feel like they know dick about kernels despite having never written a line of even remotely low level code in their lives, in their damned place. Reading every email, blog, post, and article from Linus or anyone else involved in kernel development, does not convey upon you knowledge of kernel development and operating system architecture. Running many different flavors of *nix does not make you a *nix developer. We all try to contribute in whatever way we can, but spewing the compilation of everything you've ever read (and apparently misunderstood) about subjects like this only serves to increase the amount of misinformation and ignorance that exists in the community as a whole.

    3. Re:Still wrong. by Zebedeu · · Score: 1

      I want some new options for moderation just for posts like this. +5 Ignorant +5 Arrogant! Why would the Ignorant and Arrogant mods be positive?
      Oh, right, this is Slashdot :-)
    4. Re:Still wrong. by LWATCDR · · Score: 1

      Thank you but I don't consider myself to have anything but the most basic knowledge of CS. I am an applications programmer. I have fixed a Linux device driver once. I have read a few OS design books when I was younger and that is about it. That is what is so scary. The parent post makes me look like a freaking expert!

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    5. Re:Still wrong. by naasking · · Score: 1

      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.

      Yes, you can. It's all just software in the end.

    6. Re:Still wrong. by Anonymous Coward · · Score: 0

      a hypervisor by it's self

      "itself".

    7. Re:Still wrong. by LWATCDR · · Score: 1

      "Yes, you can. It's all just software in the end."
      No you can't I used the term Host and not run. Hurd doesn't virtualize hardware so it can not host a foreign OS. Since I was speaking in the present tense the statment is true. As far as I know there is no software that does virtualization available for Hurd. If you wanted to run a foreign OS on Hurd currently you would probably be limited to using an emulator like QUEMM.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    8. Re:Still wrong. by naasking · · Score: 1

      Hurd doesn't virtualize hardware so it can not host a foreign OS.

      Immaterial. The kernel just needs to trap on privileged instructions, and send messages to the hosted kernel's fault manager(s), which translates the trap codes into native kernel calls. See L4Linux.

      As far as I know there is no software that does virtualization available for Hurd.

      Which is a very different statement than the original "it cannot be done". Now we're mostly in agreement. Hurd is being ported to L4, and L4 already hosts Linux, so you're only half right.

  96. Re:Plan 9 authors: "Tanenbaum hasn't learned anyth by Anonymous Coward · · Score: 0
    P:

    The implementers of Plan9 must be pretty stupid then GP:

    Rob Pike
    Dave Presotto
    Ken Thompson
    Phil Winterbottom Ever bothered to check out those names? Should also be noted that the GP link was from '92.
  97. L4 observations by Anonymous Coward · · Score: 0

    I tried L4 and I observed that it sucks first hand.

  98. Size matters to the cache by Anonymous Coward · · Score: 0

    It all depends on how you define "micro". I remember researching RTOSes years ago and some, like QNX, bragged that their kernel was small enough to stay in CPU Cache. But will it?

    As much low-level stuff as I've done, I've never messed with CPU cache instructions. Does anyone know- can you force a chunk of code to stay in CPU cache? Pick your favorite CPU. :)

  99. Thanks a lot by Trogre · · Score: 1

    mightyQuin, for giving them ideas.

    Incidentally, this comment has to be the best analogy I've seen in the debate.

    --
    "Nine times out of ten, starting a fire is not the best way to solve the problem." - my wife
    1. Re:Thanks a lot by mightyQuin · · Score: 1

      Anytime.

      Incidentally, IAAQP (I am a QNX programmer), a little over ten years now.

      --
      Now, if you'll excuse me, I've got some idea balls to remove from a manatee tank.
  100. Re: Don't change a successful Brand name! by Anonymous Coward · · Score: 0

    Talking about an "x86" is like talking about "Linux", an x86 could mean an 8086, 386, or the current generation, just like "Linux" can mean v.01, v2, or the latest version.

    Linux v.01 was not very portable! The 386 is dead, and it's current successor has evolved in the direction of processors like SPARC!

  101. Can he stick the landing? by Bluesman · · Score: 4, Funny

    And he tries for the flame war trifecta...NO GOOD! Oh, you hate to see that when they work so hard to prepare for the big game.

    Still, two flame wars in one sentence is nothing to scoff at, which is why the artistic score will be high. However, the judges really wanted to see some sort of garbage collection vs. malloc/free or even an Intel/AMD mention. That could cost him the gold.

    Let's see what the rest of the competitors have to offer.

    --
    If moderation could change anything, it would be illegal.
    1. Re:Can he stick the landing? by jonadab · · Score: 1

      > However, the judges really wanted to see some sort of garbage collection vs. malloc/free
      > or even an Intel/AMD mention... Let's see what the rest of the competitors have to offer.

      Regarding gc vs malloc, probably the best solution is reference counting. That has the speed of malloc and most of the safety advantages of other, more expensive garbage collection schemes, as long as you don't do anything totally stupid like make cyclic rings of references and lose track of them. Refcounting is the approach Perl takes, so obviously that's the way to do things. Perl does everything the best possible way. Why do other languages even exist?

      Obviously, the best combination is Perl, Emacs, KDE, and tcsh, on FreeBSD, on x86-64 hardware, with a Matrox video card and the Turtle Beach Santa Cruz soundcard, with esd for the sound subsystem. Also, be sure to set up Emacs to use Andale Mono, since that's by far the best fixed-width font. Oh, and you'll want sawfish for the window manager, since the default one that comes with KDE sucks, and Firefox and gmc to replace that Konqueror thing.

      [drammatic pause]

      How was that?

      --
      Cut that out, or I will ship you to Norilsk in a box.
    2. Re:Can he stick the landing? by Azar · · Score: 1

      It snowed 5 inches this morning. So while on my way to work, I was towing a huge load behind my Chevy King-Cab and I was steering with my left hand while hacking the Linux kernel in Vi on my AMD-based laptop with my right. I passed some wussy Ford truck that had spun out while hauling a load 1/2 the size of mine! The poor guy had gotten distracted trying to do an Ctrl-Meta-s for a regular expression search on his Intel-based laptop to find the syntax error in his garbage collection call. I had to hook a tow rope up from my truck to his. So I just towed my huge load, his truck, and his load all throw 5 inches of snow.

  102. only one microkernels perspective by just_asgard · · Score: 1

    I think that microkernels are really too slow for even simple user aims. How microkernels handle interrupts? Yep, they have separate server in servers ring or in the user space that will handle all interrupts and then will send them from user space to kernel space and vice versa. In this case microkernels have significant overhead, because interrupts are generated quite frequently and must be handled *fast*. Are microkernels more secure? Yes they are, but a little bit. Because even in microkernels some code *must* be handled in kernel space. I think that microkernels can be used in big clusters or for any other kind of communication between machines via the network. Microkernels have by default good abstraction level. They have servers and some protocol using which servers communicates with each other and(may be) with the kernel. So, using such protocol we can send for example tasks or threads from one physical machine to another without significant changes in the kernel code. It is just more simple, but is not a silver bullet.

  103. coherency by definition by epine · · Score: 1
    Reading Debunking Linus's Latest I actually convulsed out loud, and dry-dribbled milk I wasn't drinking.

    The fundamental result of [address] space separation is that you can't share data structures. That means that you can't share locking, it means that you must copy any shared data, and that in turn means that you have a much harder time handling coherency. The last sentence is obviously wrong: when you do not share data structures, there is no coherency problem by definition. I don't always believe in the rule of thumb that what is declared obvious isn't, but this sentence defines it to a new level.

    Nice, thought, dude. Wouldn't it be nice if we only had to worry about the coherence of data representations, and not coherence of what the data represents?

    I don't see much obvious coherence in my web browser rendering a stale copy of a document that has already been updated on the authoritative server. This is a great exercise in finger pointing. The software won't fail. It will highly reliable, faultlessly delivering data in some unknown relationship to its best-before date. I guess what I then choose to do myself with the possibly stale date my OS reliably feeds me is my own liability.

    At the level of a web browser, this might be OK in practice. At the level of an OS, I'm not so sure. What Linus was saying is that with shared data structures, it's a practical matter to have all processes deliver a *fresh* view of the data, but apparently "fresh" is orthogonal to "coherent" in some definitional Shapiroverse.

    How useful is it for a process to have a partial copy of a page table the OS has since modified? What kind of coherence is that?
  104. He wants us to do what? by r_jensen11 · · Score: 1

    Seriously, he wants us to do what? This is /.

    We're lucky if half of the people here even read the summary, let alone an article, let alone anything more than that.

  105. FreeOS.com compendium of Free Operating Systems. by refactored · · Score: 1
    Nothing to do with me...

    But it is probably time to remind the world of FreeOS, a compendium of Free operating Systems.

    Includes a gnice Activity Status comparison.

  106. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  107. Re:your sig by Vectronic · · Score: 1

    Budweiser may be (the self-proclaimed) "King Of Beer" but its also really s**tty beer... I think thats his point.

  108. Here's a better rebuttal of that old debate. by Verte · · Score: 1

    It's actually linked in Andy's follow up of TFA, and written by the brilliant Jonathan Shapiro. He does miss the opportunity, however, to point out to Linus that address spaces need not be exclusive of each other, ie, data sharing is not so difficult to do in most microkernels.
    http://www.coyotos.org/docs/misc/linus-rebuttal.html

    --
    We at slashdot are scientists, specialists and kernel hackers. Your FUD will be found out.
  109. minor correction, obvious from the article by Verte · · Score: 1

    He does miss the opportunity, however No he doesn't :P. Ever the scatterbrain.
    --
    We at slashdot are scientists, specialists and kernel hackers. Your FUD will be found out.
  110. Singularity by weicco · · Score: 1

    Singularity avoids context switches by running everything in kernel mode. This works because it's all written in C# and can thus be verified before loading.

    Kernel mode? I thought it is all run in user mode and inside a single process but in separate threads. Compiler makes sure that those threads can safely pass messages, like someone already pointed out, and that those "processes" don't end up messing with each other memory space. No kernel involvement here.

    Kernel in Singularity is, if I understood correctly, just a small layer which handles memory, disk, I/O, whatever access. Everything else is in the user land.

    And cut down that flaming part a bit or I'll tell you mom ;)

    --
    You don't know what you don't know.
    1. Re:Singularity by mechsoph · · Score: 1

      Kernel mode? I thought it is all run in user mode and inside a single process but in separate threads.

      It all runs in kernel mode. If you're verifying that the "processes" don't do anything bad, why wouldn't you run them in kernel mode? That eliminates the context switch for any system calls.

      And cut down that flaming part a bit or I'll tell you mom ;)

      If people wouldn't talk about things they don't understand, there won't be any need.

  111. Linus is still right. by Chris+Snook · · Score: 1

    As pure and clean as microkernels may be, they're an engineering nightmare for large, general-purpose operating systems. There are lots of microkernel implementations out there, many of them very successful in certain niche applications, but none of them have taken off for general-purpose use the way monolithic kernels have. A general-purpose operating system has to make a lot of design compromises, and the modular-monolithic design most modern OSes use is a practical implementation of the concepts of microkernel design that have proved useful in the real world, while sticking to monolithic methods where they're working fine or the cost of redesigning them is prohibitive.

    Linux keeps getting more microkernel-like over time. More and more kernel functions are being moved into userspace helpers. More kernel work is being pushed into workqueues or executed asynchronously in separate threads. In the realtime kernel, even hardware interrupt handlers are prioritized, scheduled threads. We have filesystems and character drivers in userspace. Linux already has most of the basic infrastructure you'd need to implement a true microkernel, and developers are taking advantage of this gradually, using the sort of iterative development method that drives academic purists nuts, but works very well.

    In contrast, the design of Windows Vista took a sharp turn from its predecessors, moving a huge amount of functionality out into userspace. The result is much less susceptible to BSODs, but it was also way behind schedule, released missing major intended features (WinFS?), it's slow, and users hate it so much that they're asking OEMs to install XP instead. Sure, Vista may be more interesting technologically, but if you actually want to use your computer to do something useful, it sucks compared to XP.

    Keep doing research, Andy. We'll keep writing kernels that are portable from cell phones to mainframes.

    --
    There's no failure quite as dissatisfying as a complete and total solution to the wrong problem.
  112. What are you trolling for exactly? by itsybitsy · · Score: 1

    Just what are YOU trolling for here? There ARE other outlets for that elsewhere.

    Oh, back to the real topic: the so called monolithic kernels are always crashing when I use them! I just push them to the limits almost without even trying. For example, Mac OSX Mach XeNU kernel has crashed on my at least 30 times in the last year alone! So much for "monolithic kernels performing better".

  113. A great example of a microkernel by Anonymous Coward · · Score: 0
  114. Re:Plan 9 authors: "Tanenbaum hasn't learned anyth by naasking · · Score: 1

    - UNIX can be successfully run as an application program
                    `Run' perhaps, `successfully' no. Name a product that succeeds by running UNIX as an application.


    L4Linux. Performance is comparable to running linux natively, and often better than running it on Xen.

    - RPC is a good idea to base your system on
                    Depends on what you mean by RPC. If you predefine the complete set of RPC's, then yes. If you make RPC a paradigm and expect every application to build its own (c.f. stub compilers), you lose all the discipline you need to make the system comprehensive.


    Misinformed. Stub compilers are used for language interoperation, and simple data marshalling. They are not a necessary component of any microkernel.

    As for predefining the complete set of RPC interfaces: while every communication can be represented as a read/write stream as in Plan9, you still to marshall data anyway, in which case you're back to doing it manually, or using stub compilers.

  115. Ok, I'll start by billcopc · · Score: 1

    I tried an OS based on a microkernel, and the government took my baby away!

    Heeeere's the thing, the concept of a microkernel is sound, and for some of us more experimental coders, there was a ton of micro-like coding being doing in the 90's. The problem is that it requires a very different mindset or strategy to succede. You can't have a hundred half-tards submitting code all over the place, else the elegant microkernel quickly grows into a beowulf cluster of bloated chunks with duplicated functionality and piss-poor message passing.

    Micros work well with small teams, where one person has dictatorial oversight and keeps everything nice and tight. It requires more detailed planning, unless you enjoy rewriting all your interfaces every other week.

    Performance ? Meh. If done right, you won't notice. The problem is that it's exceptionally difficult to do it right for a mass-appeal OS kernel, because the sheer amount of code overwhelms most people's patience and discipline. We simply don't have the meta-tools to properly manage such things (yet).

    --
    -Billco, Fnarg.com