Slashdot Mirror


Tanenbaum-Torvalds Microkernel Debate Continues

twasserman writes "Andy Tanenbaum's recent article in the May 2006 issue of IEEE Computer restarted the longstanding Slashdot discussion about microkernels. He has posted a message on his website that responds to the various comments, describes numerous microkernel operating systems, including Minix3, and addresses his goal of building highly reliable, self-healing operating systems."

534 comments

  1. To Interject for a moment by AKAImBatman · · Score: 5, Informative

    Since I know that this story is going to turn into flame-fest central, I'm going to try to head things off by interjecting an intelligent conversion about some issues that are on my mind at the moment.

    First and foremost, does anyone have a torrent of Minix3? Tanenbaum is a bit worried about getting slashdotted. If you've got one seeded, please share.

    Now with that out of the way. I don't know if anyone else has tried it yet, but Minix3 is kind of neat. It's a complete OS that implements the Microkernel concepts that he's been expounding on for years now. The upsides are that it supports POSIX standards (mostly), can run X-Windows, and is a useful development platform. Everything is very open, and still simple enough to trudge through without getting confused by the myriads of "gotchas" most OS code-bases contain. Unfortunately, it's still a long way from a usable OS.

    The biggest issue is that the system is lacking proper memory management. It currently uses static data segments which have to be predefined before the program is run. If the program goes over its data segment, it will start failing on mallocs. The result is that you often have to massively increase the data segment just to handle the peak usage. Right now I have BASH running with a segment size of about 80 megs just so I can run configure scripts. That means that every instance of BASH is taking up that much memory! There's apparently a Virtual Memory system in progress to help solve this issue, so this is (thankfully) a temporary problem.

    The other big issue is a lack of threading support. I'm trying to compile GNU PThreads to cover over this deficiency, but it's been a slow process. (It keeps failing on the mctx stack configuration. I wish I understood what that was so I wouldn't have to blindly try different settings.)

    On the other hand, the usermode servers do work as advertised. For example, the network stack occasionally crashes under VMWare. (I'm guessing it's the same memory problems I mentioned earlier.) Simply killing and restarting dhcpd actually does get the system back up and running. It's kind of neat, even though it does take some getting used to.

    All in all, I think it's a really cool project that could go places. The key thing is that it needs attention from programmers with both the desire and time to help. Tossing lame criticisms won't help the project reach that goal. So if you're looking to help out a cool operating system that's focused on stability, security, and ease of development, come check out Minix for a bit. The worst that could happen is that you'll decide that it isn't worth investing the time and energy. And who knows? With some work, Minix might turn out to be a good alternative to QNX. :-)

    1. Re:To Interject for a moment by bhirsch · · Score: 2, Informative

      What's bugging me is that it is a mini-review of the OS and has nothing to do with monolithic vs. micro kernel debate.

    2. Re:To Interject for a moment by dr_dank · · Score: 3, Funny

      Since I know that this story is going to turn into flame-fest central

      Damn right, this'll be better than the less filling/tastes great argument.

      --
      Where does the school board find them and why do they keep sending them to ME?
    3. Re:To Interject for a moment by rcs1000 · · Score: 2, Interesting

      Try doing what I do with Minix3: run it in VMWare, allocate it 4GB of RAM, and let VMWare do your virtual memory manegement.

      (Yes, I know it's an ugly hack. But it means I don't worry about giving Bash 120mb, and cc some enormous number...)

      --
      --- My dad's political betting
    4. Re:To Interject for a moment by rcamans · · Score: 5, Funny

      Whoo, there, good buddy. Actually I have seen some pretty entertaining videos of less filling / tastes great cat fights on the internet lately. Now, if someone wants to post videos of supermodels catfighting over microkernel / linus, I would then get pretty excited over the whole debate.
      Wait a minute, too much information here...

      --
      wake up and hold your nose
    5. Re:To Interject for a moment by AKAImBatman · · Score: 5, Insightful

      You-betcha. I honestly think Mr. Tanenbaum is wasting his time in replying to Slashdot. If the last article proved anything, it's that the majority of responders were stuck on the whole "Linus 'won' this over a decade ago, so STFU!" (No one really 'won' the argument, but that's beside the point.)

      There were a couple of good replies in there, but they all got drowned out in the noise. Soooo, I think it's a better idea to focus on how Minix might be made a viable OS rather than arguing the same nonsense all over again. As several of the posters here have already proven, they're not reading Tanenbaum's arguments anyway. So why should we expect this time be any different than the last?

    6. Re:To Interject for a moment by jedidiah · · Score: 1

      I find it rather illuminating that the flagship implementation of his ideas are missing a few key elements. His list of microkernels actually in use was also interesting. Most were speciality embedded systems (like QNX). Only one was a general purpose system (MacOS 10) and I am not sure that one even applies (being much like NT in terms of "microkernel-ness".

      --
      A Pirate and a Puritan look the same on a balance sheet.
    7. Re:To Interject for a moment by timeOday · · Score: 1
      the network stack occasionally crashes under VMWare.... Simply killing and restarting dhcpd actually does get the system back up and running. It's kind of neat, even though it does take some getting used to.
      I think I'd prefer the Linux network stack, which AFAIK simply doesn't crash in the first place.

      Which gets back to the heart of the matter - is runtime modularity in a kernel worth it? It's very hard for me to see the justification for general computer usage, when both Linux and Windows seem to be very reliable. (I'll leave the embedded guys to hold their own side discussion :)

      BY FAR my biggest qualm with Linux is that it doesn't have support for some of the zillions of hardware devices out there (or for certain features of those devices)... in other words, microkernels don't address the problem I care about.

    8. Re:To Interject for a moment by Anonymous Coward · · Score: 0

      I've had the linux network stack crash, with KERNEL 2.0.36 receiving packets sent to it filling a 10mbps network.

    9. Re:To Interject for a moment by Anonymous Coward · · Score: 1, Interesting

      I think I'd prefer the Linux network stack, which AFAIK simply doesn't crash in the first place.

      Well... this is a more interesting comment than first reading might suggest. I've always been a bit dubious of "tolerant" software. It might sound counter-intuitive, but I'd rather have libraries/kernels terminate the running program and output a big message saying why rather than tolerate problems and try to continue. In the long-term it pays-off.

      A lot of problems in Windows come from Microsoft trying to build Windows to be extremely tolerant of crap software and bizarre library calls, and to keep running as long as possible... and that has come back to bite them. Lots of strange failures that never get fixed because they don't terminate the program, they just end up generating shite later.

      I prefer my libraries and kernels to just say... wrong. Fuck off. Or at the very least spazz out and crash spectacularly -- because those sorts of problems GET FIXED QUICKLY. It sounds like a hacky and roundabout idea... but it does work. It forces software to be fixed instead of being tolerant of its faults. Perhaps if you were in an academic environment and in total control of the entire software stack, the pure platonic ideal of development would work.

      But you aren't, and it doesn't. Crashes and terminated programs get noticed and the problems fixed. It's real life coding in a nutshell.

    10. Re:To Interject for a moment by __aaclcg7560 · · Score: 1

      Doesn't it run on burning bat droppings? That would explain why there's no droppings on the batmobile.

    11. Re:To Interject for a moment by AJWM · · Score: 1

      Actually I have seen some pretty entertaining videos of less filling / tastes great cat fights on the internet lately.

      What, no links?

      --
      -- Alastair
    12. Re:To Interject for a moment by metamatic · · Score: 1
      If the program goes over its data segment, it will start failing on mallocs. The result is that you often have to massively increase the data segment just to handle the peak usage. Right now I have BASH running with a segment size of about 80 megs just so I can run configure scripts.

      Ah, so that's why I couldn't build Ruby for it.

      I guess I'll wait for MINIX 4 with added VM.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    13. Re:To Interject for a moment by Chandon+Seldon · · Score: 1

      Why are you even posting in this thread?

      If there was an article about the difference between nuclear fusion and tidal power generation, would you post about how you prefer the Sony Playstation because it has better games?

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    14. Re:To Interject for a moment by LWATCDR · · Score: 3, Insightful

      "Linus 'won' this over a decade ago, so STFU!"
      Hey Linus did win this. He was right and NOTHING has changed in the last ten years!
      Computers are not that much faster than they where back then and the need for security is no different that then!
      Yes I am so kidding. Linus won this because at the time his goal was to get out a Unix clone that ran on the 386 as quickly as possible. Doctor Tanenbaum on the other hand was interested in a Unix clone that would run on cheap hardware and that made a very good learning tool. For his goal Minix was the better system.
      Now we live in world of Gigs. It is common to have many gigs of hard drive space, at least a gigabyte of ram, and multigigahertz multi-core cpus. Not to mention that even the cheap built in graphics chip sets would blow the doors off of any video card you could get in 1995.
      For all but the biggest FPS gaming freak our computers are fast enough. What we want now is reliability, security, and ease of use. I use Linux every day. I depend on Linux. What I will not do is give up hope on something better than what we are using today. New idea's should be explored.

      I am also a little bit disapointed how little respect Doctor Tanenbaum has gotten on Slashdot. Linus compiled the first versions of Linux using Gcc running under Minix. I am pretty sure that Linus read Doctor Tanenbaum's book and probably learned a lot about how to write an OS from it. When it comes to computer science Tanenbaum's name is right up there with Wirth and Knuth. Of course the odds that any of the people that use STFU in a post have ever read Knuth, Wirth, or Tanenbaum is probably not worth measuring.
      Even if you are not convinced that Tanenbaum's methods are correct, his goals of a super reliable, self-healing, and secure OS are correct.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    15. Re:To Interject for a moment by Odiumjunkie · · Score: 1
    16. Re:To Interject for a moment by SmokedS · · Score: 1

      The processes that a microkernel manage in this way are drivers. When your program does something bad it will crash just as hard on a microkernel as on a monolithic kernel. Microkernels just make sure that that crash is not in kernelspace so that your OS keeps on running.

    17. Re:To Interject for a moment by operagost · · Score: 1

      Real life includes 24-7 environments where spectacular crashes, which cause real monetary losses in the form of downtime, don't stack up too well against a fault-tolerant alternative.

      --

      Gamingmuseum.com: Give your 3D accelerator a rest.
    18. Re:To Interject for a moment by Anonymous Coward · · Score: 0

      no it runs on guano

    19. Re:To Interject for a moment by Anonymous Coward · · Score: 0

      And you clean tool's with your mouth.

    20. Re:To Interject for a moment by iabervon · · Score: 1

      I'm sure Tove could trivially kick the butt of anyone Tanenbaum could get for the microkernel position. It would therefore hardly be a fair test of the merits of the respective positions.

    21. Re:To Interject for a moment by OrangeSpyderMan · · Score: 1

      Real life includes 24-7 environments where spectacular crashes, which cause real monetary losses in the form of downtime, don't stack up too well against a fault-tolerant alternative.

      Which makes me thin you don't have anything to do with production. Before it meets production you have unit tests, integration test and user acceptance tests that mean if you test right it'll b0rk before it gets to production, and that is a GoodThing (TM). Example I recently received a new version of some ETL mappings that were all set to rely on DB constraints to fail, ie the mappings would never themselves fail. This was picked up the minute we did the first run in integration test.... I was really pleased that my ETL code let this happen.... If you have so many failures that you downtime in prod you either have tech architecture problems, or don't test....

      --
      Try NetBSD... safe,straightforward,useful.
    22. Re:To Interject for a moment by honkycat · · Score: 1

      That's an interesting observation, but I don't know that it really implies as much about the debate as it appears to at first blush. I believe it says more about the history of general purpose computing (i.e., more development has been done on monolithic systems, so it's easier to continue doing more monolithic development). Also, users have learned to accept failures and crashes since these are commonplace with every major OS [*], so there's just not much economic pressure to invest much in true reliability for the general purpose market.

      It's a lot easier to convince an embedded system architect to buy hardware compatible with a specific OS (even if that hardware is more expensive) in order to increase reliability than it is to ask a home user to do the same thing. That's why OSes like this pop up in the special purpose embedded markets first.

      Tanenbaum is really interested in changing computing in a much more fundamental way than most operating system vendors. He's saying that we should all be able to ask for the kind of reliability that is currently only found in specialized embedded systems. He's saying that a microkernel is the way to achieve this. Whether or not you agree with this in a predictive way, there's a lot of development left on this track before the systems can be fairly compared to the monolithic systems that have had literally hundreds of thousands of programmer-hours poured into them.

      [*] Linux included.

    23. Re:To Interject for a moment by SmokedS · · Score: 1
      Real life includes 24-7 environments where spectacular crashes, which cause real monetary losses in the form of downtime, don't stack up too well against a fault-tolerant alternative.

      Which makes me thin you don't have anything to do with production. Before it meets production you have unit tests, integration test and user acceptance tests that mean if you test right it'll b0rk before it gets to production, and that is a GoodThing (TM). Example I recently received a new version of some ETL mappings that were all set to rely on DB constraints to fail, ie the mappings would never themselves fail. This was picked up the minute we did the first run in integration test.... I was really pleased that my ETL code let this happen.... If you have so many failures that you downtime in prod you either have tech architecture problems, or don't test....


      All true. For applications. In a perfect world. But, when that other application that runs on your server (You know: the one written by the guys doing those things you mentioned wrong or not at all), manages to crash driverX on the server you are going to be happy as hell that your application was not brought down. Your application did nothing wrong, why should the server and your application crash along with the bad application?

      Remember, we are talking drivers here, not applications.
    24. Re:To Interject for a moment by jadavis · · Score: 1

      trying to build Windows to be extremely tolerant of crap software and bizarre library calls, and to keep running as long as possible

      Actually, at the first hint of a kernelspace problem, windows blue screens. Linux is less picky about those types of problems, and only crashes when there's not really a way to keep running.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    25. Re:To Interject for a moment by Gorshkov · · Score: 1

      you forgot one of the other things about 24-7 environments ..... even a 3% performance penalty doesn't stack up very well if that means you have to spend a couple of hundred thou to upgrade your servers to handle the load, when they'd be good to go for another 2 years if they *didn't* have that extra 3% sucked out of them for the sace of a bit design purity.

    26. Re:To Interject for a moment by wolenczak · · Score: 1

      Given the new trends on virtualization, OS's running within OS's, virtual servers, mainframe partitions, single processor concurrent contexts, multiple processors single contexts. etc. etc. etc. Does it really matter the inner architecture of the operating system? Maybe it was the case when there weren't a zillion layers above it. now, IMHO, i believe the architecture is irrelevant in terms of performance. My 2 cent.

    27. Re:To Interject for a moment by jelle · · Score: 1

      "Try doing what I do with Minix3: run it in VMWare, allocate it 4GB of RAM, and let VMWare do your virtual memory manegement." "(Yes, I know it's an ugly hack. But it means I don't worry about giving Bash 120mb, and cc some enormous number...)"

      Warning: Flames below. Ignore if not fire resistant...

      It's not only ugly. It shows the Minix3 'microkernel' is not even a kernel, if you need to run something UNDERNEATH it to make it even remotely usable... Besides that, I fail to see how this memory management problem is more secure than Linux against, umm let's see, how about Denial of Service attacks? Btw, is this an example or the proof of how easy it is to make a microkernel 'proven correct' too?

      Remember microkernel-loving theorists out there, we're talking about Minix, something quite alot _older_ than Linux. It has had much more time to develop, and if the theory is correct, it should have been much easier to develop to an advanced level than the Linux kernel has been... It should have at least basic, basic, basic functionality such as fully functional memory management today...

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    28. Re:To Interject for a moment by jelle · · Score: 1

      "Soooo, I think it's a better idea to focus on how Minix might be made a viable OS rather than arguing the same nonsense all over again."

      Exacltly. Start architecting/programming/coding. That is the only way to prove us wrong.

      "As several of the posters here have already proven, they're not reading Tanenbaum's arguments anyway."

      It's all theory until proven by observations (measurements). Until that, I stick with my opinion about the theory of microkernels.

      Show us the killer kernel and we'll be convinced.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    29. Re:To Interject for a moment by WindBourne · · Score: 1

      Actually, /. is a pretty good site. All in all, there are signal to be found amongst the noise. In addition, he will get good exposure. It is too bad that a proper q/a was not done with him .

      --
      I prefer the "u" in honour as it seems to be missing these days.
    30. Re:To Interject for a moment by AKAImBatman · · Score: 2, Informative

      Remember microkernel-loving theorists out there, we're talking about Minix, something quite alot _older_ than Linux.

      Pardon me? Sir? Sir? You seem to have diarrhea of the mouth and constipation of the brain.

      Minix 1 & 2 codebases are indeed older than Linux. And they could have *been* Linux, except that Tanenbaum was focused on teaching. As a result, he rejected the requests to add features, thus leading to the development of Linux.

      However, he has apparently decided that it's time to start a microkernel project to prove the concept in the modern world. As such, he's written a brand new codebase that's focused on the Microkernel architecture rather than producing something that is easily studied by students. As such, the Minix3 codebase is only 8 months old.

      If you'd taken the 5 minutes necessary to RTFA, you'd know that. In the future, please take the time to read before expounding on your obvious disgust with a concept you are not paying any attention to.

      Thank you, and please have a nice day.

    31. Re:To Interject for a moment by Jeremi · · Score: 1
      It's not only ugly. It shows the Minix3 'microkernel' is not even a kernel


      No, it shows that Minix3 doesn't have a proper memory manager implemented. Clearly it's not a usable system for actual work at the moment, but everybody admits that. It's under development.


      Remember microkernel-loving theorists out there, we're talking about Minix, something quite alot _older_ than Linux.


      Actually, we're talking about Minix3, which isn't all that old. To paraphrase Tanenbaum: "Minix3 is to Minix1 as WinXP is to Win3.1: they share the first word in their name".


      [Minix] has had much more time to develop, and if the theory is correct, it should have been much easier to develop to an advanced level than the Linux kernel has been...


      If you compared the man-hours that have been spent developing Linux to the man-hours spent developing Minix3, you'd find that Linux has had several orders of magnitude more developer time spent on it. So comparing the two OS's as if they had had an equal amount of developer support is silly.


      It should have at least basic, basic, basic functionality such as fully functional memory management today...


      Minix3 is being developed by Tanenbaum and two (2) other programmers. If you think development is going too slowly, feel free to help out.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    32. Re:To Interject for a moment by tehcyder · · Score: 1
      the less filling/tastes great argument
      What is this? Seriously, it means nothing to me at all, I'm not from the US.
      --
      To have a right to do a thing is not at all the same as to be right in doing it
    33. Re:To Interject for a moment by tehcyder · · Score: 1
      Tanenbaum's name is right up there with Wirth and Knuth
      I long for the day when I can drop this into a dinner party conversation and watch the blank looks around the table.
      --
      To have a right to do a thing is not at all the same as to be right in doing it
    34. Re:To Interject for a moment by Anonymous Coward · · Score: 0

      GET BACK!

    35. Re:To Interject for a moment by Anonymous Coward · · Score: 0

      You sir are amazing!

    36. Re:To Interject for a moment by LWATCDR · · Score: 1

      You go to the wrong dinner parties.
      Other examples of name dropping that will result in the same blank looks.
      His Pauling's name is right up there with Watson and Crick.
      Fermi's name is right up there with Bohr and Heisenberg.

      Now at a Slashdot friendly dinner party I am sure that you would get knowing nodes and at least three idiots that you should include Montgomery Scott and Zefram Cochrane.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    37. Re:To Interject for a moment by Anonymous Coward · · Score: 0

      It's already been done. Microkernels have already been coded, they've been sold, they've been successfully used in high security and high reliability applications. Developers of these systems have reported on their experiences. The papers have been written. Have you read the papers? Have you used the systems? Have you reviewed their designs and the experience of those who implemented them? If not, then you, like Linus, are basing your opinion on ignorance, there is no debate to be had with you, and your opinion is worth shit.

    38. Re:To Interject for a moment by Trepalium · · Score: 1
      So, you have a choice between a catastrophic crash, versus a situation where the system attempts to limp along by "self-correcting". I can say one thing: I know which one is simpler to troubleshoot. With a "self-healing" system, a real problem can go unnoticed until it does serious damage. It's difficult for a computer to reliably know what faults can be automatically 'fixed', and which need user attention.

      If your file system driver or storage controller driver was restarting because of a problem, would that be a good thing in your books? I think I'd usually prefer a hard crash because who knows what kind of bad data might be waiting to be written to disk. There are obviously situations where the reverse would be true (network file systems, for example).

      --
      I used up all my sick days, so I'm calling in dead.
  2. Grandma's computer never crashes by robla · · Score: 4, Funny

    Tanenbaum wrote (in TFA):The average user does not care about even more features or squeezing the last drop of performance out of the hardware, but cares a lot about having the computer work flawlessly 100% of the time and never crashing. Ask your grandma.

    Interesting. My mom recently bought a computer for my grandma. Grandma doesn't have a problem with the computer crashing at all. Her secret? She never turns it on.

    1. Re:Grandma's computer never crashes by Anonymous Coward · · Score: 0

      She uses that same trick on Grandpa

    2. Re:Grandma's computer never crashes by tygt · · Score: 1, Informative

      And thus, she's not a user.

    3. Re:Grandma's computer never crashes by VGPowerlord · · Score: 1

      I take it that your grandmother has never been introduced to Email?

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    4. Re:Grandma's computer never crashes by Anonymous Coward · · Score: 0

      My Grandma is not the admin on her machine, so she is not capable of messing up her OS. It hasn't crashed since I put her in normal user mode. Whenever she needs a new app installed, which is hardly ever, I remote into her machine with Hamachi & VNC, login as Admin, and install it for her.
      For almost any user, they never need admin rights, but the default setting for an install of Windows XP is to make all users admin, which is no bueno.
      No virus or spyware will ever own her machine as long as she doesn't get to decide what applications have access to critical system files, registry, startup, etc.

    5. Re:Grandma's computer never crashes by Anonymous Coward · · Score: 0

      Well, my grandma could go on and on about the advantages of microkernel, and how they used to optimize message passing when she was young. She no longer pays attention to the modern day monolith kernel development, because she thinks everything was so much more elegant in her youth.

  3. So when did we forget... by JPribe · · Score: 4, Insightful

    When did we collectively forget that everything has its place...I doubt I'll ever see anything but a monolithic kernel on my desktops. No different than any given OS having its place. Windows and Ubuntu (until something better) will live on my desktops, not on my server. Why can't we just all get along?

    --

    Why go fast when you can go anywhere? O|||||||O
    1. Re:So when did we forget... by phantomfive · · Score: 1

      Windows and Ubuntu (until something better) will live on my desktops, not on my server.

      Tannenbaum claims to have something better. His main purpose is to build a computer so stable that it won't have a reset button. The average time to crash of its operating system will be longer than the average lifetime of the hardware. (As far as anyone can tell) this will cost a bit of speed, but not enough that it will matter. Whether that is better or not is a matter of opinion, but in any case it is way cool.

      --
      Qxe4
    2. Re:So when did we forget... by Tiro · · Score: 3, Insightful
      I doubt I'll ever see anything but a monolithic kernel on my desktops.
      Do you realize that Mac OS X has not a monolithic kernel?
    3. Re:So when did we forget... by qbwiz · · Score: 5, Informative

      Sure it has a monolithic kernel. It's just that it also has a microkernel, too.

      --
      Ewige Blumenkraft.
    4. Re:So when did we forget... by JPribe · · Score: 1

      OSX doesn't quite qualify, and yet it does. In all honesty, I haven't touched a Mac in about 4 years, and I haven't used a Mac regularly since high school (late 90s) so I may be missing out there. Before you go trying to convert me though, it looks like my next laptop will be a Mac, if the Aperture team can get their act together anyway.

      --

      Why go fast when you can go anywhere? O|||||||O
    5. Re:So when did we forget... by JPribe · · Score: 1

      And when that magic-micro OS/kernel comes into the mainstream some unforseen event, or some new type of computing, will exist that will cause it to crash. I really don't beleive that any OS will be "uncrashable." Hell, I've had 16 pin ICs "crash." I've seen a Furby "crash" and trust me I wish I had gotten that on video. Not that hardware built to a single function really counts, but anything more complicated will be prone to some failure, somehow, somewhere. Probably thanks to some user, but it will crash. And the whole user thing is another story entirely.

      --

      Why go fast when you can go anywhere? O|||||||O
    6. Re:So when did we forget... by pthisis · · Score: 1

      Tannenbaum claims to have something better. His main purpose is to build a computer so stable that it won't have a reset button. The average time to crash of its operating system will be longer than the average lifetime of the hardware. (As far as anyone can tell) this will cost a bit of speed, but not enough that it will matter. Whether that is better or not is a matter of opinion, but in any case it is way cool.

      Except I basically have that already. I honestly can't remember the last time I had a machine crash because of OS failure (as opposed to hardware failure; I've had a flaky wireless network card that would periodically get itself out of whack and require a reboot). My home machine is at around 200 days of uptime, which is when I added a new hard drive. The 4 production web servers at work (database and web servers) range from 299-445 days of uptime, and their last reboots were all for new hardware except the one at 445 days (which is when they were physically relocated). Those are machines that are often under high load on both CPU and memory. None of that is new, either; the usage analysis machines (logging and mining 6 million requests/day) at my last job were both at over 600 days uptime when I left in 2001. All are running monolithic kernels.

      On the plus side, though, these machines have working virtual memory (not a trivial thing for most microkernels--witness QNX's struggles in this area). They have fairly broad driver support compared to Minix3, and far more features.

      From where I sit, there simply isn't a lot of OS-level reliability to be gained. All of the stability issues I've faced in the last several years (both on the server and the desktop) are in user-space already.

      --
      rage, rage against the dying of the light
    7. Re:So when did we forget... by jonbryce · · Score: 1

      I haven't seen Windows crash since Windows 2000 SP1, or linux crash for a lot longer than that, so I think Tannenbaum is trying to solve a problem that doesn't exist. Of course I seen lots of programs crash, but a microkernel isn't going to solve that.

    8. Re:So when did we forget... by monkeyGrease · · Score: 5, Insightful

      > Why can't we just all get along?

      Have you read the article? Tanenbaum basicly starts out by saying this is not a 'fight', but a technical discussion. Communication and debate is an important part of research and development. That's what is being attempted here, at least at face by Tanenbaum. There may be antagonism behind the scenes, or bias in presentation, but that is just human. The primary intent is to advance the state of the art, not fight.

      All this 'what's the point' or 'we have this now' type of talk really bugs me. Everything can always be improved, or at least that is the attitude I'd like to stick with.

      > When did we collectively forget that everything has its place

      Another key component of research and development is to question everything. Not throw everything away and always start over, but to at least question it. Just because monolithic kernels rule the desktop now does does prove that monolithic kernels are inherently the best desktop solution.

      In effect it is sometimes good to not even recognize a notion of 'everything has its place'.

    9. Re:So when did we forget... by Anonymous Coward · · Score: 0

      Except I basically have that already. I honestly can't remember the last time I had a machine crash because of OS failure (as opposed to hardware failure; I've had a flaky wireless network card that would periodically get itself out of whack and require a reboot).

      Hey, brainiac. If you'd read TFA, you'd know that a microkernel's user-space driver for the network card could happily crash and be restarted without taking out the rest of the system.

    10. Re:So when did we forget... by Arandir · · Score: 1

      It's not a microkernel. It's a monolithic FreeBSD kernel on top of Mach.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    11. Re:So when did we forget... by pthisis · · Score: 1

      Hey, brainiac. If you'd read TFA, you'd know that a microkernel's user-space driver for the network card could happily crash and be restarted without taking out the rest of the system.

      The wireless network driver has never taken down my machine. The hardware gets into an unknown state and has to be power-cycled in order to work again. Until then, unloading/reloading the module does nothing. Since I don't know of a way to power a PCI card down and up without a reboot, "shutdown -r now" is the only option. But aside from the total lack of wireless network connectivity, the machine still works fine.

      A microkernel isn't going to help with that. Getting pricier hardware that either isn't flaky or can be seperately restarted would, or possibly a driver bugfix would help.

      --
      rage, rage against the dying of the light
    12. Re:So when did we forget... by trewornan · · Score: 1

      I had a desktop with a dodgy hard disk which would crash XP, usually in under a minute, OpenBSD would run on the same machine for days at a time. Although, eventually (as the disk got worse and worse) even OpenBSD wouldn't work.

    13. Re:So when did we forget... by Tiro · · Score: 1
      That's interesting. I apologize for my somewhat obnoxious and technicality-based point--I was sort of karma whoring. [I got modded up but didn't deserve to be.]

      In closing, I'm just happy we have real choices these days: OS X, *BSD, and Linux, and even XP is workable if you know what you're doing.

    14. Re:So when did we forget... by tehcyder · · Score: 1
      this is not a 'fight', but a technical discussion
      You're new here, aren't you?
      --
      To have a right to do a thing is not at all the same as to be right in doing it
    15. Re:So when did we forget... by commanderfoxtrot · · Score: 1

      That's why I'm liking USB-type peripherals more and more.

      No need to restart, just pull the plug out, wait 10 secs and then put it back in again. Hopefully, the flaky hardware problem has gone away...

      Now, if only they'd used Ethernet instead of USB as a peripheral standard... think how cool that would be...

      --
      http://blog.grcm.net/
    16. Re:So when did we forget... by the100rabh · · Score: 1

      Did anyone hear of linux having something called module insersion....a concept called modular-monolithic kernel.....now isnt it approaching a middle path where we have best of both worlds....I guess Mr Tenenbaum forgot about it

    17. Re:So when did we forget... by Tower · · Score: 1

      Such is the fun of cheap consumer-level boards where each PCI slot isn't individually resettable or powerable. If the option existed to to a PCI RST to just that slot, you'd have a pretty good chance of being able to get out of that scenario without the reboot, and if the slot could be powered off and on, you'd be almost guaranteed. Of course, that kind of function costs real money to design and build, but it is the rule for server backplanes.

      --
      "It's tough to be bilingual when you get hit in the head."
    18. Re:So when did we forget... by pH7.0 · · Score: 1
      >> Why can't we just all get along?
      > Have you read the article? Tanenbaum basicly starts out by saying this is not a 'fight', but a technical discussion.

      Too late. AST posted the "LINUX is obsolete" article in 1992 the 'fight' is still going on. Google "LINUX is obsolete" in google groups for more. In short, Linux is not microkernel, therefore it's obsolete.

      pH7
  4. Andy Tanenbaum ? by denisbergeron · · Score: 0

    Somebody can enligth me about Andy Tanenbaum ?
    Who he is ?
    Did he ever create a running kernel ?
    Which one ?

    --
    Ceci n'est pas une Signature !
    1. Re:Andy Tanenbaum ? by gvc · · Score: 1

      He wrote, along with several text books, Minix, which Linus used as an inspiration, and development platform, for Linux.

    2. Re:Andy Tanenbaum ? by robla · · Score: 2, Informative

      Somebody can enligth me about Andy Tanenbaum ?

      Read Tanenbaum's Wikipedia bio.

    3. Re:Andy Tanenbaum ? by winkydink · · Score: 1

      http://en.wikipedia.org/wiki/Andrew_S._Tanenbaum

      Tanenbaum had a doctorate before Linus was potty trained.

      --

      "I'd rather be a lightning rod than a seismometer." -Ken Kesey

    4. Re:Andy Tanenbaum ? by fistfullast33l · · Score: 2, Interesting

      I know you're being facetious (comon, mod points for the SAT word), but for those who don't know, Andrew Tanenbaum is covered at Wikipedia. His textbook, Modern Operating Systems, is probably one of the most widely used and excellent resources on the subject. He also likes to get into flame wars with Linus Torvalds when he gets bored. This is ironic because supposedly Linus used Tanenbaum's Minix as a starting point and influence for Linux.

    5. Re:Andy Tanenbaum ? by SirTalon42 · · Score: 1

      He created Minix, the OS Linus Torvalds (the creator of the Linux kernel, which is the 'kernel' of an operating system, which if you need to have that explained, please leave slashdot and never return) used before and during his creation of Linux. Tanebaum and Torvalds had a long flamewar over microkernel vs monolithic kernels back in the early days of Linux development (you can find it with a bit of searching, its pretty entertaning, especially the parts where Tanebaum predicts the future).

      Minix was an Microkernel OS that was meant as a teaching tool.

    6. Re:Andy Tanenbaum ? by TheRaven64 · · Score: 2, Informative
      Did he ever create a running kernel ?

      No, actually he created two that I know of. Well, technically three since MINIX 3 is probably sufficiently different from MINIX 1 to be thought of as a different kernel. Amoeba was another microkernel-based OS designed to run on distributed systems, presenting an entire cluster as a single machine.

      MINIX 1 was a teaching tool. MINIX 3 is a real OS, although still very young (less than two years old), but doing very well. Amoeba is so far ahead of Linux conceptually that they don't even belong in the same category.

      --
      I am TheRaven on Soylent News
    7. Re:Andy Tanenbaum ? by Herkum01 · · Score: 2, Interesting

      Linus has written the Linux kernel used in millions of computers ranging from PCs to Mainframe.

      Tanenbaum still has Minix and doctorate.

      Education means nothing if you do nothing with it. Linus has applied his education very well and progress well beyond anything Tanenbaum has accomplished, with or without a doctorate...

    8. Re:Andy Tanenbaum ? by jelle · · Score: 1

      "Tanenbaum had a doctorate before Linus was potty trained."

      And tanenbaum now comes up with a kernel on which programs have problems doing malloc for dynamic memory allocation???

      Goes to show who moves like a glacier and who swims around its icebergs in circles... like a penguin.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    9. Re:Andy Tanenbaum ? by SpinJaunt · · Score: 1
      Linus Torvalds (the creator of the Linux kernel, which is the 'kernel' of an operating system, which if you need to have that explained, please leave slashdot and never return)
      Are these the Minimum Requirements like you find on the back of software packaging? If so, in 18months time, we'll all need to understand quantum physics!?.
      --
      /. is good for you.
    10. Re:Andy Tanenbaum ? by Zontar_Thing_From_Ve · · Score: 4, Insightful

      He also likes to get into flame wars with Linus Torvalds when he gets bored.

      Really? And what exactly do you base this on? According to the article, which it's clear that you did not read, Tanenbaum simply had a recent article printed in IEEE Computer and someone on Slashdot posted a link to it, which caused Linus to weigh in with his 2 cents about something that was never directed at him. It sounds more to me like Linus is obsessed with proving that macrokernels are the only way to go. Why does he even care? It's not like Minix is a threat to Linux. If he believes so strongly that microkernels are wrong, he should just let Tanenbaum and company waste their time on them instead of endlessing arguing the same points he made years ago.

    11. Re:Andy Tanenbaum ? by Anonymous Coward · · Score: 0

      Unfortunately, you only get the mod points if you use the word correctly. A person's comments may be facetious, but in the context you're speaking, the person himself was not "being facetious."

    12. Re:Andy Tanenbaum ? by Locke2005 · · Score: 1
      Tanenbaum had a doctorate before Linus was potty trained.

      Perhaps so, but which one of them is wearing diapers NOW?

      --
      I've abandoned my search for truth; now I'm just looking for some useful delusions.
    13. Re:Andy Tanenbaum ? by maxwell+demon · · Score: 1

      Well, given the names, I'd guess there also was a MINIX 2 in between.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    14. Re:Andy Tanenbaum ? by szembek · · Score: 1

      I've only heard of Royal

      --
      nothing
    15. Re:Andy Tanenbaum ? by jedidiah · · Score: 1

      [really bad in joke]

      Does that mean that he's a dinosaur?

      If he is in fact a dinosaur, what kind is he?

      [/really bad in joke]

      --
      A Pirate and a Puritan look the same on a balance sheet.
    16. Re:Andy Tanenbaum ? by Anonymous Coward · · Score: 0

      I know you're being facetious (comon, mod points for the SAT word)

      +0.5 for facetious, -100 for "comon" instead of "come on". Sorry, you might have wanted to sound smart, but you still ended up sounding like a moron.

    17. Re:Andy Tanenbaum ? by xenocide2 · · Score: 1

      Ever notice how rarely Torvalds responds to slashdot? In fact, I believe he's even suggested that kernel developers should pay no heed to it. Probably a pretty intelligent move, assuming aruging on lkml is less like "arguing on the internet" than slashdot.

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    18. Re:Andy Tanenbaum ? by Lord+Ender · · Score: 1

      If all of the volunteer kernel developers become convinced microkernels are better, and move over to working on Minix from Linux, Linus eventually becomes a nobody. That is a good reason to care.

      --
      A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
    19. Re:Andy Tanenbaum ? by TheRaven64 · · Score: 1

      MINIX 2 was largely an incremental improvement on MINIX 1. MINIX 3 is a completely new OS with a different focus (1 and 2 were teaching systems, 3 is a Real OS(TM))

      --
      I am TheRaven on Soylent News
    20. Re:Andy Tanenbaum ? by kocsonya · · Score: 1

      Um, Dr. Tannenbaum has been crunching out a) books that you can use to succeed and accomplish so much more than he did, and b) people (his students) of whom some will be so "lame" as he is - only advancing knowledge and creating a new generetion of their breed - and some who will be one of those who accomplish.

      L'art pour l'art education might be useless (although it is still better, IMHO, than l'art pur l'art being a thick dumb) but being a research scientist and most of all being a (good) teacher and (good) educator beats being successful.

      As you pointed out, Linus has applied his education very well to achieve his goals, and he did, and quite a lot of clever and successful people did too. Now, that well used education of theirs was provided by the brethen of Dr. Tannenbaum. If the prof, in his entire lifetime, educated and inspired just two of the likes of Linus, then I believe he accomplished more than any one of them. If he educated and inspired just one like himself, he managed to assure that the future likes of Linus will have the chance the obtain the education they can use so well to accomplish.

      Zoltan

    21. Re:Andy Tanenbaum ? by jelle · · Score: 1

      "This is ironic because supposedly Linus used Tanenbaum's Minix as a starting point and influence for Linux."

      It's actually ironic the other way around, because Linus created Linux because he was unhappy with the fact that Minix had too many unpractical shortcomings/limitations, among which lack of support for the new 32-bit 80386 chips in 32-bits mode.

      And still today, Tanenbaum's kernels are lagging significantly in functionality.

      The status-quo is a clear QED from Linus. If Tanenbaum claims microkernels are so much easier to make fully functional and rock-solid stable, then reality shows he's wrong until he proves it to the world by shoing us a 'kick-ass kernel'. Linus came late to the game, relatively compared to Unix and Minix, and it's way ahead now on so many fronts it's not even funny.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    22. Re:Andy Tanenbaum ? by linguae · · Score: 1
      Education means nothing if you do nothing with it. Linus has applied his education very well and progress well beyond anything Tanenbaum has accomplished, with or without a doctorate...

      If it weren't for Tanenbaum, there would be no Minix for Linus Torvalds to try to improve on.

    23. Re:Andy Tanenbaum ? by heinousjay · · Score: 1

      Just as an intellectual exercise for you: as a percentage, how much of the current Linux kernel would you say was written by Linus?

      --
      Slashdot - where whining about luck is the new way to make the world you want.
    24. Re:Andy Tanenbaum ? by jelle · · Score: 1

      You would be surprised how few kernel developers have worked on the core of Linux that is functionally equivalent of what is in a microkernel (memory management, scheduler, etc).

      Besides that, the question is irrelevant. Minix existed way before Linux, yet is very far behind in development even on basic functionality such as memory management. If Microkernels were really so much better, with things supposedly being so much easier to get 'proven correct', then it should have developed faster than a unified kernel like Linux, not slower.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    25. Re:Andy Tanenbaum ? by heinousjay · · Score: 1

      You answered the question you wanted to hear, not the one I asked. It's a neat dance you did, but you should save it for someone that won't call you on it.

      I just don't see why there needs to be so much animosity towards Tanenbaum. In a way, it reminds me of when my younger sisters would argue over whether N'Sync was better than the Backstreet Boys.

      --
      Slashdot - where whining about luck is the new way to make the world you want.
    26. Re:Andy Tanenbaum ? by jelle · · Score: 1

      "You answered the question you wanted to hear, not the one I asked. It's a neat dance you did, but you should save it for someone that won't call you on it."

      I did not answer your question for a reason: I don't post here to answer your questions, and I explained to you why your question was irrelevant to the discussion.

      The animosity is toward the theorists who keep insisting microkernels are such a good idea, but are void of evidence. Science is posing theory and then testing it with observations, a.k.a. measurements. The available measurements don't look good for the microkernel theory.

      Maybe the microkernel theorists should quit posting here and work on some evidence of their theory.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    27. Re:Andy Tanenbaum ? by MZoom · · Score: 1

      Education means nothing if you do nothing with it.

      Well I disagree. From a very deep perspective education for self satisfaction carries meaning and value.

      In the context of your point, which I do understand, the education he gives, the knowledge he imparts from his published textbooks, and his affinity to make people participate in spirited dialog demonstrate that his education and teaching credentials speak for themselves. Seems to be he's done more with his education than most can claim in a lifetime. Comparing his accomplishments to that of others is totally skewed.

      John Wooden once said, "Don't confuse activity with accomplisment." That wisdom is knife that cuts both ways.

      --
      Integrity is what you are when nobody is looking.
    28. Re:Andy Tanenbaum ? by pH7.0 · · Score: 1
      >> He also likes to get into flame wars with Linus Torvalds when he gets bored.
      > Really? And what exactly do you base this on?

      Don't forget AST started the "LINUX is obsolete" thread on comp.sys.minix on Jan 29 1992 http://groups.google.com/group/comp.os.minix/brows e_thread/thread/c25870d7a41696d2/f447530d082cd95d? hl=en#f447530d082cd95d

      pH7
    29. Re:Andy Tanenbaum ? by sp0rk173 · · Score: 1

      If you're trying to be fair, then really be fair. Minix 1 was never meant to be functional. It was meant as a teaching aid. Minix 3 was written in scratch over the last year by three people, and it is a functional OS that can be used right now. While "minix" existed way before linux, this iteration of it has not. It has, actually, developed quite quickly to this point on very limited resources.

    30. Re:Andy Tanenbaum ? by sp0rk173 · · Score: 1

      The available measurements don't look good for the microkernel theory.

      I'd like to see the measurements that are based on modern microkernels like l4, coyotos or QNX, and not Mach. Mach is, indeed, extremely slow. But it's also extremely old and fairly out of date as far as microkernels go. It would be like comparing linux to OS/2 and saying "LOOK! Linux is way better than anything IBM puts out!"

    31. Re:Andy Tanenbaum ? by jelle · · Score: 1

      "Minix 3 was written in scratch over the last year by three people, and it is a functional OS that can be used right now"

      First Linux source 'intended to be read not run' was released Sept 1991, and in Oct 1991 thre was the fist usable linux. And in Dec 1992, it was self hosted.

      First Point is: making something that can be used a bit is not a feat unique to microkernels.

      Secont Point is: Re-starting from scratch doesn't reset the 'development time' counter. It simply means that you're trying again because the previous tries failed.

      http://lug.mtu.edu/slides-fall04/history.html

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    32. Re:Andy Tanenbaum ? by jelle · · Score: 1

      "I'd like to see the measurements that are based on modern microkernels like l4, coyotos or QNX"

      Each of them have very limited application and have their own unique disadvantages. Some have unique advantages that given them a litle niche to play in.

      What the microkernel theorists want you to believe is that microkernels are not just for niche-applications or just of academic interest. They want everybody to believe that microkernels are fundamentally a lot better than what we have today. With such a theoretical promise of microkernels, there should be a serious Linux/Unix contender real-soon-now.

      I've heard the microkernel theorist say that a couple of times before, each time with pretty much the same argumentation along these lines: "no this time it really is better, all previous times we said it and it didn't turnout, we found we did something wrong, the old stuff is crap this new thing will rule everything".

      So... I'll believe it when I see it, not when people keep repeating the same un-convincing arguments of why they believe it's better.

      The microkernel theorists have sandblasted us with their theory again this time around. After posing a theory, the next scientific step is to find proof of the theory by observing/measuring. For microkernels, that means: make it and show that it's what your theory promised.

      No microkernel that exists today proves the theory.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    33. Re:Andy Tanenbaum ? by sp0rk173 · · Score: 1

      After posing a theory, the next scientific step is to find proof of the theory by observing/measuring.

      Proof? No. Support. There is no such thing as "proof" in science, proof is an attempt to irrefutably reason using theory (ie, mathematical proofs, logical proofs, etc). They have no place in Science because science relies on refutable statements. Science, in practice, only refutes or supports. It does not prove.

      Back to the issue at hand, if you want evidence of the utility of a general purpose microkernel check l4linux here and here with this one being the paper most relevant to the discussion.

      They report less than a 5% slowdown on x86 kernels, which is below the realm of significance in science (10%+ is significant). If this is true, I doubt the user would even be able to percieve the difference. If you want details on their numbers, read the papers. As far as i'm concerned, the microkernel community HAS provided evidence to refute the claims that their architecture incurs an unacceptable performance hit. It just seems people either ignore the evidence, or are so stooped in their own dogma that they refuse to believe it. If you don't believe it, maybe you should give l4linux a try and see how general purpose a microkernel can actually be.

    34. Re:Andy Tanenbaum ? by sp0rk173 · · Score: 1

      I'm aware of the history of linux, thank you very much. But it's longevity and development curve has nothing to do with minix. AT ALL. It's irrelevant. My point was that you're selling minix's recent developments far too short. Minix stopped being actively developed for a REASON: it was a EDUCATIONAL OS back then and increasing complexity would only serve to defeat that purpose! Now it is NOT an educational OS, rather it is striving to be a GENERAL PURPOSE OS and has increased it's development click dramatically. It's not because people suddenly lost interest, as you seem to imply, or that it was a go-nowhere project. It had completed it's goal during that time. Period.

    35. Re:Andy Tanenbaum ? by jelle · · Score: 1

      "They report less than a 5% slowdown on x86 kernels, which is below the realm of significance in science (10%+ is significant)."

      Whoa. Absolutely not true. there is nothing in science that causes an arbitrary number such as '10% or less' to be called insignificant. If you make measurements that you have shown to have 1% measurement error max, then it is significant if you measure 1.01% difference. There are many examples in science where a noted difference of much less than 10% resulted in a new discovery.

      Besides that, a 5% slowdown for Linux is a pretty significant slowdown for me and many people like me.

      So... besides that: l4linux has existed for a while. And... is it widely used because of its obvious/great advantages? No, it's barely used because it's advantages are debatable and its disadvantage is significant.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    36. Re:Andy Tanenbaum ? by jelle · · Score: 1

      If this minix is something totally not linked to the other minix, then why call it minix?

      "We call it Minix because it has nothing to do with Minix".

      Yeah. Ok.

      Fine. I'm done posting in this thread. Nobody benefits from us disagreeing here.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
  5. SE Linux by Dark+Coder · · Score: 1

    If the Secured Edition Linux policy along with BSD's nearly error-free coding is merged with Minix3 along with POSIX capability support, then we have a good start.

    I'd be glad to give all my Windows platform for one Über-secured OS.

    1. Re:SE Linux by Aranth+Brainfire · · Score: 1

      All your Windows platform are belong to us. You have no chance to survive make your time.

      --
      "Quoting yourself is stupid." -Me
    2. Re:SE Linux by Chandon+Seldon · · Score: 1
      If you want an uber-secured OS right now, it's available: OpenBSD.

      Now, that doesn't nessisarily do anything else that you wanted, but security and stability it's got.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    3. Re:SE Linux by Dark+Coder · · Score: 1

      But OpenBSD needs a better security model, other than 'root'.

      Microkernel may enable facilitation of security containtment modeling, with relative ease, such as SE-Linux or GRE-Security models.

    4. Re:SE Linux by Chandon+Seldon · · Score: 1
      Uhh... that's not true.

      Perhaps some research OS / weird flavor of Linux needs a security model other than root right now, but OpenBSD doesn't. OpenBSD is a secure and stable BSD Unix in C, and it does that better than is reasonably possible. Totally altering the security model and basic archetecture completely misses the point, and would throw away both stability and security.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
  6. Go check the article out. by rdunnell · · Score: 4, Informative

    He developed Minix along with tons of other research work in distributed systems, networks, and other computer science topics.

    If you have a computer science degree you have probably used at least one if not more of his textbooks. He's one of the more prominent computer science researchers of the last couple decades.

    1. Re:Go check the article out. by Durandal64 · · Score: 1
      If you have a computer science degree you have probably used at least one if not more of his textbooks.
      His book on computer organization was one of the worst pieces of crap I've ever been forced to drop cash on. He frequently goes off on tangents and spends more time trying to be clever than clearly explaining the material. I fucking hate Tanenbaum, even though I like micro-kernels.
    2. Re:Go check the article out. by slashdotmsiriv · · Score: 2, Insightful

      "His book on computer organization was one of the worst pieces of crap I've ever been forced to drop cash on. He frequently goes off on tangents and spends more time trying to be clever than clearly explaining the material. I fucking hate Tanenbaum, even though I like micro-kernels."

      Allow me to disagree with you: the worst piece of crap was his book on computer networks. Just a bunch of meaningless buddles of sentences that had nothing to do with systems design principles. Good thing Peterson's and Kurose's books are now pushing that crap out of university classes and to oblivion.

      And no Tanenbaum is not among the elite of ystems researchers, not even close. Just check his publication record.

    3. Re:Go check the article out. by Durandal64 · · Score: 1

      Never had the pleasure, I'm afraid. I've got his books on computer organization and operating systems. The one on operating systems isn't bad, and truth be told, the computer organization one isn't bad as a reference text. But as a textbook for students, it's fucking terrible. Tanenbaum doesn't get that undergraduate students don't have PhD's in computer science, and I lost points on some of the reading question assignments because his wording of the questions was unclear.

    4. Re:Go check the article out. by WindBourne · · Score: 1

      As well as amiba which was one of the original micro kernels attempts, and the center of this debate.

      --
      I prefer the "u" in honour as it seems to be missing these days.
    5. Re:Go check the article out. by Anonymous Coward · · Score: 0

      amiba

      Ameoba

      one of the original micro kernels

      No.

      the center of this debate

      No.

      This entire thread is filled with a very special kind of wrong. Yours is just one of the many examples of ignorant commentary on a subject a tiny fraction of a percent of the people here have any insight into. It's mildly entertaining in a depressing sort of way.

    6. Re:Go check the article out. by Anonymous Coward · · Score: 0
      the center of this debate..No.

      Well, then you obviously are not up on the entire thing. T. pushed the micro after starting to write his own. And Ameoba was one of the early ones as in the first 2 years. And the concepts that he focus on are what he tried to embody in it, back in early 90's. So, yeah, it is at the center.

      Basically, the only thing that you had correct was the mispelling. You remind of an a**hole seems to have submerged who had little knowledge, but had to confirm it. I am guessing that it must be you.

  7. Plug central by Anonymous Coward · · Score: 1, Insightful

    While I generally agree with the points he makes, I did think his MINIX plug was a bit disingenuous:

    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.

    The easiest way to try one is to go download MINIX 3 and try it.

    Well, no. You can't seriously believe that running MINIX is going to magically give you expertise that lets you talk about operating system kernel design. You can't even use it to show that microkernels aren't that slow, because MINIX is going to seem way faster than your average Linux distribution loaded down with KDE or GNOME because you are comparing apples to oranges.

    It just seems like it's a stupid, obvious plug, and I think that's beneath him.

    1. Re:Plug central by Anonymous Coward · · Score: 0

      You can't even use it to show that microkernels aren't that slow, because MINIX is going to seem way faster than your average Linux distribution loaded down with KDE or GNOME because you are comparing apples to oranges.

      Of course, you could always disable KDE/GNOME and just launch X itself, just like Minix3 can.

    2. Re:Plug central by DarkOx · · Score: 1

      True but MIXIX is a teaching OS and it is very effective as far as its ability to clearly show OS concepts. It is extreemly clean and easy to understand and start hacking on. I have to say working with MINIX was one of the most positive experiences in the Operating systems course I took when I was in school. It is not useful as a platform, mostly because of file system limitations, 64meg file size cap sorta sucks; but it is a great way to learn how things are done, and it is perhaps the ONLY true micro-kernel which can do anything more then boot on the hardware most people have access too.

      Also removing that 64meg limit would be childs play. Removing that limit and keeping good performance would be an interesting project. It has perhaps already been done I have not looked at minix3 only prior versions.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    3. Re:Plug central by aramael · · Score: 1
      You can't seriously believe that running MINIX is going to magically give you expertise that lets you talk about operating system kernel design.

      I think that Dr Tannenbaum may have been aiming his comments at the many people who talk about microkernels without any experience whatsoever. Surely at least running one puts you a tiny little rung above that.

      --
      Be true and faithful like your dog; but don't eat vomit like your dog
    4. Re:Plug central by podperson · · Score: 5, Insightful

      You can't seriously believe that running MINIX is going to magically give you expertise that lets you talk about operating system kernel design.

      It's apparent from this thread that one needs no expertise whatsoever to talk about operating system kernel design, so running MINIX should if anything overqualify you.

    5. Re:Plug central by jibjibjib · · Score: 1

      MINIX 3 is *not* a teaching OS. MINIX 1 was a teaching OS. MINIX 3 is an operating system intended for real-world use, although it's not mature enough to be useful at the moment.

    6. Re:Plug central by gbjbaanb · · Score: 1

      and as Dr Tanenbaum says in the article, "they are as related as Windows 3.1 is to Windows XP. ie they share the same first name".

      Minix 3 is a working microkernel. Now it just needs Stallman to come along and add some GNU apps to it to make it a complete OS :-)

  8. Page based sockets? by goombah99 · · Score: 4, Interesting

    It seems to me the whole issue boils down to memory isolation. If you always have to pass messages to communicate you have good isolation but costly syncronization of data/state and hence potential performance hits. And vica versa: Linux is prone to instability and security breaches from every non-iolated portion of it.

    As I understand it, as a novice, the only way to communincate or syncronize data is via copies of data passed via something analogous to a socket. A Socket is a serial interface. If you think about this for a moment, you realize this could be thought of as one byte of shared memory. Thus a copy operation is in effect the iteration of this one byte over the data to share. At any one moment you can only syncronize that one byte.

    But this suggests it's own solution. Why not share pages of memory in parallel between processes. This is short of full access to all of the state of another process. But it would allow locking and syncronization processes on entire system states and the rapid passing of data without copies.

    Then it would seem like the isolation of mickrokernels would be fully gained without the complications that arrise in multi processing, or compartmentalization.

    Or is there a bigger picture I'm missing.

    --
    Some drink at the fountain of knowledge. Others just gargle.
    1. Re:Page based sockets? by after+fallout · · Score: 2, Interesting

      As I read this, it seems quite analogous to objects in C++ (or any other OOL). All kernel interfaces could publish the data they want to have public, and hide the data that is private to the implementation of the feature.

      I would suggest that this will eventually make its way into kernel systems (just like any other good idea that has come from the programming language fields).

    2. Re:Page based sockets? by nuzak · · Score: 3, Interesting

      > But this suggests it's own solution. Why not share pages of memory in parallel between processes.

      This is precisely what shared memory is, and it's used all over the place, in Unix and Windows both. When using it, you are of course back to shared data structures and all of the synchronization nastiness, but a) sometimes it's worth paying the complexity price, and b) sometimes it doesn't actually matter if concurrent access corrupts the data if something else is going to correct it (think packet collisions).

      Still, if you have two processes that both legitimately need to read and write the same data, you probably need three processes. The communication overhead with the third process is usually pretty negligible.

      There's even more exotic concurrency mechanisms that exist that don't require copying or even explicit synchronization, but they're usually functional in nature, and incompatible with the side-effectful state machines of most OS's and applications in existence today.

      --
      Done with slashdot, done with nerds, getting a life.
    3. Re:Page based sockets? by goombah99 · · Score: 2, Interesting

      Perhaps I'm mistaken, but Isn't shared memory essentially available to the entire macro-kernel and all it's processes. Something more fine grained like a page based socket would let two processes agree to communicate. They would be sending messages to each other over a very wide channel: the entire page, not some serial socket.

      Some other process could not butt-in on this channel however, since it's not registered to that socket.

      Or is that how shared memory works?

      Tnnebaum's point is that he can have a re-incarnation server that can recreate a stalled process. Thus by using exclusively message based communication he can assure that this won't disrupt the state of the operating system (because it's all isolated). The problem is when two processes need to share lots of data quickly. THen message passing gets in your way.

      Something that had the negotiated nature of a socket, yet allowed two processes to syncronize their large data structures without passing the entire structure serially would be ideal. then you could still potenitally have things like a re-incarnation server. A new process would simply have to re-negotiate the socket.

      --
      Some drink at the fountain of knowledge. Others just gargle.
    4. Re:Page based sockets? by goombah99 · · Score: 1, Informative

      Since people seem to think I was talking about shared memory in my post, let me clarify what I mean be a page socket. What I mean is that for two processes to communicate over a normal serial socket they do it one byte at a time. With a page socket, one process could in effect send an entire page of memory to another. It would infact be sending simply a pointer to some page of memory. This pointer could be to a read-only or read-write part of memory enforced in the MMU. Thus sending a page of a data structure would be instantenous.

      But it's not free-form shared memory. One process strill has to request and or accept a socket from another. They are isolated. The other process only gets the page pointer when the first one sends it.

      Thus not every processes can write to every bit of shared memory because they all live in seperate process spaces, not just a kernel space.

      If a process dies, a re-incarnation server can restart it and it can once again send a message requesting the page of memory. It's still message based to request or send pages. Thus it maintains the robust, isolated, message based nature of a micro kernel in many ways.

      Or is this how shared kernel memeory works now in Linux?

      --
      Some drink at the fountain of knowledge. Others just gargle.
    5. Re:Page based sockets? by nuzak · · Score: 2, Informative

      > Perhaps I'm mistaken, but Isn't shared memory essentially available to the entire macro-kernel and all it's processes.

      The kernel is the arbiter of shared memory, sure, because that's how it works, by futzing with the VM mappings of processes using it. It's not available to every process in the system though, it still has to ask the kernel for access.

      But "communication" over shared memory is exactly how it works -- the size of the channel is the size of the entire shm segment. You write as much data as you want to the shm segment, then notify the receivers by using some sort of synchronization primitive -- 99% of the time when using shm, you use a semaphore, another SysV IPC primitive.

      The SysV IPC bag of tricks also contains message queues, but I rarely see those used -- their API is weird and asymmetrical, and they're probably never implemented all that well due to their relative disuse. A good implementation could easily do them as zero-copy. BeOS was big on message-passing, and I imagine it used shared buffers to prevent unnecessary copies.

      Incidentally, sockets and pipes are only conceptually stream-oriented. In reality, you're dealing with the size of the entire buffer, and it's really quite reasonably fast. When you want durability of your IPC resource, you can use named pipes, though you still to handle recovery of data in the buffer if the producer crashes.

      --
      Done with slashdot, done with nerds, getting a life.
    6. Re:Page based sockets? by Hard_Code · · Score: 2, Interesting

      I think it's because typically the "message" which is meaningful to most application is of larger granularity than a single byte, so it makes sense to instead synchronize around that message. Also, you want to ensure that the semantics of your API and your synchronization match. It makes no sense to preserve integrety without preserving semantics. The best way to do that is to either explicitly make a copy, or to "lease" the structure until such time as you are notified that all necessary work has been done. You need access to be atomic on the scale you are interested in. Not just arbitrary bytes. After all we already have instructions that are atomic on arbitrary bytes.

      --

      It's 10 PM. Do you know if you're un-American?
    7. Re:Page based sockets? by the_duke_of_hazzard · · Score: 2, Interesting

      The Linux v Tanenbaum debate reminds me of the debates I hear at work between those who understand that software is a commercial kludge between conflicting/changing requirements, the limitations of time and abilities of support engineers etc., and those who want to do everything "right", often blowing development budgets, and producing unusable, over-optimised, hard-to-maintain code. I exaggerate the distinction for effect, of course. Linux has built a system, it works and it's used everywhere. Microkernels are all niche, and the benefits are debatable compared to the ubiquity and support for monolithic kernels. That said, I think Tanenbaum is funamentally right. But then I've had to train myself to be more like Linux than Tanenbaum to actually get things done.

    8. Re:Page based sockets? by x2A · · Score: 1

      "for two processes to communicate over a normal serial socket they do it one byte at a time"

      I don't believe this is true. There'll be a maximum limit (which I recently hit myself, so you have to fragment large amount of data, but I forget what the limit I hit was), but moving data one byte at a time would be incredibly inefficient, I can't see it happened often at all. I guess the actual mechanism is that you send the length of your message as a (couple?) of bytes, followed by the message itself. The other end will read the length, and then read that many bytes of actual message.

      "One process strill has to request and or accept a socket from another"

      What you're I think talking about is zero-copy messaging, and is used in some places when you are moving pages at a time, and when the sender no longer needs the buffer/memory that the message is placed in. One useful place this can happen is passing packets along the network stack, when it's a case of "read, figure where it's to go, and pass it on... then read the next one".

      Often though, copying is needed, as you may need to change stuff in the buffer, but need to make sure the reciever had the version before you carried on changing it.

      --
      The revolution will not be televised... but it will have a page on Wikipedia
    9. Re:Page based sockets? by crawling_chaos · · Score: 1
      Linux has built a system, it works and it's used everywhere. Microkernels are all niche

      Isn't OSX Mach based? If so, I think you have to stretch "niche" pretty hard, in fact to the point where Linux itself must be considered to have only succeeded in a "niche" market as well.

      --
      You can only drink 30 or 40 glasses of beer a day, no matter how rich you are.
      -- Colonel Adolphus Busch
    10. Re:Page based sockets? by the_duke_of_hazzard · · Score: 1

      In the sense that everything has a niche, yeah. But there's an ongoing debate about whether OSX is really a microkernel. From the article: "Mac OS X is sort of microkernelish. Inside, it consists of Berkeley UNIX riding on top of a modified version of the Mach microkernel. Since all of it runs in kernel mode (to get that little extra bit of performance) it is not a true microkernel"

    11. Re:Page based sockets? by Squash · · Score: 1

      No. Mach is a microkernel. OSX implements a BSD kernel as one server running under this Mach kernel. It has the worst parts of both worlds! This is one of the reasons why server benchmarks on OSX are so bad, compared to linux on the same box.

      --
      Squash
    12. Re:Page based sockets? by Crussy · · Score: 1

      What about microsoft's singularity project?
      It's built on c#, and should feature most of the OOP techniques that you talked about. It also is a microkernel which fits nicely into this whole debate.
      Granted it is truly just a research project, they're reaching far out into the future with trying to make a microkernel built around an OO and managed language.

    13. Re:Page based sockets? by Anonymous Coward · · Score: 0

      If you have message passing through a socket, it would be very easy to put together a multiprocessing environment on a network.

    14. Re:Page based sockets? by 4v4l0n42 · · Score: 1

      [OT_forgive_me]

      From your signature:

      <nazi_grammar_mode>

      Senito aliquos togatos contra me conspirare

      Should be:

      Sentio aliquos togatos contra me conspirare

      sentio sentire sensi sensum [to feel , perceive; to experience, feel the force of a thing; to realize a truth; to hold an opinion, judge, suppose]; legal, [to decide, to vote]. N. pl. of partic. as subst. sensa -orum, [thoughts, sentiments].

      It roughly translates: "I think some people in togas are plotting against me"

      Senito (to my knowledge) does not exist, it may be confused with senatus -us (or -i) , m. [a council of elders, the Senate];'senatus (senati) consultum', [a formal resolution of the senate]., which changes completely the significance of the sentence, given that you could make a sense out of a phrase with no first person verb.

      Probably one could say: "Some people in the senate are plotting against me.", but it makes no real sense in latin anyways.

      </nazi_grammar_mode>
    15. Re:Page based sockets? by laffer1 · · Score: 1

      OSX Server works fine as a file server. It beats our novell and windows file servers at work all the time.

      I think there is strong evidence that mysql runs like shit. The thing is mysql runs poor on everything that isn't linux anyway. There was a huge thread on freebsd-performance on this issue recently.

      In general, i've noticed OSX does poor with database products which leads me to believe raw disk io sucks in OSX. Considering apple used some freebsd 5 code, that might be part of the problem. Until 6.x, i noticed that freebsd was rather slow at times under load using disks. (and other things) I don't think you can blame all possible performance issues on the Mach kernel itself. I suspect when 10.5 comes out, we'll see some better benchmarks. Apple had to hack in intel support to 10.4 (even if it mostly worked the whole time) and i have a feeling that hurt performance a bit.

      Please remember the performance characteristics of an operating system are more than one technology or design decision used. Linux has changed a lot since i first tried it 9 years ago. I do understand why its hard to believe a Mach kernel can perform ok, as i still struggle with trusting linux with my data (ext2 + power off = data loss circa redhat 5)

    16. Re:Page based sockets? by Squash · · Score: 1

      MySQL is just one example. This comparison gives you Linux, Windows XP, and OSX on the same Core Duo machine. These benchmarks do almost no I/O, so your filesystem complaints are moot. They also did one using the G5. Same story. Not to say that the filesystem in freebsd doesn't hurt it, or that threading in freebsd doesn't hurt it, but you can't blame it for everything.

      --
      Squash
    17. Re:Page based sockets? by Anonymous Coward · · Score: 0

      As I understand it, as a novice, the only way to communincate or syncronize data is via copies of data passed via something analogous to a socket.

      I don't know about Minix, but with L4 you can map pages into someone else's address space (if they accept) as part of an IPC. In fact, this is how processes get memory from the memory manager in the first place (and how the memory manager in turn gets it from sigma0).

    18. Re:Page based sockets? by drsmithy · · Score: 1
      Isn't OSX Mach based?

      OS X is a microkernel like Windows NT is a microkernel. Which is to say, its architecture is modular and there's lots of getting passed around, but everything runs in kernel mode for decent performance (although that doesn't seem to help OS X much).

      I believe Vista is moving more stuff out of kernel mode, moving it back towards the original versions of NT. So in theory it's getting a bit more microkernel-ish with the next release.

    19. Re:Page based sockets? by Doctor+Memory · · Score: 1

      OSX does poor [sic] with database products which leads me to believe raw disk io sucks

      From what I understand, the biggest problem with OSX is the interrupt overhead. There are so many layers (disk driver to device I/O subsystem to Mach to BSD I/O to BSD kernel to application) that performance suffers. It looks like every release improves this, but no matter how much you shine that Jetta it'll never be a Porsche.

      --
      Just junk food for thought...
    20. Re:Page based sockets? by jelle · · Score: 2, Informative

      "99% of the time when using shm, you use a semaphore, another SysV IPC primitive."

      This is my opinion, but I had to say it: I personally don't like SysV. There are various ways to synchronize, and each method has advantages and disadvantages, but SysV is at the bottom of the pack if you ask me.

      process-shared pthread mutexes and conditions are much faster than SysV, because they usually don't make a system call. A disadvantage of the SysV ipc that process-shared pthread mutexes have too is demonstrated by the existance of a program called 'ipcrm': "to delete resources that were left by irresponsible processes or process crashes": When a process crashes (or gets a kill -9, or a similar rude interruption), it may keep a lock causing the other contenders to wait forever until somebody cleans up the mess.

      That is why fcntl()-based locks can be the right thing for your app, even though it's a syscall every time too like SysV. fcntl()-based locks are cleared as soon as you exit or close the filedescriptor (you can use the same fd as the one you used to mmap() the shared memory). That last behaviour, in turn, is a disadvantage of fcntl locks, because you lose the lock too if you close another filedescriptor referring to the same file (grunt)... There is also the flock(), which can hold only one lock per file (and I'm not sure, may have the same limitation as the fcntl() locks).

      None of these are 'perfect', but SysV has never been my choice yet... I have good hopes for the new 'robust futexes' in the very lastest 2.6 kernels, which should combine the flexibility and efficiency of pthread mutexes with the robustness of flock()...

      Oh, and yes: you can place a pthread mutex or condition in shared memory between processes (pthread_ZZZattr_setpshared(attr, PTHREAD_PROCESS_SHARED), it's not very well documented but it has been in the nptl for a while now and it works great).

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    21. Re:Page based sockets? by goofyheadedpunk · · Score: 1

      Unfortunately, according to the wikipedia link you provided, we can get the source to the Singularity project, meaning it's of little worth to anyone outside Microsoft Research.

      --

      What if the entire Universe were a chrooted environment with everything symlinked from the host?
    22. Re:Page based sockets? by Jeremi · · Score: 1
      What I mean is that for two processes to communicate over a normal serial socket they do it one byte at a time.


      I don't think the above is true in any meaningful sense. Only poorly written programs send/recv a single byte at a time, as it is quite inefficient to do that. Most programs will try to send as much data as possible per call to send()/recv().


      With a page socket, one process could in effect send an entire page of memory to another. It would infact be sending simply a pointer to some page of memory. This pointer could be to a read-only or read-write part of memory enforced in the MMU. Thus sending a page of a data structure would be instantenous.


      I think the same trick might be doable as an extra-clever implementation of the standard send()/recv() API (in fact, I suspect that some OS's already do something like this). When both the sending and receiving process live on the same hardware, send() could implicitly mark the send-buffer as a shared memory space for the receiving process to look at.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    23. Re:Page based sockets? by Pseudonym · · Score: 2, Insightful
      Linux has built a system, it works and it's used everywhere. Microkernels are all niche [...]

      One of Tanenbaum's central points is that Linux is not used everywhere. In particular, it's not used anywhere that hard-real-timeness, seriously paranoid robustness (e.g. in those applications where a hardware failure should not result in a reboot) etc are important.

      The word "niche" is, much like "legacy", often used in places where a more overt dismissal would rightly be seen as unfair. The fact that Linux can do everything that you want it to do doesn't mean that you are the whole world, or that any site that doesn't look like yours is "niche", as opposed to "everywhere".

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    24. Re:Page based sockets? by Bluelive · · Score: 1

      Only allowing access to parts of the kernel memory space a module subscribes too might be a nice way to increase robustness. But it would seriously reduce performance, this is why for example, that selectors are used so rarely.

    25. Re:Page based sockets? by geggo98 · · Score: 1

      As I understand it, as a novice, the only way to communincate or syncronize data is via copies of data passed via something analogous to a socket. A Socket is a serial interface. If you think about this for a moment, you realize this could be thought of as one byte of shared memory. Thus a copy operation is in effect the iteration of this one byte over the data to share. At any one moment you can only syncronize that one byte.

      But this suggests it's own solution. Why not share pages of memory in parallel between processes. This is short of full access to all of the state of another process. But it would allow locking and syncronization processes on entire system states and the rapid passing of data without copies.

      There is another solution: All data shares the same address space, so it can be accessed by simple pointers; no copying is necessary. To ensure the integrity of the system, all code in the kernel space must be proofed for correctness. To decrease the cost of such proofs, automatic proofers are used. Such systems are already in use: the proofs are done using a type checker on a type system. The type system ensures, that the data is only modified on a certain way, e.g. using certain primitives. When the code is loaded, a type checker verifies, that the code is properly typed, i.e. follows the rules of the type system. Using an appropriate type system, it can be ensured, that correct locking is performed, that onlycertain modules can access specific data, or that each access is monitored by some security system.

      Using a type system to ensure the integrity of the data is used in most modern programming languages. E.g. many applets can share the same address space in the same Java VM; but they cannot tinker with each others data -- the type system prevents this. Type checkers in an operating system are already in use. Examples for this are Kernel Mode Linux and Java Operating System.

      To use a type system in the kernel context, it is not necessary to use a full blown virtual machine, which interpretes the code and provides garbage collection. But the assembler code must contain type information. This is ensured by modern assembler varaints, e.g. Typed Assemlber Language or the Low Level Virtual Machine.

      Using this approach, you can have a better compromise between speed and isolation. Shared memory looks nice on the first glance, but gives an component full access on the shared data. Shared memory does not solve synchronization. Using a proper type system, synchronisation becomes trivial. Just think of the synchronized keyword or the atomic datatypes in Java.

    26. Re:Page based sockets? by gbjbaanb · · Score: 1

      No, what you have at work is a distiction between lazy programmers who don't want to spend any time working on a maintainable solution, and others who are deluding themselves that they have more skill than that actually have.

      I exaggerate for effect of course :)

      The good developers you want though, are ones who will write good code that is easy to understand, simple and effective. These will not write the sloppy code that just fixes the issue regardless of its long-term quality. These are the guys who would write the microkernel because it is a better system and wouldn't impact on development time whilst also giving better maintenance.

      Microkernels aree not niche at all - read the article, he shows you a few that are much more widely used than the number of Linux installs. (ie, your mobile phone has a microkernel, as do Cisco routers)

    27. Re:Page based sockets? by Randolpho · · Score: 1

      Andy lists Singularity as one of the other microkernel operating systems that exist today. Singularity has the same goals that Andy does -- an OS that is built from the ground up to be reliable and secure. "Self healing", as Andy puts it.

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
    28. Re:Page based sockets? by the_duke_of_hazzard · · Score: 1

      I'm sure Cisco routers are very stable, but mobile phone crashes are pretty frequent in my experience. Cisco routers were about the only big one I could see in the article. I can't remember the last time I had to reboot my Linux server.

    29. Re:Page based sockets? by Anonymous Coward · · Score: 0

      I think you meant "Grammar Nazi mode." The National Socialists didn't have a special kind of grammar that you are teaching.

    30. Re:Page based sockets? by crawling_chaos · · Score: 1
      It looks like every release improves this, but no matter how much you shine that Jetta it'll never be a Porsche.

      Which is not necessarily a bad thing. I know someone who is a Porsche afficiando. They are hanger queens compared to the VWs. All that precision machinery needs constant tuneups and attention.

      --
      You can only drink 30 or 40 glasses of beer a day, no matter how rich you are.
      -- Colonel Adolphus Busch
    31. Re:Page based sockets? by Doctor+Memory · · Score: 1

      Bullshit. I've owned a Porsche for the last twelve years, and they take no more maintenance than any other car I've owned. Well, unless you count the extra work I do on it to get it ready for track days, but I'd have to do the same work on anything else I took to the track.

      And twelve years and over 100K miles later, it looks a hell of a lot better than my last car; in fact, it looks a hell of a lot better than most of the cars I pass every day.

      The fact that your buddy is a fair-weather driver says more about him than the type of car he drives.

      --
      Just junk food for thought...
  9. I don't think it's about works vs not works. by khasim · · Score: 2, Insightful

    From what I've seen of this "debate", it's all about what each group believes is (are) the most important aspect(s) of the kernel.

    Oblig auto analogy:
    If hauling cargo is your primary objective, then you'll probably view motorcycles as badly designed while seeing vans and trucks as "better".

    Only time (and code) will show which approach will result in all of the benefits of the other approach without any unacceptable deficiencies.

    1. Re:I don't think it's about works vs not works. by JPribe · · Score: 4, Insightful

      You're on to something...you are very close to the cache. Why are we "debating" this when the asnwer seems very clear once one takes a step back: They (the kernels) can exist in harmony, each in its own place. Tanenbaum makes a decent showing of examples about where and why micros are used. This isn't a "which is better" argument. This should be a "where is one better utilized than the other in situation X" debate. That flamewar I could tolerate. Bottom line is that neither will replace the other, at least in a timely enough manner that it is worth wasting time over now.

      --

      Why go fast when you can go anywhere? O|||||||O
    2. Re:I don't think it's about works vs not works. by Chandon+Seldon · · Score: 1
      You always need to watch out for cases where one of the two choices actually is better.

      For example, take a musket versus a modern rifle. There is the edge case of historical reenactments, but for all "real" use cases such as hunting or killing someone the rifle has much better functionality and performance.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    3. Re:I don't think it's about works vs not works. by Afrosheen · · Score: 1

      That's a poor analogy because though you're considering similar weapons ('guns') they're vastly different because one has changed through major evolution and the other hasn't.

        It'd be more accurate to compare a sniper rifle to an assault weapon. Each has their place, and you wouldn't want to use an AK47 to snipe with, or a PSG in close combat.

    4. Re:I don't think it's about works vs not works. by Chandon+Seldon · · Score: 1

      The point is, sometimes things are similar. I'm not nessisarily saying that this is true for microkernels and monolithic kernels, but given any two things there's no rule that they both "have their place" - one might just be better.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    5. Re:I don't think it's about works vs not works. by OrangeSpyderMan · · Score: 1

      I'm not nessisarily saying

      OK - stop there. We get the picture :)

      --
      Try NetBSD... safe,straightforward,useful.
    6. Re:I don't think it's about works vs not works. by zerocool^ · · Score: 1


      you wouldn't want to use an AK47 to snipe with

      Except in Counter-Strike:Source

      ~Wx

      --
      sig?
    7. Re:I don't think it's about works vs not works. by Afrosheen · · Score: 1

      While I agree with what you're trying to say, generally in life, if there are two similar products, their strengths land them in different roles.

        Take vhs and beta. Beta was better despite licensing and is still used to this day by broadcasters. Betas place was behind your tv set (at the tv station) and vhs's place was on top of your tv. At one time ac and dc power competed, now we use both for different things. Unix is wonderful for servers but not suited for the desktop (unless you count apple but I digress).

        The main thing is, there's a place for every competing technology, any government contractor working with a hodgepodge of operating systems and apps will tell you that.

    8. Re:I don't think it's about works vs not works. by Gorshkov · · Score: 1

      Not true. The Mythbusters proved quite convincingly that if you want to shoot somebody who is at least 18 inches under water, you're not going to be able to do it with ANY high-powered modern weapon - the speed of the projectile is so great that it shatters on contact with the water.

      The only way to get a kill is to use something with a much lower muzzle velocity, and higher round mass ....... like a musket.

    9. Re:I don't think it's about works vs not works. by Chandon+Seldon · · Score: 1

      Yup. And a steam-valve computer will have excellent EMP resistance, but that doesn't mean that "Electronic transistor-logic computers and steam-valve computers both have their places, neither is better than the other".

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
  10. Re:Still Debating by GReaToaK_2000 · · Score: 4, Insightful

    yeah, and in that same vein we'd all have Betamax players.

    I am NOT implying that uKernels are better, I am playing devils advocate.

    Not everything that "wins" is the best... Look at Windows :-D!

  11. Re:Still Debating by TheBishop613 · · Score: 2, Insightful

    Using that same logic, shouldn't everyone just abandon Linux as Windows is clearly better? If Linux were superior the vast majority would be using it today.

    Personally, I don't care either way in the micro/macro kernel debate. As long as we have people still interested in both its a win-win situation for us computer enthusiasts.

  12. Minix is already on version 3 by Anonymous Coward · · Score: 5, Funny

    I'd like to point out that Minix is already FAR FAR *FAR* ahead of Linux in the version numbering war. Minix recently moved to version 3
    And Linux seems to be stuck on version 2.6

    And v3.12 (I think, I'm going from memory here) will finally support the X windowing system

    Oh...maybe I should have left out that last sentence...kinda kills my argument

    1. Re:Minix is already on version 3 by Spy+der+Mann · · Score: 1

      Minix recently moved to version 3
      And Linux seems to be stuck on version 2.6


      HAH! Windows was on version 3 SO MANY YEARS AGO. Eat your heart out, Linux!

    2. Re:Minix is already on version 3 by einhverfr · · Score: 1


      HAH! Windows was on version 3 SO MANY YEARS AGO.


      And it *still* doesn't support the X windowing system (out of the box at any rate)....

      --

      LedgerSMB: Open source Accounting/ERP
    3. Re:Minix is already on version 3 by Anonymous Coward · · Score: 0

      Versions don't mean $Hit. Write a program then make it version 10, because you feel like it.

    4. Re:Minix is already on version 3 by AKAImBatman · · Score: 2, Informative

      And v3.12 (I think, I'm going from memory here) will finally support the X windowing system

      That's odd. I could have sworn that I was just using an X-Terminal on it a few minutes ago.

      Oh wait. I was using an X-Terminal. How in the world did that happen? </mock-sarcasm>

      To be fair, getting X-Windows running is a recent development. On the other hand, the entire Minix3 codebase is a recent development. (Only a half-year old.) They're moving at a pretty good clip for a brand-new OS. :-)

    5. Re:Minix is already on version 3 by oudzeeman · · Score: 1

      OMG OS X is on version 10.4!!!!11!!1111

      ;)

    6. Re:Minix is already on version 3 by EvanED · · Score: 1

      Yeah, but Windows is on XP! I'm just going to assume that's a base 26 number, and so is 640!

      (That should be high enough for anybody.)

    7. Re:Minix is already on version 3 by Dr.+Evil · · Score: 1

      Driver support is the killer. Unless Minix finds an easy way to port Linux drivers, it won't go further on the desktop than BSD. And it won't even get as far as BSD unless it has a BSD-like license.

      OTOH, the desktop doesn't matter. I need to take some time to play with Minix. Tanenbaum's a sharp fellow. Any word on a Xen compatibility?

    8. Re:Minix is already on version 3 by AKAImBatman · · Score: 2, Informative

      Unless Minix finds an easy way to port Linux drivers, it won't go further on the desktop than BSD.

      I'm thinking that's a ways down the road. If Minix could at least be viable for embedding into smaller, pre-configured devices, it could garner a lot more support in the device-driver arena.

      And it won't even get as far as BSD unless it has a BSD-like license.

      Sorry? Minix3 is distributed under the BSD license.

      Any word on a Xen compatibility?

      Apparently it's up and running. :-)

    9. Re:Minix is already on version 3 by Neil+K. · · Score: 1

      I think we all know that version numbering means nothing more than you can count.
      And with the way some version numbers go, even that is doubtful.

    10. Re:Minix is already on version 3 by Richard+Steiner · · Score: 1

      Heh. The sign-on screen of the OS2200 box I'm playing on right now says "Exec Level 47R2A", so what does version numbering say about the maturity of mainframe OSes? :-)

      --
      Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
      The Theorem Theorem: If If, Then Then.
    11. Re:Minix is already on version 3 by Anonymous Coward · · Score: 0

      I think we all know that version numbering means nothing more than you can count.
      And with the way some version numbers go, even that is doubtful.


      You don't say. Thanks oh so much for clearing that up. No telling how many people might have taken that post seriously without your expert input.

    12. Re:Minix is already on version 3 by someone1234 · · Score: 1

      Whoa! Minix is ready for the desktop!!!

      --
      Patents Drive Free Software as Hurricanes Drive Construction Industry
    13. Re:Minix is already on version 3 by Alomex · · Score: 1


      Correct. Minix is a mickey mouse academic operating system that contains no paging and no graphics facilities, but aside from that "it's a real operating system". Yeah right.

  13. Anti-reset button fanatic by Anonymous Coward · · Score: 4, Insightful

    "TVs don't have reset buttons. Stereos don't have reset buttons. Cars don't have reset buttons."

    They may not be labeled "reset" but they *do* have them. And, no offense, but I like having a reset button.

    1. Re:Anti-reset button fanatic by maxume · · Score: 1

      Do you like using them?

      I like knowing that it is there, because it means the designers have realistic expectations(something *might* go wrong no matter what) but it always seems to be a hassle to actually use it.

      --
      Nerd rage is the funniest rage.
  14. Re:Still Debating by goombah99 · · Score: 1

    I think the real issue here that brings this argument full circle is that when speed for basic operations was an issue then Linux wins. But in todays world we have plenty of fast CPUs. What we lack is stability and the ability to architect robust systems in a scalable manner. For applications that require every ounce of speed, well only those that actually interact with the OS will notice much differnce between Micro-kernel and linux. So this is not to say that the whole computer is slow under micro kernel.

    --
    Some drink at the fountain of knowledge. Others just gargle.
  15. Celebrity death-coding by everphilski · · Score: 1

    Why not doing a "proof of concept" instead of battling?

    Torvalds vs. Tanenbaum ... fight!

    1. Re:Celebrity death-coding by Thud457 · · Score: 1

      Torvalds vs. Tanenbaum ... fight!

      --

      the preceding comment is my own and in no way reflects the opinion of the Joint Chiefs of Staff

    2. Re:Celebrity death-coding by maxwell+demon · · Score: 2, Funny
      --
      The Tao of math: The numbers you can count are not the real numbers.
    3. Re:Celebrity death-coding by Andrewkov · · Score: 1

      I say let them settle it in the Octagon.

    4. Re:Celebrity death-coding by jibjibjib · · Score: 1

      In Soviet Russia, post first YOU!

  16. Re:Still Debating by Respawner · · Score: 2, Informative

    yeah, I wish we used microkernels today, mayby we could put it in OS X or something else nobody uses, oh wait ...

  17. Whatever... by MoxFulder · · Score: 3, Interesting

    Linux is very reliable for me, even on newer hardware with a bleeding edge kernel. Why should I care whether it has a microkernel or monolithic kernel? Everything I deal with is user space. If it runs GNOME, is POSIX-like, and supports some kind of automatic package management, I'll be happy as a clam.

    Will hardware drivers be developed faster and more reliably with a microkernel? That seems to be the biggest hurdle in reliable OS development these days... Anyone have a good answer for that, I honestly don't know.

    1. Re:Whatever... by Anonymous Coward · · Score: 0

      Why should I care whether it has a microkernel or monolithic kernel?

      Because for a start, you won't ever need to dick around with re-compiling your kernel or making sure kernel headers are available. Drivers can be loaded and unloaded as easily as a regular application.

    2. Re:Whatever... by Spy+der+Mann · · Score: 1

      Why should I care whether it has a microkernel or monolithic kernel?

      Because with Microkernel, we could have proprietary drivers *cough* ATI, nVidia *cough* without having to worry about the driver messing up the system.

    3. Re:Whatever... by Anonymous Coward · · Score: 0

      Conceptually, driver development with microkernels should be far, far, far faster than with monolithic kernels. With a monolithic kernel, you have to recompile the entire kernel to correct a bug in a single driver, install the new kernel binary, and then reboot the system.

      By contrast, if you have a bug in your microkernel driver, you just kill it, recompile only the driver, and reload it! No fancy kernel install required, just load the single driver.

      I'm not entirely sure why microkernels don't seem to be used in practice, they are - on paper, at least - far superior to monolithic kernels. But there seems to be something about them in practice that's caused most popular operating systems to move away from them and use monolithic kernels instead. Windows NT used to be a microkernel, but NT4.0 changed to a monolithic kernel and Windows 2000 and XP use that monolithic kernel. NextStep used a microkernel (I think), but Mac OS X instead uses a monolithic kernel based on BSD.

      I have a feeling that it's easier to write a monolithic kernel than a microkernel, despite the fact that a microkernel should in theory be less complicated, more robust, more secure, and easier to write drivers for. The fact that they aren't used in more desktop OSes suggests that there's some advantage to the monolithic kernel in terms of development time. It certainly isn't stability (as the infamous Blue Screen of Death proves), so it must be development time. I guess monolithic kernels are just easier to understand and write.

    4. Re:Whatever... by zippthorne · · Score: 1

      And that's different from modules... how?

      --
      Can you be Even More Awesome?!
    5. Re:Whatever... by einhverfr · · Score: 2, Interesting

      Linux as a kernel is so reliable for me that the only times I have to use the reset button are when hardware malfunctions (usually something that a microkernel can't help with, like RAM, CPU, or the video card, though in the latter case, I tend to ust leave the computer running and ssh in from elsewhere...).

      I noticed two things about Tannenbaum's piece though. Essentially all of the microkernels he listed were either used in dedicated (including embedded) systems or were not true microkernels by his own admission. Or, like HURD, they were not commonly used in production. I would add Unicos/mk to the dedicated systems category because it is designed to run a single process efficiently across a large number of processes.

      So here we have it. Microkernels are *far* better in some environments where the computer has a single (and often well defined) task esp. on well defined hardware but for things like mainframes or network servers, they are not commonly used. I can only suggest that the tradeoffs are more subtle than are commonly discussed here.

      --

      LedgerSMB: Open source Accounting/ERP
    6. Re:Whatever... by xenocide2 · · Score: 3, Funny

      With modules, you don't get a warm fuzzy feeling inside, telling you that microkernels are truly superior.

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    7. Re:Whatever... by einhverfr · · Score: 1

      funny, I thought:
      make modules
      and
      make modules_install
      meant you didn't have to recompile the whole thing...

      --

      LedgerSMB: Open source Accounting/ERP
    8. Re:Whatever... by einhverfr · · Score: 1

      Wouldn't it be cleaner and safer just to reqire these companies to move the proprietary bits to firmware (i.e. on the other side of the PCI or AGP bus)? That way not only does the video card driver not crash the kernel but it can work on different CPU architectures too....

      --

      LedgerSMB: Open source Accounting/ERP
    9. Re:Whatever... by guitaristx · · Score: 1

      With modules, you don't get a warm fuzzy feeling inside, telling you that microkernels are truly superior.

      Along with the fringe benefit of knowing that those proprietary drivers can't crash your kernel.

      --
      I pity the foo that isn't metasyntactic
    10. Re:Whatever... by Anonymous Coward · · Score: 0

      Microkernel == a set of interfaces set down at design time that dictate what information kernel can and cannot pass around between components. One module can't just reach across and grab the information it needs. If while developing you want to change something in one module, you have to redesign the interface, and then redesign all your modules. As a consequence, Microkernels are in a constant state of being totally redesigned for the smallest changes. (cough, Hurd, cough).

      Essentially, microkernels are a great idea if you have forever to sit and contemplate the perfect design (academic luxury) and then go back and redesign it if you find it doesn't quite work correctly. Meanwhile... in the real world... monolithic rules, though it has learned some of the more useful lessons from the microkernel fiasco.

    11. Re:Whatever... by ArbitraryConstant · · Score: 1

      I agree.

      Real-time OSes, where guaranteeing a particular latency is more important than maximizing throughput, are often microkernels.

      But server OSes like Solaris, Linux, FreeBSD, etc are overwhelmingly monolithic. They spend a lot of their time in the kernel doing network I/O, disk I/O, etc, and I would contend that performance is an issue here. L4Linux is a monolithic Linux server, so I don't think it represents the true impact of messaging overhead.

      --
      I rarely criticize things I don't care about.
    12. Re:Whatever... by MoxFulder · · Score: 1

      And allowing proprietary stuff into the kernel solves *what* problems exactly? :-P

    13. Re:Whatever... by Eli+Gottlieb · · Score: 1

      [SHAMELESS PLUG]

      Will hardware drivers be developed faster and more reliably with a microkernel? That seems to be the biggest hurdle in reliable OS development these days... Anyone have a good answer for that, I honestly don't know.

      I can't honestly tell you the difference between developing drivers for microkernels and monolithic, because I haven't worked with a monolithic enough to know. However, I'm spearheading an effort to develop a true uniform driver interface (not corporate crap like UDI) called the Extensible Driver Interface. It's an API for driver coding whose aim is to allow driver development for a stable platform across kernels, thereby taking much of the pain and suffering out of bootstrapping a new operating system into the Real World.

      The framework wraps kernel and driver functionality up into "classes", which can actually be written in any language capable of exporting functions from a shared library (ie: exporting functions compiled to binary in a C-like protocol). A standard set of classes exist for the kernel to supply to the driver, drivers will (RSN) be able to implement one of a standard set of classes representing driver types, and either kernel or driver can expose any other class they like. This means that non-standard functionality can be added or required of any kernel or driver as long as standard functionality is exposed, freeing OS and driver developers to code what they damn well want to.

      Note that this is a pure API, it doesn't care what kind of environment drivers run in. It only cares that the correct function calls are accessible, so it can be used under a micro- or macro- kernel.

      The most recent tarball of headers and documentation is located at EDI tarball, and the next revision (coming soon, when I clean up the example driver) includes easier communication (via classes rather than serialized streams) and an toy example driver written in C++.

      I can be contacted about the project (to give me advice, suggestions, flames, etc) in #edi on WyldRyde, or at the email address listed for my Slashdot account (eligottlieb@gmail.com). Any constructive criticism, or even criticism bordering on flame that still makes a point, is very welcome. Please, please, PLEASE respond with some kind of idea(s) and/or code.

      [/SHAMELESS PLUG]

    14. Re:Whatever... by Chandon+Seldon · · Score: 1

      There would be a stable interface, which would make people complain less about binary drivers not working.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    15. Re:Whatever... by iggymanz · · Score: 1

      if that driver is running your only disk drive or only drive array, do you really care when it crashes whether it was running in userspace or kernelspace

    16. Re:Whatever... by SmokedS · · Score: 1

      That's exactly the point. You do not allow proprietary stuff into the kernel. The drivers live in userspace. As such they cannot crash your kernel.

      Imagine your nvidia driver crashing, and all that happens is that the screen goes blank for a second as the reincarnation server restarts your nvidia driver. KDE never even knows what happens. All your programs are still running just fine. With a monolithic kernel you would almost certainly be swearing over your lost work as you reach for the reset button to restart your crashed/hung machine.

    17. Re:Whatever... by SmokedS · · Score: 2, Informative

      I would most definitely care. From the minix site:

      "A special process, called the reincarnation server, periodically pings each device driver. If the driver dies or fails to respond correctly to pings, the reincarnation server automatically replaces it by a fresh copy. The detection and replacement of nonfunctioning drivers is automatic, without any user action required. This feature does not work for disk drivers at present, but in the next release the system will be able to recover even disk drivers, which will be shadowed in RAM. Driver recovery does not affect running processes."

      Sure, if the actual disk is broken this will not help, but for all the cases where the driver rather than the hardware is at fault this would be a godsend.

    18. Re:Whatever... by DragonWriter · · Score: 1

      Yeah, it would be cleaner in one sense, though that's outside the controller of the OS developer. An OS that relies on everyone else doing things in the most helpful possible manner isn't going anywhere, unless it already has a monopoly and can thus dictate the behavior of other manufacturers. Or unless the OS vendor also controls enough hardware, etc., vendors to not only make an OS that demands "good behavior", but can also supply enough conforming hardware, etc., to make the OS viable without outside help and thus give other manufacturers a reason to jump on the bandwagon. OS's need to be designed for the real world if they want to be more than interesting toys for a handful of dedicated hobbyists.

    19. Re:Whatever... by SmokedS · · Score: 1

      "And that's different from modules... how?"

      In that when the experimental network driver, that you use for your brand new laptop, encounters that obscure bug (that crashes the driver once for every 50MB of data transfered) you wont even notice unless you're running a realtime bandwidth monitoring program. The reincarnation server will transparently restart your network driver.

    20. Re:Whatever... by vtcodger · · Score: 1
      ***Linux is very reliable for me, even on newer hardware with a bleeding edge kernel.***

      You're dead right of course. The Linux kernel is more than good enough for common desktop usage, and I don't see anything that Tannenbaum has written that indicates that he wouldn't agree.

      Tannenbaum appears to be more interested in the OS that you might want to use in your air traffic control system, ATM, or the control system for your neighborhood nuclear power plant. There, he may well be right in that Microkernels used optimally might produce more reliable systems than macrokernels.

      Much as I admire both Tannenbaum and Torvalds, and acknowledging that both are far smarter than I am, I have doubts that interrupt driven, message passing is the right architecture for high reliability systems. Every attempt that I saw back in the 1960s-1980s to do a real time system based on that architecture -- and I've seen a number -- has been pretty shakey. As far as I can see, the architecture doesn't permit you to build such that there is a guarantee that critical functions will run with a known frequency (or indeed, ever). You can use watchdog timers to trap functions that aren't getting run often enough, but trying to fix the system based on timers usually results in the timing problems moving someplace else. Timers seem mostly to be the digital equivalent of duct tape.

      Anyway, I suspect that there are both microkernels and macrokernels in all our futures. But I don't see all that much need for improved reliability on the desktop. As long as the system doesn't crash more often than maybe once or twice a month, most of us can live with it. Even Windows 95 can run that well if you load enough patches.

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    21. Re:Whatever... by xenocide2 · · Score: 1

      Of course, all the drivers in MINIX2 are built into the kernel, and user programs dont have direct hardware access.

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    22. Re:Whatever... by jadavis · · Score: 1

      Kernel modules have unlimited access to all kernel memory. That means that a bug can corrupt any other part of the kernel, including the buffer cache.

      Userspace drivers run in their own address space. Most likely they will share memory with other processes (including other processes that perform traditional kernel tasks), however this access is much more clearly defined and limited.

      Crashes with userspace drivers can clearly identify the offending driver, and often can restart the driver or somehow recover. Crashes with kernel modules, well, anything can happen. And you have no idea which driver is the culprit.

      In all honesty, it's mostly an accountability thing. Recovery from driver malfunction is tricky. However, if you get a new driver with your new hardware and it keeps crashing on you and informing you of the offending driver, you're going to return the hardware. That means the hardware manufacturers will write better code to avoid that problem. That's the real benefit.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    23. Re:Whatever... by x2A · · Score: 1

      Careful, microkernels are the leading cause of smug... if all that smug combines with the smug from clooney's acceptance speech... disaster!

      --
      The revolution will not be televised... but it will have a page on Wikipedia
    24. Re:Whatever... by x2A · · Score: 1

      Then how do you talk to that, without a driver?

      Also, bugs will need firmware updates then, which by their nature are far riskier than driver updates.

      --
      The revolution will not be televised... but it will have a page on Wikipedia
    25. Re:Whatever... by x2A · · Score: 1

      "And allowing proprietary stuff into the kernel solves *what* problems exactly?"

      Slow frame rate with opengl/games?

      Seriously, unless you've developed the driver -yourself-, what difference does it make whether it's proprietary or not?

      My nvidia drivers have never let me down, I'm tired of the slashdot attitude of "omg but they could!" just because the source isn't available to jerk off over.

      --
      The revolution will not be televised... but it will have a page on Wikipedia
    26. Re:Whatever... by Anonymous Coward · · Score: 0

      real-time kernels == guaranteed response time. Look it up.

    27. Re:Whatever... by gbjbaanb · · Score: 1

      yes, but those modules are loaded into the kernel as needed, and if one of them fails, it will bring the kernel down with it. All you've done is reduce the startup time of the monolithic Linux kernel by removing stuff you don't want in favour of loading it on-demand.

    28. Re:Whatever... by iggymanz · · Score: 1

      a godsend to have a buggy failing driver continue to risk and/or corrupt my data? no thanks.

    29. Re:Whatever... by rubycodez · · Score: 1

      A buggy disk driver needs to be replaced with a good one, not restarted repeatedly. And what happens to the data the driver was going to write? Gone, corrupt file? More non-realtime kernel Ivory tower BS meets reality.

    30. Re:Whatever... by SmokedS · · Score: 1

      Is there an echo here? Nah, must just be me.
      Anyhow. If you had RTA you'd know that microkernels are used for realtime systems. Feel free not to like it etc.

      As to what happens to data about to be written the Minix site has this to say on restarting disk drivers:
      "This feature does not work for disk drivers at present, but in the next release the system will be able to recover even disk drivers, which will be shadowed in RAM. Driver recovery does not affect running processes."
      Shadow in ram. Seems reasonably clever to me. With the speed of drives vs RAM I'd not expect to se that cost noticably more than the extra RAM usage.

      So, back on track:
      On a monolithic kernel: Disk driver goes down perhaps causing corruption. Reboot. All work in progress lost. Driver failure not logged so it can be debugged.

      On a microkernel: Disk driver goes down perhaps causing corruption, disk driver restarted, the possible corruption just might have been fixed, error logged. Red lights blinking all over the place(since you want such warnings) notifying you that a driver failed. All work retained.

      How is the monolithic scenario better here? I fail to see it.
      Perhaps I'll be running a microkernel some day, seems a kool idea to me.

    31. Re:Whatever... by rubycodez · · Score: 1

      yes, there's some ok small microkernel embedded realtime OS out there, but I was refering to the advocates of general purpose OS microkernel, lotsa theory but no good real implementations yet.

  18. Re:Still Debating by Perl-Pusher · · Score: 1

    Which is why OS X is terrible at threading.

  19. Only one way to settle this! by Treeluvinhippy · · Score: 0, Offtopic

    Tanenbaum vs. Torvalds fight to the death in the THUNDERDOME!

    Two men enter! One man leaves!

    Except for Master Blaster. But that midget was really more of an accessory so I guess it's still within the rules. Master was the brains of the Master Blaster combo, so I guess he acted similar to a math co-processor for a i386.

    So in future dystopian societies, you can purchase a midget to upgrade your Gladiator? That dosen't seem like such a good deal now does it?

    I mean why a midget? It's not like your gladiator needs a brain. Wouldn't the money be better spent on a flamethower or armor? Why a frickin' midget to ride around on his back? Maybe if he was being used for Fastball Specials I can see the point.

    Anyways, back on topic... now what was it again?

    --
    >
    1. Re:Only one way to settle this! by waferhead · · Score: 1

      I, for one, welcome our new midget ovelords!

      (I know the parrent was off-topic, but c'mon, it was sort of funny!)

    2. Re:Only one way to settle this! by Treeluvinhippy · · Score: 2, Insightful

      Nobody watches the third one.

      --
      >
  20. Debate on. Microkernels will win in the end. by HornWumpus · · Score: 2, Interesting
    Microkernels were too performance expensive in the CPU cycle starved 80s. The extra context switching overhead was unacceptable. (e.g. video performance of NT 3.51. IIRC 4 context switches per pixel drawn.)

    In the CPU cycle flush 00s the debate is just different. Less code running at ring0 means less code that can cause a kernel panic, blue screen or whatever they call it in OSX.

    A significant part of the market is OK running Java. The comparitivly small performance cost and high stability payoff of a microkernel makes the tradeoff a no-brainer.

    --
    John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
  21. Minix 3 screenshots by mustafap · · Score: 4, Informative


    I almost died of boredom looking for them. Here's the link, for the lazy:

    http://www.minix3.org/doc/screenies.html

    --
    Open Source Drum Kit, LPLC deve board - mjhdesigns.com
    1. Re:Minix 3 screenshots by Aladrin · · Score: 1

      Is it just me, or is that an empty page? Or maybe I missed the joke...

      --
      "If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
    2. Re:Minix 3 screenshots by mustafap · · Score: 1

      It's just you. The link works for me ( on another PC )

      Mike.

      --
      Open Source Drum Kit, LPLC deve board - mjhdesigns.com
    3. Re:Minix 3 screenshots by Skuld-Chan · · Score: 1

      Its like Unix in 1989 :)

    4. Re:Minix 3 screenshots by mustafap · · Score: 1

      >Its like Unix in 1989 :)

      Except that it is very reliable!

      Man, that's really dull, isn't it? :o)

      --
      Open Source Drum Kit, LPLC deve board - mjhdesigns.com
    5. Re:Minix 3 screenshots by Anonymous Coward · · Score: 0

      Minix seems to look an awful lot like Amsterdam.

    6. Re:Minix 3 screenshots by drix · · Score: 1

      I could swear those are from when I installed Slackware in 1995. Long live TWM.

      --

      I think there is a world market for maybe five personal web logs.
    7. Re:Minix 3 screenshots by basneder · · Score: 0

      I almost died of boredom looking for them

      Well, i liked the monkey! :)

      But i dont think you can judge a OS based on the pretty pictures (or lack of).

    8. Re:Minix 3 screenshots by hey · · Score: 1

      Just port KDE or Gnome to it.

    9. Re:Minix 3 screenshots by ShecoDu · · Score: 1

      1995 called, they want their screenshots back.

      just kidding just kidding

    10. Re:Minix 3 screenshots by Anonymous Coward · · Score: 0

      I feel a need to point out that all of these "screenshots" are taken with an actual camera of the monitor, you can see the moire artifacts etc. Hilarious! They can't even get screenshots without a physical camera.

  22. Re:Still Debating by Anonymous Coward · · Score: 0

    I could be wrong, but I suspect that it was almost chance that decided that Linux rather than Minix became the OSS bandwagon OS. I think the the world was ready for a free OS at that time, and if Tanenbaum had released Minix under a license that allowed others to build on it instead of a more restrictive license, then Tanenbaum would be in the hero's position that Torvalds has been placed in. And we might all be running on microkernels now. Both of them produced viable OS kernels at a similar time, and only the choice of license applied to them decided which would see widespread adoption. And I'm sure if Torvalds had also chosen a restrictive license, someone else would have taken his place pretty soon after. Linus just hit the magic combo of right time and right license.

    I would rather like to see what Minix would have grown into it things had gone the other way.

  23. All I want to know... by Spy+der+Mann · · Score: 2, Insightful

    is if we can make a functional distro (i.e. Ubuntu) on top of Minix 3. Is it possible? What must be changed?

    1. Re:All I want to know... by ezzzD55J · · Score: 2, Informative
      Yes it is, and I think it is a very good idea.

      Minix will need some more features though, my guess is paging and threading are the major sticking points. Probably more system calls too but VM and threading are more work.

      Being able to 'leverage' the enormous existing amount of software once Minix matures a bit would let Minix 'leapfrog' its 'competition'.

      Disclaimer: I am involved with the Minix project.

  24. Under what conditions? by harmonica · · Score: 1

    It seems that a real world challenge would put an "end" to this story.

    How? Those who value performance over security will prefer the monolithic kernel approach, those who value security over performance will go with the micro kernel. In a nutshell, how slow is too slow?

    1. Re:Under what conditions? by VincenzoRomano · · Score: 1

      A real challenge means that the "someone" (the community) should define the minimum requirements to be matched.
      For reliability, effectiveness and efficiency.
      Maybe one can even define a way to measure these features, so the winner would be declared by measurement!

      --
      Maybe Computers will never be as intelligent as Humans.
      For sure they won't ever become so stupid. [VR-1988]
    2. Re:Under what conditions? by jedidiah · · Score: 1

      No. People have stuff they want done and a certain amount they are willing to spend to get it done. This applies equally to banks and grannies as it does to enterprise OS and application vendors. This isn't just Tannenbaum vs. Linus but Tannenbaum vs. most of the rest of the planet.

              That includes Cray (or whatever is left of it), SGI, IBM, Sun & HP.

      --
      A Pirate and a Puritan look the same on a balance sheet.
    3. Re:Under what conditions? by harmonica · · Score: 1

      But what does that have to do with a kernel competition and whether that makes sense?

    4. Re:Under what conditions? by jedidiah · · Score: 1

      The difference between engineering and mathematics.

      --
      A Pirate and a Puritan look the same on a balance sheet.
  25. Re:Still Debating by Arandir · · Score: 3, Interesting

    That's a very good point, and one that people keep forgetting. If microkernels are so great, where are they? Let's take a look at notable microkernels:

    * QNX Neutrino. This is the most successful microkernel ever. It deserves all the praise it gets. Yet it is still a niche product.

    * Hurd. After twenty years we're still waiting for a halfway stable release. Hurd development is almost an argument *for* monolithic kernels!

    *Minix. This is still an educational kernel. A teaching tool. It remains unsuitable for "real world" use.

    * Mach. People claim OSX is a microkernel since it is built on top of Mach. But that ignores the real world fact that OSX is monolithic. People have been misled by the name.

    * NT. This is NOT a microkernel! You don't believe anything else Microsoft says, so why do you believe this fairy tale?

    In short, QNX is the only successful real world Microkernel. Linus happens to be right on this one: microkernels add too much complexity to the software. From ten thousand feet the high level architecture looks simple and elegant, but the low level implementation is a fraught with difficulties and hidden pitfalls.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  26. Apples and Oranges by Anonymous Coward · · Score: 0

    I doubt I'll ever see anything but a monolithic kernel on my desktops.

    Too bad you are denying yourself the pleasure of using Mac OS X...

    Yes, Mac OS X's kernel is a microkernel, and yes, most of it is Mach based, and NO, it is not BSD based (while most of the userland is essentially a copy of BSD 4.2, with some later FreeBSD "contributions', very little of kernel has any *BSD in it).

    Factual overview: http://developer.apple.com/macosx/architecture/ind ex.html

    Fanboy overview: Obsolete Microkernel Dooms Mac OS X to Lag Linux in Performance

    1. Re:Apples and Oranges by Anonymous Coward · · Score: 0
      Yes, Mac OS X's kernel is a microkernel,

      Tanenbaum (the microkernel king) disagrees with you (from the article we're discussing):
      Mac OS X is sort of microkernelish. Inside, it consists of Berkeley UNIX riding on top of a modified version of the Mach microkernel. Since all of it runs in kernel mode (to get that little extra bit of performance) it is not a true microkernel, but Carnegie Mellon University had Berkeley UNIX running on Mach in user space years ago, so it probably could be done again, albeit with a small amount of performance loss, as with L4Linux. Work is underway to port the Apple BSD code (Darwin) to L4 to make it a true microkernel system./blockquote
    2. Re:Apples and Oranges by Anonymous Coward · · Score: 0

      That is correct, it is not a TRUE microkernel (to be pedantic about it). However, things like IOKIT and kext's is what makes it clear OS X does not have a monolithic kernel either.

      Would you call it midi-kernel (as in micro, mini, midi, maxi, etc. ?).

    3. Re:Apples and Oranges by Guy+Harris · · Score: 1
      However, things like IOKIT and kext's is what makes it clear OS X does not have a monolithic kernel either.

      If kexts make XNU not a monolithic kernel, then Solaris, various BSDs, most Linux distributions, and various commercial UNIXes other than Solaris don't have monolithic kernels, either.

      As for IOKit, I'm not sure how it would make XNU not monolithic; what were you thinking of there?

      Would you call it midi-kernel (as in micro, mini, midi, maxi, etc. ?).

      Some call it - and the NT kernel - hybrid kernels, although there are some who debate whether a "hybrid kernel" is sufficiently different from a monolithic kernel to make a difference (see, for example, the thread that inspired Tanenbaum's comments).

      BTW, the term used on the Wikipedia in at least some contexts for kernels that support loadable kernel modules is "monolithic kernel with modules", in case you think loadable kernel modules are sufficient to make a kernel not just a "monolithic kernel".

    4. Re:Apples and Oranges by Anonymous Coward · · Score: 0

      From your LinuxJournal link (thanks):

      Microkernels are mostly discredited now, however, because they have performance problems, and the benefits originally promised are a fantasy.

      What then follows is a painfully ignorant commentary by someone who hasn't got a clue what he's talking about.

      Miles Nordin is a fucking idiot. How does shit like that get published?

    5. Re:Apples and Oranges by FST777 · · Score: 1

      I think they are apples and oranges.

      Correct, but both are fruit. When my doctor tells me to eat more fruit, I must make a choice. Since I don't like oranges, I eat apples.

      Both are kernel-architectures. One is monolithic, the other is a microkernel. Therefore they can and must be compared, since I have to make a choice between them to use as my OS.

      (double boot FreeBSD/Minix3 ATM. Minix3 is not yet functional, lack of drivers)

      --
      Free beer is never free as in speech. Free speech is always free as in beer.
    6. Re:Apples and Oranges by General+Lee's+Peking · · Score: 1

      I don't know a whole lot about kernels so I can only make an intuitive guess here. My guess is that it probably wouldn't be profitable to anyone to extend the QNX RTOS, which is propietary, as a server or desktop OS, so we don't and won't know if it would be better as a server or a desktop OS. As far as I know it isn't QNX who writes the systems for the machines on which QNX RTOS is used. QNX just provides the kernel, libraries, support, etc. So even if it were to be built up as a server or desktop OS, the results would probably depend more on who's building the system rather than on the fact that they're building it on QNX RTOS.

  27. Re:Still Debating by Pope · · Score: 1

    XNU's a weird hybrid mishmash, and I can hardly wait for some real low-level system rewriting to happen to OS X to make it even better.

    --
    It doesn't mean much now, it's built for the future.
  28. Race conditions? by dhasenan · · Score: 1

    If it's shared memory that I pass to the kernel, and I have an application that doesn't parallelize well, then I'm sending pages off to the kernel quite often. That means the kernel uses a lot of memory.

    There are two options: the kernel could combine pages, either physically or logically; or the kernel could leave that page open for writing by the application in question.

    The easiest way would be for each application to have a page or set of pages for sending messages to the kernel; the application would view the space as an eternally long section of write-once memory. When the kernel was done with the beginning of the shared page, the application could start writing to the beginning.

    Also, don't we usually get buffered sockets? That way, I can send a megabyte to another process that's not currently listening, and continue on with my business before it even bothers to read. So we don't really have a problem, except buffer overflows (which are probably realized by overwriting the buffer).

  29. Re:Still Debating by onedobb · · Score: 0

    Well for example if Toyota cars are better then why isn't everyone driving them? It takes a while before it is widely addopted. Linux may be better but it takes a long time before the majority will change to something different. By the way, No I don't own a Toyota nor work for them, I got a Dodge. Also I don't run Linux, I use Windows. I don't deny that Linux may be better than Windows. It's all in personal preference.

  30. Re:Nothing's better than real challenge by aramael · · Score: 1
    Both Tanenbaum and Torvalds can teach a lot in OS design and implentation. If they don't agree, thay have to proof their point. Real proof, I mean, on real hardware.

    Right on. We can't be the only people who are utterly sick of all this talk, talk, talk. You know, what they should do is go away and just implement their idea of a kernel, which they could release with source, and we could all have a look and decide. But it doesn't count unless it runs on real hardware!

    --
    Be true and faithful like your dog; but don't eat vomit like your dog
  31. Re:Still Debating by Anonymous Coward · · Score: 0

    "Look at Windows :-D!"

    I'm looking, I think it beats any Linux distro by a mile personally,

  32. From the horse's mouth by Anonymous Coward · · Score: 0

    "Those who give up liberty for security, deserve neither"
    Thomas Jefferson

    1. Re:From the horse's mouth by Anonymous Coward · · Score: 0

      I believe Benjamin Franklin said this.

  33. There is on "one true solution" by Locke2005 · · Score: 1

    Most real-world operating systems have already traded away the security of a micro-kernel implementation in order to acheive better real-world performance, generally by using a monolithic kernel. I'm sure Linus is well aware that Linux is less robust than it could be (since any driver can crash the kernel) but considers the trade-off worth it to minimize protection ring switches. Micro kernels will never give good performance on x86 machines; come up with a processor where switching context between user mode and kernel mode has zero overhead and then I'll say a microkernel is a great idea.

    --
    I've abandoned my search for truth; now I'm just looking for some useful delusions.
    1. Re:There is on "one true solution" by igb · · Score: 3, Insightful
      What do you mean by ``good performance''? Will an arbitrarily chosen microkernel run on a 3GHz Opteron as fast as, say, SunOS 3.0 on a 15Mhz 68020 with 4MB of RAM? Clearly it will. And that was pretty fast at the time. What performance hit is acceptable in exchange for reliability is a difficult question, but in a lot of spaces a 90% hit would be acceptable, and I can think of applications where a 99% hit would be acceptable if the microkernel did indeed deliver the reliability that's claimed. After all, running at only 25% of the potential performance (and no-one's claiming that's the hit) is only 3 years on Moore's law. Vista's how many years late?

      More to the point, ``because it's faster'' has been the bane of Unix. To see that in stark relief, look at the shambles of NFS being in the kernel. Rather than fix the generic problems of providing a user-space nfsd, we saw a race into the kernel for a cheap my-code-only win, plus the horror of system calls that never return. Look at the vogue for in-kernel windowing systems (Suntools, for example) although X mercifully killed that off. Repeatedly we've seen massively complex and invasive kernel subsystems produced, when a generic solution to the problems that going into the kernel allegedly solves would have benefitted everyone for longer.

      You've got a problem. You decide to solve it with a kernel extension. Now you've got two problems.

      ian

    2. Re:There is on "one true solution" by metamatic · · Score: 1
      Most real-world operating systems have already traded away the security of a micro-kernel implementation in order to acheive better real-world performance, generally by using a monolithic kernel.

      Sounds like premature optimization to me.

      I bet the performance hit from a microkernel is significantly less than the performance hit from the massive code bloat found on a modern Linux system.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    3. Re:There is on "one true solution" by renoX · · Score: 1

      >the reliability that's claimed.

      Note that nobody claims that muk are totally reliable, just a little more reliable: if the driver do bad things with the disk, the PCI bus, the DMA engine, or send a message with incorrect content to another part, then just reloading the driver won't be enough to fix the problem..

    4. Re:There is on "one true solution" by Eli+Gottlieb · · Score: 1

      So why HASN'T somebody engineered a CPU for lower ring-crossing and context-switching times?

  34. hey eveybody by Anonymous Coward · · Score: 5, Funny

    Hello everybody out there using minix -

    I'm doing a (free) operating system (just a hobby, won't be big and
    professional like gnu) for 386(486) AT clones. This has been brewing
    since april, and is starting to get ready. I'd like any feedback on
    things people like/dislike in minix, as my OS resembles it somewhat
    (same physical layout of the file-system (due to practical reasons)
    among other things).

    I've currently ported bash and gcc, and things seem to work.
    This implies that I'll get something practical within a few months, and
    I'd like to know what features most people would want. Any suggestions
    are welcome, but I won't promise I'll implement them :-)

    1. Re:hey eveybody by jenkin+sear · · Score: 1

      To me, the most critical thing in the hobby market right now is the lack of good software courses, books and software itself. Without good software and an owner who understands programming, a hobby computer is wasted. Will quality software be written for the hobby market?

      Almost a year ago, Paul Allen and myself, expecting the hobby market to expand, hired Monte Davidoff and developed Altair BASIC. Though the initial work took only two months, the three of us have spent most of the last year documenting, improving and adding features to BASIC. Now we have 4K, 8K, EXTENDED, ROM and DISK BASIC. The value of the computer time we have used exceeds $40,000.

      The feedback we have gotten from the hundreds of people who say they are using BASIC has all been positive. Two surprising things are apparent, however, 1) Most of these "users" never bought BASIC (less than 10% of all Altair owners have bought BASIC), and 2) The amount of royalties we have received from sales to hobbyists makes the time spent on Altair BASIC worth less than $2 an hour.

      Why is this? As the majority of hobbyists must be aware, most of you steal your software. Hardware must be paid for, but software is something to share. Who cares if the people who worked on it get paid?

      Is this fair? One thing you don't do by stealing software is get back at MITS for some problem you may have had. MITS doesn't make money selling software. The royalty paid to us, the manual, the tape and the overhead make it a break-even operation. One thing you do do is prevent good software from being written. Who can afford to do professional work for nothing? What hobbyist can put 3-man years into programming, finding all bugs, documenting his product and distribute for free? The fact is, no one besides us has invested a lot of money in hobby software. We have written 6800 BASIC, and are writing 8080 APL and 6800 APL, but there is very little incentive to make this software available to hobbyists. Most directly, the thing you do is theft.

      What about the guys who re-sell Altair BASIC, aren't they making money on hobby software? Yes, but those who have been reported to us may lose in the end. They are the ones who give hobbyists a bad name, and should be kicked out of any club meeting they show up at.

      I would appreciate letters from any one who wants to pay up, or has a suggestion or comment. Just write to me at 1180 Alvarado SE, #114, Albuquerque, New Mexico, 87108. Nothing would please me more than being able to hire ten programmers and deluge the hobby market with good software.

      (we report, you decide).

      --
      What a strange bird is the pelican, his beak can hold more than his belly can.
    2. Re:hey eveybody by typical · · Score: 1

      Why do the legwork when the employees at Google are cool enough to do it for you?

      --
      Any program relying on (nontrivial) preemptive multithreading will be buggy.
    3. Re:hey eveybody by Anonymous Coward · · Score: 0

      HAS: What is your personal opinion of the Communist Party, Mr. D_____,
      as to whether or not it is a political party?

      WD: Well, I don't believe it is a political party. I believe it is an
      un-American thing. The thing that I resent the most is that they are
      able to get into these unions, take them over, and represent to the
      world that a group of people that are in my plant, that I know are
      good, one-hundred-percent Americans, are trapped by this group, and
      they are represented to the world as supporting all of those
      ideologies, and it is not so, and I feel that they really ought to be
      smoked out and shown up for what they are, so that all of the good,
      free causes in this country, all the liberalisms that really are
      American, can go out without the taint of communism. That is my
      sincere feeling on it.

      HAS: Do you feel that there is a threat of Communism in the
      motion-picture industry?

      WD: Yes, there is, and there are many reasons why they would like to
      take it over or get in and control it, or disrupt it, but I don't
      think they have gotten very far, and I think the industry is made up
      of good Americans, just like in my plant, good, solid Americans. My
      boys have been fighting it longer than I have. They are trying to get
      out from under it and they will in time if we can just show them up.

      HAS: There are presently pending before this committee two bills
      relative to outlawing the Communist Party. What thoughts have you as
      to whether or not those bills should be passed?

      WD: Well, I don't know as I qualify to speak on that. I feel if the
      thing can be proven un-American that it ought to be outlawed. I think
      in some way it should be done without interfering with the rights of
      the people. I think that will be done. I have that faith. Without
      interfering, I mean, with the good, American rights that we all have
      now, and we want to preserve.

    4. Re:hey eveybody by ipfwadm · · Score: 1

      And, just to bring this thread back on topic, in an August 1983 Usenet survey, Andy Tanenbaum received 3 votes as the "biggest jerk using Usenet".

  35. Obligatory Igno Molnar quote by AcidPenguin9873 · · Score: 4, Funny
    "dont forget that Linux became only possible because 20 years of OS research was carefully studied, analyzed, discussed and thrown away."

    http://www.ussg.iu.edu/hypermail/linux/kernel/9906 .0/0746.html

    He is, of course, referring to all the research in the '80s and '90s on microkernels and IPC-based operating systems.

  36. "Cars don't have reset buttons." My Prius does... by dpbsmith · · Score: 4, Interesting

    I have never experienced the "stalling" problem that affected a very small number of 2004 and 2005 Priuses last year. (OK, hubris correction, make that "not yet..." although my car's VIN is outside the range of VINs supposedly affected).

    It was apparently due to a firmware bug.

    In any case, when it happened, according to personal reports in Prius forums from owners to whom it happened, the result was loss of internal-combustion-engine power, meaning they had about of mile of electric-powered travel to get to a safe stopping location. At that point, if you reset the computer by cycling the "power" button three times, most of the warning lights would go off, and the car would be fine again. Of course many to whom this happened didn't know the three-push trick... and those to whom it did happen usually elected to drive to the nearest Toyota dealer for a "TSB" ("technical service bulletin" = firmware patch).

    These days, conventional-technology cars have a lot of firmware in them, and I'll bet they have a "reset" function available, even if it's not on the dashboard and visible to the driver.

  37. Microkernal Architecture by Anonymous Coward · · Score: 0

    The microkernel architecture proposed by Steinbaum et al and approved by Linus Torvalds has been at odds with the general feeling in the community for some time now. If anyone can find an open source alternative to such a conundrum, though, I and many of us kernel hackers would love to hear it. It is unfortunate that such a chain of events has occured that have allowed Steinbaum to politick his way into Linus' good graces and steer the whole linux microkernel architecture in the wrong direction. A good alternative that I have been looking into is the B-ITREX Linux microkernel architecture. It uses a proposed system of microdrivers and interprocessual IDPT splinelet datagrams to interweave the macrodrivers and the active kernel workframe in the most efficient way possible.

    Does anybody else have an opinion about the B-ITREX MA? There has been a lot of discussion about it on alt.linux.kernel lateley.

  38. Re:Still Debating by Kjella · · Score: 1

    yeah, and in that same vein we'd all have Betamax players.

    Just ignoring such things as costs, it's different if you compare e.g. VHS vs Betamax or HD DVD vs Blu-Ray, because obviously 25GB > 15GB but the costs are different too. Linux is free, whatever Tanenbaum is making I presume is free as well... I think price parity means you normally go with the best technical solution. The only rationality I could find for a "comeback" of the microkernel would be if the size and complexity of the 2.6 kernel is getting out of hand but it makes little sense unless some parts of the kernel could be allowed to be unstable, as long as they didn't bring the house down. What parts would that be?

    --
    Live today, because you never know what tomorrow brings
  39. Re:Still Debating by non · · Score: 1

    there's always these pistachio people, and i've heard you can even run linux on top of it.

    --
    ...vividly encapsulates that post-Watergate/pre-punk/coked-up moment when you could trust no one, least of all yourself.
  40. I'm not sure where this is going? by I_redwolf · · Score: 1

    These arguments have been heard before and i'm not exactly sure where this is going?

    Micro-kernels sound good, they sound real good. Maybe for desktop systems and the like it isn't that bad of an idea. At least it seems that way on the surface, i'm not really sure Tanenbaum has taken a look at all the facets involved in a modern day system or at least he seems to be neglecting the uphill climb. For small embedded environments where speed or device support isn't a main concern. Micro-kernels will excel for their stability but take a look around and that's not reality or what we have today. We have lots of different hardware, lots of different interfaces and to manage that all via objects it'll just be extremely large.

    If you think the linux kernel is big the relevant code for this would be numerous times larger. It just pushes the code from the kernel into userspace and you will definitely need more code to manage and access data structure. So then you'll have to create some sort of server to interact with this piece and that piece of the kernel, to get this piece of information. Linus is right, and has been right on this argument for some time. I'm not of the mindset that it can't be done. If you can isolate your facets and only plan on supporting X number of devices/platforms/chipsets/etc and don't expect any blazing performance. Microkernels are great. Beyond that? With the rate that technology moves, it just becomes a management nightmare.

    I don't understand how things have changed since this original argument was made? Faster hardware makes a difference in this argument, but not a major one. The points that should be addressed are manageability, growth and sharing. None of which have been addressed really besides the darwin kernel; OS X. Which as successful as it is, proves at least one point. The performance is extremely slow. With more memory it's not as bad but still; slow. I'm not even sure why Linus responded in the first place.

    1. Re:I'm not sure where this is going? by Miniluv · · Score: 4, Insightful

      You would be one of those uninformed pontificators Andy so eloquently railed against.

      "For small embedded environments where speed or device support isn't a main concern. Micro-kernels will excel for their stability but take a look around and that's not reality or what we have today. We have lots of different hardware, lots of different interfaces and to manage that all via objects it'll just be extremely large."

      And none of that has anything to do with monolithic versus microkernel, except perhaps tangentially. Microkernels do not ask each device driver to be a server all its own with zero code reuse, they use generic servers to wrap drivers for specific hardware while still isolating them from kernel space. This means there's no functional difference to the driver programmer from a monolithic to a microkernel architecture, either way you look at the driver interface and write the necessary code.

      "If you think the linux kernel is big the relevant code for this would be numerous times larger. It just pushes the code from the kernel into userspace and you will definitely need more code to manage and access data structure"

      Why do you suddenly need more code to the same thing? Andy's point is that when you stop sharing data structures, and instead start passing messages from one discrete server to another through well defined interfaces you reduce the amount of complexity (and therefor code) involved in protecting the coherency of those data structures. You will end up with more interfaces, but thats not necessarily a bad thing. I'd gladly trade all of the critical section protection logic for some nice interface logic. Especially since making the latter work reliably is a hell of a lot easier to do, and gives each subsystem the freedom to rework their internals without requiring me to lift a finger.

      "If you can isolate your facets and only plan on supporting X number of devices/platforms/chipsets/etc and don't expect any blazing performance. Microkernels are great. Beyond that? With the rate that technology moves, it just becomes a management nightmare."

      There's still no credible evidence to suggest that microkernel performance is that horrible, especially with modern clock speeds. Aside from gaming and large scientific compute clusters, very little being done today on a computer uses any significant measure of their speed. We've already covered how you're totally off base on device support (i.e. its orthogonal to the entire debate), and you throw "management nightmare" out there without bothering to define it, let alone defend it.

      Large unix systems are already complex as hell to manage. A lot of that complexity is "hidden" in the kernel, which while fine for desktop users is a big pain for system administrators, and would be exposed for manageability in a microkernel setup.

      As for OS X and its performance, its not horribly slow. Especially considering that your complaint almost certainly centers around PPC performance not x86, where it was hampered by lower clock speeds that were not counterbalanced by better IPC in any significant fashion. OS X's memory hunger has little to do with the kernel and lots to do with their operating environment, and all of the gee whiz graphical functionality that OS X brings along with it.

      Ultimately though, OSX performance is a success story because on a G3 700mhz with 256M of ram its actually useable. Have you tried running Windows XP on a similar setup? Tried turning all of the eye candy on? Bet you didn't like the way it performed either.

    2. Re:I'm not sure where this is going? by I_redwolf · · Score: 1

      And none of that has anything to do with monolithic versus microkernel, except perhaps tangentially. Microkernels do not ask each device driver to be a server all its own with zero code reuse, they use generic servers to wrap drivers for specific hardware while still isolating them from kernel space. This means there's no functional difference to the driver programmer from a monolithic to a microkernel architecture, either way you look at the driver interface and write the necessary code.

      You claim i'm an uninformed pontificator yet you argue this point.

      Why do you suddenly need more code to the same thing? Andy's point is that when you stop sharing data structures, and instead start passing messages from one discrete server to another through well defined interfaces you reduce the amount of complexity (and therefor code) involved in protecting the coherency of those data structures. You will end up with more interfaces, but thats not necessarily a bad thing. I'd gladly trade all of the critical section protection logic for some nice interface logic. Especially since making the latter work reliably is a hell of a lot easier to do, and gives each subsystem the freedom to rework their internals without requiring me to lift a finger.

      You claim i'm an uninformed pontificator yet you argue this point as well? Good luck; let me know how that works for you. When you get that simple interface logic and everything "working reliably as hell".

      There's still no credible evidence to suggest that microkernel performance is that horrible, especially with modern clock speeds. Aside from gaming and large scientific compute clusters, very little being done today on a computer uses any significant measure of their speed. We've already covered how you're totally off base on device support (i.e. its orthogonal to the entire debate), and you throw "management nightmare" out there without bothering to define it, let alone defend it.

      There's no credible evidence? The only credible evidence that exists thus far proves that microkernel performance is slower to monolithic kernels; Hurd, Darwin etc. Is device support now orthogonal to the entire debate? Is the whole debate now the specific holy grail algorithm to manage all of the communication that needs to take place? All the access to data structure, shared memory? Again, i'm pontificating?

      Large unix systems are already complex as hell to manage. A lot of that complexity is "hidden" in the kernel, which while fine for desktop users is a big pain for system administrators, and would be exposed for manageability in a microkernel setup.

      You're seriously smoking some good crack. As much as large unix systems are complex as hell to manage. You think a microkernel design will make them easier to manage? This is some really good crack here. 9 times out of 10 on large cluster systems it isn't the kernel that is the problem, 9 times out of 10 it is management. 9 times out of 10 you WANT monolithic in a large cluster. No wonder the drug cartels are doing so well.

      As for OS X and its performance, its not horribly slow. Especially considering that your complaint almost certainly centers around PPC performance not x86, where it was hampered by lower clock speeds that were not counterbalanced by better IPC in any significant fashion. OS X's memory hunger has little to do with the kernel and lots to do with their operating environment, and all of the gee whiz graphical functionality that OS X brings along with it.

      ?? I said load programs into mem. Please re-read what I wrote.. Just put the crack pipe down and re-read it.

      Ultimately though, OSX performance is a success story because on a G3 700mhz with 256M of ram its actually useable. Have you tried running Windows XP on a similar setup? Tried turning all of the eye candy on? Bet you didn't like the way it performed either.

      What does this has to do with the kernel?

    3. Re:I'm not sure where this is going? by Miniluv · · Score: 1

      "You claim i'm an uninformed pontificator yet you argue this point as well? Good luck; let me know how that works for you. When you get that simple interface logic and everything "working reliably as hell"."

      I was giving you the benefit of the doubt. I'm guessing that since you decided to block quote large paragraphs of detailed argument and instead change the subject you have no response. As for the interface logic, I never said simple. I even admitted it'll be more logic (and thus more complexity). However critical sections are HARD, interfaces aren't as hard. If I have roughly the same amount of each, I'll take the less hard stuff instead of the more hard stuff.

      "As much as large unix systems are complex as hell to manage. You think a microkernel design will make them easier to manage? This is some really good crack here. 9 times out of 10 on large cluster systems it isn't the kernel that is the problem, 9 times out of 10 it is management. 9 times out of 10 you WANT monolithic in a large cluster. No wonder the drug cartels are doing so well."

      Large clusters aren't the debate. We're talking large unix systems, i.e. single large systems. Managing in kernel data and processes is a lot harder than stuff running in userspace with a defined interface. We're talking about the difference between spinlocks/semaphores/mutexes/futexes/etc and a messaging interface.

      "What does this has to do with the kernel?"

      About as much as anything you said about OSX. Which wouldn't have been relevant anyhow since OSX isn't a microkernel, and only marginally behaves like one.

    4. Re:I'm not sure where this is going? by Anonymous Coward · · Score: 0

      Ultimately though, OSX performance is a success story because on a G3 700mhz with 256M of ram its actually useable. Have you tried running Windows XP on a similar setup? Tried turning all of the eye candy on? Bet you didn't like the way it performed either.

      Actually, yea I have run WinXP on those specs. I've run it on much less, actually. 233Mhz P2, 64M RAM is about the cut off point.

      700Mhz and 256M of RAM is more than enough power and memory for an XP machine; unless you need 3 instances of Visual Studio and 10 Firefox tabs open 24/7.

    5. Re:I'm not sure where this is going? by I_redwolf · · Score: 1

      I was giving you the benefit of the doubt. I'm guessing that since you decided to block quote large paragraphs of detailed argument and instead change the subject you have no response. As for the interface logic, I never said simple. I even admitted it'll be more logic (and thus more complexity). However critical sections are HARD, interfaces aren't as hard. If I have roughly the same amount of each, I'll take the less hard stuff instead of the more hard stuff.

      True to form, said obviously by someone who has either never attempted to write such an interface or thinks that because there is more complexity it is conducive to a lesser amount of code. Anyone who has written such an interface will tell you that the API in and of itself is a difficult thing to get right far less doing all of this in some magic codeball and having everything interface to that through the holy grail api.

      Large clusters aren't the debate. We're talking large unix systems, i.e. single large systems. Managing in kernel data and processes is a lot harder than stuff running in userspace with a defined interface. We're talking about the difference between spinlocks/semaphores/mutexes/futexes/etc and a messaging interface.

      True to form, said obviously by someone who thinks this will somehow be magically abstracted into the kernel by some sort of magical code above that is inertly complex but smaller and will allow easier to write interfaces so that people don't have to worry about deadlocking and all sorts of other problems inherent with writing threaded parallel code and or in general worrying about any of that stuff.

      Listen, good luck. You're the same person Linus and everyone else who does this for a living talks about. You negate real world examples of failure, all the microkernel designs currently implemented have failed to compete on the level of monolithic kernels. Why do you persist with these arguments without taking steps to prove them is the question? Have you and Tanenbaum and all the other Microkernel is the bestest learned absolutely nothing over the past 20 years? At the very least take all of the opencode that exists and make a microkernel that competes. Please don't say Minix 3; please.

      About as much as anything you said about OSX. Which wouldn't have been relevant anyhow since OSX isn't a microkernel, and only marginally behaves like one.

      That's fair but that's all I had as a relevant data-point; or at least close to one when it comes to the largely deployed likish microkernel. It's hard to compare or prove an idea or theory when such a kernel doesn't exist at large in comparison to say the numerous monolithic kernels currently in operation. That said, point taken.

    6. Re:I'm not sure where this is going? by Anonymous Coward · · Score: 0

      Ultimately though, OSX performance is a success story because on a G3 700mhz with 256M of ram its actually useable. Have you tried running Windows XP on a similar setup? Tried turning all of the eye candy on? Bet you didn't like the way it performed either.

      Amen! I tried installing Windows XP on my 700MHz G3, and it wouldn't even start. I bet if I could figure out how to turn on they eye candy, it'd actually go *backwards* in time.

    7. Re:I'm not sure where this is going? by drsmithy · · Score: 1
      Ultimately though, OSX performance is a success story because on a G3 700mhz with 256M of ram its actually useable. Have you tried running Windows XP on a similar setup? Tried turning all of the eye candy on? Bet you didn't like the way it performed either.

      Windows is noticably more responsive on my 550Mhz P3 laptop than my 1Ghz G4 iBook (at least until it starts paging). While I prefer my iBook on the road because it has much better battery life, I prefer to use the old Compaq when there's a powerpoint nearby (unless I'm doing something which is going to be memory and/or CPU intensive, since the iBook has twice the RAM (768 vs 384) and more than twice the processing power).

      However, the real problem is that OS X remains sluggish even on much faster machines (I find my mum's G5 iMac too slow to use with anything more than a couple of apps running) and really needs a monster machine (dual G5+) to get even close to "fast".

      Windows is *much* nicer to older machines than OS X is and also scales up in performance much better.

      OS X *is* "horribly slow". Every benchmark shows this and a few days of serious interactive use will also demonstrate it. There are a lot of nice things about OS X, but performance - especially interactive responsiveness - and multitasking are not high on the list. I also used to think it was simply because of the poor old G4 processor (particularly the memory bandwidth), but when the G5s came out and OS X was *still* chunky to use, that theory was shot.

    8. Re:I'm not sure where this is going? by Miniluv · · Score: 1

      I'm not sure what you consider slow, but using a dual 2.4G desktop at work and going to a 700mhz G3 iBook at home I don't notice a serious performance difference. Or at least I didn't until my hard drive started dying on the iBook.

      While numerical benchmarks are great, and they do illustrate the objective performance differences, they aren't necessarily a true measure of reality. Performance to a user is entirely subjective.

  41. I should be working... by StevenMaurer · · Score: 4, Interesting

    ...so I can't spend a lot of time in dicussing this, but I always that the main benefit of micro-kernels is completely wasted unless you actually have utilities that can work in partially-functioning environments. What good is it to be able to continue to run a kernel even with your SCSI drive disabled, if all your software to fix the problem is on the SCSI drive?

    Now in theory I could see a high-availability microkernel being a good, less expensive alternative, to a classic mainframe environment, especially if you had a well written auto-healing system built in as a default. But that would require a lot of work outside the kernel that just isn't being done right now. And until it is, micro-kernels don't have anything more to offer than monolithic kernerls.

    To put it in API terms - it doesn't matter very much whether your library correctly returns an error code for every possible circumstance, when most user level code doesn't bother to check it (or just exits immediately on even addressable errors).

    1. Re:I should be working... by Miniluv · · Score: 2, Insightful

      Its a chicken/egg situation. Until the underlying mechanisms needed for self-healing are there, we won't get self-healing systems. Until the user space code for self-healing is there, nobody thinks its worthwhile to support self-healing mechanisms. Thankfully a few folks realize that if they build it, people will come.

      Also, your API metaphor is a little bad. While you're right about the end result, saying that this invalidates the utility of the API is wrong imho. The advantage of having the API remains, because you can always go FIX the userland code. Take away the good API and you become well and truly screwed.

    2. Re:I should be working... by LWATCDR · · Score: 1

      "...so I can't spend a lot of time in discussing this, but I always that the main benefit of micro-kernels is completely wasted unless you actually have utilities that can work in partially-functioning environments. What good is it to be able to continue to run a kernel even with your SCSI drive disabled, if all your software to fix the problem is on the SCSI drive?"
      Your right in that case you may not have a chance to recover. How about a different failure. Say the driver for you graphics card segfaulted? The OS could recover by just reloading the graphics card driver. Same thing for a serial port or the LAN card. You could possibly even recover from a RAID controller driver failure if that wasn't the boot drive.

      Another option is that all the code blocks of a device driver are marked as read only i.e. no self modifying code. If the said code did segfault for what ever reason you could then just clear the task's memory pages and reset the program pointer to the start. That would be the same as reloading the task from disk.
      This would allow you to sort of reboot different parts of the OS without rebooting the entire OS.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    3. Re:I should be working... by moocat2 · · Score: 1

      What good is it to be able to continue to run a kernel even with your SCSI drive disabled, if all your software to fix the problem is on the SCSI drive?

      One benefit is that you can restart the SCSI driver without rebooting the entire machine. For now, this simply means quicker restarts, but once software can be written to make use of this knowledge, software can be taken to higher level.

      Consider a server for a network file system. If you need to reboot the machine just to restart the disk subsystem, you lose all network communication. Client software can not know what the problem is and cannot react to it in anyway beyond the most basic fashion (and furthermore, things will be nice and slow while those network packets are timing out).

      But with a microkernel OS and a server that is aware of this, the protocol can be designed to let the client know what is going on. The server can even choose to accept the data across the network with the expectation that the disk subsystem will come back up within a short period of time.

    4. Re:I should be working... by Anonymous Coward · · Score: 0

      What good is it to be able to continue to run a kernel even with your SCSI drive disabled, if all your software to fix the problem is on the SCSI drive?

      So you can land the fucking plane first and then fix the problem.
    5. Re:I should be working... by Anonymous Coward · · Score: 0

      I always that the main benefit of micro-kernels is completely wasted unless you actually have utilities that can work in partially-functioning environments.

      Replace "micro-kernels" with "shared libraries", and you have a pro-static-libraries argument.

      What good is it to be able to continue to run a kernel even with your SCSI drive disabled, if all your software to fix the problem is on the SCSI drive?

      That's an extreme case. Imagine it in terms of "libraries": if your SCSI driver is just another process, you can upgrade it at any time. Right now, the way you "upgrade" is to wait for Linus to declare the whole kernel ready for a new release (like 2.6.9), and shut everything down, and then restart with a whole new system.

      In many early versions of Linux 2.6, Firewire was completely broken. I had to choose between having, say, accelerated OpenGL or working Firewire, and just because Linus says that having Firewire as part of One Big Kernel is a good idea.

    6. Re:I should be working... by Anonymous Coward · · Score: 0

      I wonder if it is really necessary to have a microkernel to implement these sorts of things. Nooks and "shadow drivers" seem to be much the same thing, and at a brief glance don't appear to require anything that microkernels can offer over monolithic kernels.

      More generally, the choice seems to come down to this: do you strictly enforce data hiding between kernel processes at a performance hit (microkernels), or do you write flexible interfaces in the first place so that code written to the interface standards will have the best possible performance and at the same time will not have code dependencies on other processes? I prefer the latter.

  42. Re:Still Debating by dhasenan · · Score: 1

    On the other hand, Tanenbaum admits that you need more complex algorithms with microkernels. You might have ended up with a smaller pool of kernel hackers, retarding the progress of Linux.

    So let's create another world and train it up the same way, but have Minix be GPL'd from the start. Then we can say how it would have turned out.

  43. Speed vs Reincarnation by logicnazi · · Score: 1

    There is undoubtedly much that traditional monolithic kernel design can learn from microkernel development practices (and probably already has learned much). Much of the modular nature of microkernel development and the *logical* separation of different components can help manage the complexity of building a kernel.

    However, the real issue comes down to whether it makes sense to actually compile this down to a microkernel or leave it as a monolithic kernel. In other words should we enforce the separation between components of the OS by running them in different addresses spaces/user mode.

    Tannenbaum is a smart guy and thankfully he doesn't try and argue the stupid point that most uKernel people try and argue about more modular development. You can have just as modular development even if you end up running all the servers in kernel address space. Ultimately this means that a monolithic kernel can take advantage of all the development practices that make uKernel development nice (or disregard them when they cause a performance hit) and run faster because it won't need to switch between address spaces as much. Nicely recent chip features (SYSENTER SYSEXIT) and a focus on this problem has reduced the performance hit considerably in recent years.

    The only real benefit that a true microkernel provides (as opposed to things like OS X that are designed like a uKernel then run monolithically) is reincarnation of kernel processes. Tannenbaum is right that if one's goal is to build a computer that just works like a TV and never fully crashes the uKernel has some strong advantages. So for things like media centers, embedded systems or any other incarnation of computer as consumer device (as opposed to general purpose computer) I think the uKernel has strong advantages.

    The question is whether these advantages are as important in a standard computer. Yes, they would be a benefit if implemented right (so the filesystem isn't, for instance, restarted in a way that would cause data corruption) but not that much of a benefit. I mean OS X (which isn't a true uKernel) pretty much never crashes for me and just needs to be restarted for updates once every couple of months. Sure a uKernel might never need to be restarted (though if we really cared we could make a monolithic kernel that needs to be restarted less frequently) but this just isn't worth even a small performance hit for me.

    Ultimately I suspect we will see uKernels win in the embedded space. In the computer space I suspect we will see hybrid type designs like OS X which co-opt the design practices of uKernels but stick lots of things in the kernel address space just because not ever rebooting just isn't that important to most people.

    --

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

  44. Re:"Cars don't have reset buttons." My Prius does. by Miniluv · · Score: 1

    Andy's point is that the button isn't on the dash or visible to the user, simply because the vast majority of drivers will never need to push it. The same, sadly, cannot be said about Windows, Linux or MacOS X.

  45. Re:Still Debating by jedidiah · · Score: 1

    Perhaps someone should tell you about those 1000 cpu machines from SGI, the 100 cpu machines from Sun Microsystems, the 64 cpu machines from IBM and the 100+ machine database clusters from Oracle.

    All of this has been achieved in the conspicuous ABSENCE of microkernels. If Andy's ramblings were relevant in practice, you would expect at least one of the serious big machine server vendors to have taken them up. The fact that Dr. Tannenbaum is pretty much stuck pointing to cablemodem routers and cellphones pretty much proves Linus's original point.

    --
    A Pirate and a Puritan look the same on a balance sheet.
  46. Re:Still Debating by cnettel · · Score: 1

    However, the micro kernels are slow in ways that are among the bottlenecks still on the machines of today, like requiring significant memory copies (or very flexible page mapping), context switches and so on. If an everyday and "mundane" task like copying files to an iPod (or, worse, another harddrive) is slowed down significantly, the debate gets far less theoretical.

  47. Re:Still Debating by zippthorne · · Score: 1

    But Betamax WAS inferior to VHS.

    http://technology.guardian.co.uk/online/comment/st ory/0,12449,881780,00.html

    In all the ways that mattered.

    Good technology isn't something that "could work very elegantly in a few years, but is squirrely right now." It's "works well right now" and sometimes "works well right now, and can be upgraded to work even better in the future."

    VHS won because it solved the problem people had.

    --
    Can you be Even More Awesome?!
  48. Examples prove Linus' point by nonmaskable · · Score: 2, Interesting

    Tanenbaum as always makes a good conceptual case for his perspective, but as time has gone by his examples increasingly prove Linus' point.

    Except for QNX the software he cites are either vaporware (Coyotos, HURD), esoteric research toys (L4Linux, Singularity), or brutally violate the microkernel concept (MacOSX, Symbian).

    Even his best example, QNX is a very niche product and hard to compare to something like Linux.

    1. Re:Examples prove Linus' point by Miniluv · · Score: 3, Insightful

      Uhm, I'm pretty sure niche doesn't mean exceptionally widely deployed.

      QNX is everywhere, you just don't realize it. ATMs run it, lots of medical equipment runs it, lots of other embedded apps that you don't even think of run it.

      The examples Andy cites prove that in fact the microkernel concept has won in every single field where stability has gone beyond being something people wanted to something they demand. As soon as the general public realizes computers don't HAVE to crash, they'll win there too.

    2. Re:Examples prove Linus' point by nagora · · Score: 1
      Uhm, I'm pretty sure niche doesn't mean exceptionally widely deployed.

      It certainly can do. A bolt which is used on buses around the world is in a niche compared to, say, windscreen glass.

      I can go practically anywhere and see OAPs in electric buggiess, but that doen't mean electric buggies are about to "break out" into the mainstream of transport systems; they're deployed everywhere and still a niche product.

      As soon as the general public realizes computers don't HAVE to crash, they'll win there too.

      But MY computer never crashes (Linux); so what else has it to offer? Security? Got that too.

      I was under the impression that QNX's real killer feature was its real-time abilities. Isn't that a niche feature? How many people would notice the effect of going from current generation Windows and Linux to a hard-real-time version?

      TWW

      --
      "Encyclopedia" is to "Wikipedia" what "Library" is to "Some people at a bus stop"
    3. Re:Examples prove Linus' point by nonmaskable · · Score: 1

      QNX thrives in a single environment where it's strengths are important and it's weaknesses can be ignored - embedded systems

      Linux is the opposite: it thrives just about everywhere: embedded systems, desktops, servers, high performance computing, ha clusters, etc. etc.

      Yes, I realize that QNX _could_ do all the things I listed for Linux. But it's weaknesses (pretty much in line with Linus' points) have kept it from wide use outside of it's niche.

      And as for crashing...my Linux systems only go down when the power does.

    4. Re:Examples prove Linus' point by Miniluv · · Score: 2, Insightful

      "It certainly can do. A bolt which is used on buses around the world is in a niche compared to, say, windscreen glass."

      While I see your point, and agree to an extent, its a poor metaphor (windscreen glass is a pretty niche application of glass, wouldn't you say?).

      My point was to refute the implied "QNX isn't anywhere important" statement rather than the exact meaning of niche.

      "But MY computer never crashes (Linux); so what else has it to offer? Security? Got that too."
      Thats wonderful, and my data center full of linux boxes do crash. Usually because of bad device drivers. As for security, while linux is certainly secure in many respects, it lacks the top to bottom security centric design that is much easier with a microkernel.

      "I was under the impression that QNX's real killer feature was its real-time abilities. Isn't that a niche feature? How many people would notice the effect of going from current generation Windows and Linux to a hard-real-time version?"

      That is, but this isn't about QNX vs Win/Lin, but instead micro versus monolithic. In this respect people wouldn't the difference either, until they sat back and thought about how often they reboot now compared to before. Its the best sort of upgrade though, the sort you never notice.

    5. Re:Examples prove Linus' point by Miniluv · · Score: 1

      The "weaknesses" in QNX are entirely a result of it being designed for one application and no effort being put into making it good at anything else.

      Linus' bizarre rambling about data structures and distributed algorithms has nothing to do with it.

      Linux is a swiss-army knife, it does a ton of things and none of them very well.
      QNX is a boning knife, it does one thing quite well and is crap at most everything else. The only thing they share is having a sharp edge.

      As for the stability of your linux box, who the hell cares? Its one random box with anecdotal stability metrics. I can find plenty of counter examples of linux boxes crashing due to badly written drivers, userland software, pieces of the kernel, etc.

    6. Re:Examples prove Linus' point by Arandir · · Score: 1

      As soon as the general public realizes computers don't HAVE to crash, they'll win there too.

      I've never once had a crash with the FreeBSD or Linux monolithic kernels. And unless you're a kernel developer, you haven't either.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    7. Re:Examples prove Linus' point by statemachine · · Score: 1

      I've never once had a crash with the FreeBSD or Linux monolithic kernels. And unless you're a kernel developer, you haven't either.

      I have, and I'm not a kernel developer. RAID and V4L are not bullet-proof.

    8. Re:Examples prove Linus' point by Arandir · · Score: 1

      v4l is a piece of crap. I should have known someone would bring that up, because I suspect it's sole purpose in life is to cause kernel panics.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    9. Re:Examples prove Linus' point by Watson+Ladd · · Score: 1

      What about Exokernels? An optimized webserver running 8 times faster then Apache on Linux? Sounds like preformance to me.

      --
      Inventions have long since reached their limit, and I see no hope for further development.-- Frontinus, 1st cent. AD
    10. Re:Examples prove Linus' point by Anonymous Coward · · Score: 0

      As soon as the general public realizes computers don't HAVE to crash, [microkernels will] win there too.

      Hahaha, that's a good one!

      ITYM, "as soon as the general public discovers that microkernels can run MS Office and the latest video game from Blizzard, and a microkernel vendor arranges to get their OS preinstalled," which I'm guessing won't be for a long time now.

    11. Re:Examples prove Linus' point by gbjbaanb · · Score: 1

      As for the stability of your linux box, who the hell cares? Its one random box with anecdotal stability metrics. I can find plenty of counter examples of linux boxes crashing due to badly written drivers, userland software, pieces of the kernel, etc.

      I run a Linux web server and it crashes about every 60 days or so. If you look at netcraft's uptime reports you'll see that Linux isn't that hot. Just becuase a desktop linux box (that might be rebooted every night? every week?) stays up, doesn't mean that Linux is super-reliable.

      Even slashdot's average uptime is 137 days, running very little apart from a perl interpreter and apache.

    12. Re:Examples prove Linus' point by Miniluv · · Score: 1

      My experience over the last 5 or so years as a full time Linux admin, has been that Linux stability is inversely related to the load on a system. Run your system at 80-90% load and you'll experience a lot less stability than a system running at 20-30% load.

      Windows suffers from the same general issue, though it has shown some marked improvements in stability on the server side in the last couple releases. Linux, in my experience, can't say the same. Parity is rapidly approaching between the stability of the two, and for me neither is cutting it.

      Solaris and FreeBSD are the only two systems I've run in production environments where high load didn't seem to significantly affect stability. Sadly I don't get to run them more often.

    13. Re:Examples prove Linus' point by Miniluv · · Score: 1

      "I've never once had a crash with the FreeBSD or Linux monolithic kernels. And unless you're a kernel developer, you haven't either."

      Hahahahahaha. You make me laugh.

      I run a moderate sized production environment (around 150 servers) and we have kernel panics and OOPSes. Not terribly frequently, but more frequently than zero. And nobody here has written kernel code in years.

    14. Re:Examples prove Linus' point by gbjbaanb · · Score: 1

      thanks for the tip. However, this basic webserver is quite lightly loaded so I'll just have to figure out what's up with it. Probably osCommerce... :(

      FreeBSD is the one at the top of netcraft's uptime though, and Solaris seems to be better than I thought.

      cheers.

    15. Re:Examples prove Linus' point by Miniluv · · Score: 1

      Solaris rocks for stability and scalability, though its pretty heavy at the low end. FreeBSD is the shit for small webserver type usage.

      Amusingly enough I was playing with osCommerce the other day and found it quite heavy.

      Solaris would be your friend in trying to figure out your problems though, because its by far the most instrumentable environment I know of in the unix world.

  49. The Question Is by logicnazi · · Score: 4, Insightful

    A simple way to put the question is this:

    If you were given the choice between rebooting your machine every 3 months or so for updates/driver install or never rebooting your machine and but taking a 3-5% performance hit (I think this is what the most efficient uKernels waste on address space switches) which would you choose.

    I know my answer. For embedded systems/media center type stuff I don't care about the 3-5% performance hit. I don't ever want to screw with them.

    For my computer I don't care about rebooting every 3 months or so. I want that extra little bit of speed.

    --

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

    1. Re:The Question Is by Anonymous Coward · · Score: 0

      I recently had bad blocks on an NTFS partition apparently related to a power failure / brownout while writing. This must have corrupted the NTFS driver in the kernel and the next write (to the registrly of course) corrupted the file system. Plugging this drive into another computer to correct it hosed that computer's ntfs partitions as well. Then, after using restore disk and copying the wrong registry file (software.sav is not a 'save' for software hive!) booting windows hosed the bios cmos so that the post screen was not visible (the video failed to initialize). This was fixed by jumper'ing the cmos to reset it.

      In a microkernel:
          * bad blocks corrupting the driver would have probably reset the driver, preventing corruption of the filesystem.
          * the filesystem would probably have a separate instance per partition, preventing the 2nd computer from also getting hosed
          * the driver for writing to cmos (or the bus or however the cmos was actually hosed) would have prevented illegal values.

      Thus my 10+ hours of work to diagnose and repair the system and fix 2 computers would have been a message saying "error in ntfs driver" followed by a chkdsk.

      So I'm just giving this anecdote to remind that sometimes the choice is not between minor slowdown versus minor inconvenience. Sometimes the choice is between minor slowdown versus catastrophic failure. Except for games the cpu is idle 99% of the time I use the computer. I'm using a 2 year old cpu because it's still plenty fast. I can tell you for sure, for me, that I would gladly take a 3-5% slowdown over hosed computer.

    2. Re:The Question Is by logicnazi · · Score: 1

      I disagree. If the filesystem server in a uKernel got corrupted it can write bad blocks just like a corrupted driver in a monolithic kernel.

      Also everything that happened after the initial corruption was just bad programming. Something that could happen just as well in a uKernel as a monolithic. You can program a monolithic kernel so that reading stuff off the disk isn't going to write values to the bios and you can write a uKernel that reads registry files and passes these messages to other parts of the kernel that overright bios stuff.

      Yes, you might say the sort of development practices that uKernels use are less likely to copy random stuff from the disk and let it modify the bios but this isn't an argument for a true uKernel. It is an argument for, as I advocated in my post, using uKernel type modular development but still letting everything run in one address space.

      The only thing that a true uKernel gives you that a hybrid type design doesn't is address space protection. Nothing in your example suggested any of your problems happened because one part of the kernel corrupted the memory of other parts of the kernel. So your example just advocates my point. Namely the modular nature of uKernels should be borrowed for monolithic kernels (and this could even allow reloading FS drivers) but true address space protection just isn't worth it.

      The fact that generally monolithic kernels don't write modularly and uKernels do doesn't say anything about which is in principle better.

      --

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

    3. Re:The Question Is by EvanED · · Score: 1

      There are also servers, where the "never crashes" would also probably be important over speed.

      I mean, there are servers out there that have been running for years.

    4. Re:The Question Is by Anonymous Coward · · Score: 0

      Well riddle me this, name an OS where you can load a filesystem module once per partition using that filesystem. In Linux, you load ntfs.o once and it is used on all ntfs partitions. You don't load a separate instance of ntfs.o for each partition.

      Other than microkernels there's only *one* system I know of that is even capable of doing this: Plan 9 aka Inferno. Thanks to using dis/limbo which is basically running safe JIT'd C code (which of course is another method Tannenbaum mentions as opposed to monoliths and microkernels).

      This one feature alone *would* have prevented the other computer from being corrupted and it is trivial in a microkernel but very difficult and annoying to do in a monolith. Look you can put on blinders and pretend microkernels do not offer a large safety advantage if you want. You can say that if it were a microkernel the same exact thing would necessarily have happened. But you'd be wrong. This is *not* a made up example and failures *do* happen occasionally in real life... sometimes even in perfect code due to memory failures, radiation, etc.

    5. Re:The Question Is by Watson+Ladd · · Score: 1

      What if a device driver writes a byte to *any* DMA address? A microkernel would check the DMA addressess the driver could write to, but a uKernel would never have a chance against the poke of death.

      --
      Inventions have long since reached their limit, and I see no hope for further development.-- Frontinus, 1st cent. AD
    6. Re:The Question Is by Anonymous Coward · · Score: 0

      Only the most fanatic gamer would see this as some sort of win, because that's the only application that's going to sustain 90%+ CPU utilization. 'every 3 months or so' desktop processing power grows by more than 3-5%.

    7. Re:The Question Is by Anonymous Coward · · Score: 0

      taking a 3-5% performance hit (I think this is what the most efficient uKernels waste on address space switches)

      No need for that if you don't conflate protection with translation, and use a SASOS.

    8. Re:The Question Is by logicnazi · · Score: 1

      You are confusing two different questions.

      1) If I go out and look at the OS systems availible is it likely that the uKernels would have prevented this sort of thing but not the monolithic kernels.

      Yes. Because the sort of people who design uKernels are usually very concerned about this sort of thing. This is ultimately a cultural difference because if you are writing a uKernel you have already shown a preference for things like theory and isolation over performance (e.g. saving memory by loading a driver once)

      2) Whether in principle building a uKernel gives a development advantage.

      2 is the question we are talking about. 1 is just silly OS advocacy. If you were going to write a new OS and you really wanted this feature you would just build it in uKernel or no uKernel and the fact that no other monolithic kernels do it would be irrelevant.

      Your point is like arguing all the really respectful people you know speak chinese (just random hypothetical not true). Therefor if one wants to be respectful one had better speak chinese. It is absurd in that case and it is absurd in this case. Just because the culture might be inclined to certain sorts of behavior doesn't mean you have to buy into everything else that culture does to engage in that behavior yourself.

      --

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

    9. Re:The Question Is by logicnazi · · Score: 1

      Yes, obviously a uKernel benefits from address space protection. I see no reason to believe this is what happened in the case presented.

      Yes, uKernels are going to be somewhat less likely to crash. All I'm saying is that my hybrid type kernel is so stable now that I wouldn't be willing to give up 3-5% performance for this additional safety.

      --

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

  50. Hybrids are a first generation device... by everphilski · · Score: 2, Informative

    ... they are an exception to a "normal" car he was refering to.

    And even if you lumped them into cars, so, you have what, a few hundred prius's that have reset buttons, among the hundreds of millions of cars. And every computer in existance still has a reset button, and at some point in time that reset button has been exercised.

    1. Re:Hybrids are a first generation device... by Anonymous Coward · · Score: 0

      I'll bet you damn near every car gets turned off when you're done using it too. It most certainly has an off button. =)

    2. Re:Hybrids are a first generation device... by drinkypoo · · Score: 1

      The car's computer typically loses power when the vehicle is shut down. I'm not sure what percentage of newer vehicles use the PCM to handle security and such before the key is even inserted; most vehicles have a BCM (body control module) to handle such tasks as rolling down power windows when you ask for it from the key fob. The PCM also has a "KAM" or "KeepAlive Memory" that is usually just some SRAM backed up with a capacitor for momentary power losses. That gets reset when you disconnect from power for long enough (5 minutes to over 24 hours depending on type of vehicle) or when you manually clear it with a scan tool.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    3. Re:Hybrids are a first generation device... by smallstepforman · · Score: 1
      And every computer in existance still has a reset button, and at some point in time that reset button has been exercised.


      You've obviously never used a Commodore machine (Amiga, C=64 etc). No reset buttons here. I actually had to build a reset button manually by drilling the plastic dase, installing a push button, soldering two leads to the motherboard (ground and reset signal). Thinking back to the good old C=64, I even had to upgrade the OS by installing TornadoDOS. Back then, installing ment yanking out the EPROM storing the OS and inserting a new EPROM. And updating the floppy interface from serial to parallel. (disk transfer rates went from 300Bps to 3kBps). The Operating system back in those days took a full 8Kb back then.

      --
      Revolution = Evolution
    4. Re:Hybrids are a first generation device... by everphilski · · Score: 1

      You've obviously never used a Commodore machine

      Never make assumptions. I own a C64, a 1584 drive, tape drive, 3 joysticks, roughly 1000 disks of software... in good working order. While there was no reset button there was **still** the need to reset the box when things went wrong. Whether it was a toggling power button (effectively a reset switch) or kicking the power supply in anger...

  51. Re:Still Debating by AKAImBatman · · Score: 5, Interesting

    Forgetting something?

    *Minix. This is still an educational kernel. A teaching tool. It remains unsuitable for "real world" use.

    Actually, it's a start of a full-up Microkernel operating system. This isn't your grand-pappy's Minix, it's a brand new code base under the BSD license, intended to be developed out into a complete system. It's still taking baby-steps at the moment, but it's coming along quite nicely.

    * NT. This is NOT a microkernel!

    NT is a hybrid. It has Microkernel facilities that are constantly being used for something different in each version. Early versions of NT were apparently full Microkernels, but this was changed for performance.

    * QNX Neutrino. This is the most successful microkernel ever. It deserves all the praise it gets. Yet it is still a niche product.

    I would hardly call QNX a "niche" product. Running on everything from your car engine to Kiosk PCs (yes, that stupid iOpener ran it too), it's an extremely powerful and versatile operating system. Its Microkernel architecture even gives it the ability to be heavily customized for the needs of the application. Don't need networking? So don't run the server! Need a GUI? Just add the Graphics server to the startup.

    Microkernels haven't failed. However, you may notice that nearly all the popular Operating Systems we use today were all developed back in the late 80's and early 90's. The real problem is that there hasn't been a need to develop new OSes until now. Now that Security and Stability are more difficult pressing issues than performance, we can go back to the drawing board and start designing new OSes to meet our needs for the next decade and a half.

  52. A CPU like Kernel by Twillerror · · Score: 2, Interesting

    All of these ideas are old, and while high performing don't address the largest issue of all, cross kernel compatability.

    Sure you can recompile and all that jaz, but I'd love to see a day where an app could run on any number of kernels out there. This creates real competetion.

    What I'd like to see if a kernel more like a CPU. Instead of linking your kernel calls, you place them as if you where placing an Assembly call. Then we can have many companies and open source organizations writing versions of it.

    As we move towards multi core cpus this could really lead to performance leads. Where one or more of many cores could be dedicated to the kernel operations listening for operations and taking care of them. No context switches needed, no privledge mode switching.

    Drivers and everything else run outside of kernel mode and use low level microcode to execute the code.

    The best part I think is you could make it backword compatiable as we re-write. A layer could handle old kernel calls and change them to the micro codes.

    As we define everything more and more then we might even be able to design CPUs that can handle it better.

    1. Re:A CPU like Kernel by Moocow660 · · Score: 1

      What you describe sounds strikingly like Java and .NET And hey, would you look at that, there are various competing platforms (eg GCJ, Mono, etc)

    2. Re:A CPU like Kernel by FST777 · · Score: 1

      Not exactly true.

      What he is describing is a Java / .Net which is directly linked to the hardware, without an underlying kernel. This, offcourse, impoves performance a lot (with the possibility off taking it out of userspace for a start. Imaging device drivers written in Java ;) ). What would really be a great idea is writing a kernel which does Java and .Net on the fly, while also performing quick and dirty (virtualisation-like) translations between code and CPU (to enable running any binary (Windows, Linux, Mac OS) on any CPU (i386, amd64, PPC)). This should be possible. The GUI could be a problem though ;)

      The size of this kernel would be huge, security could be an issue, but the way it works should be great. I have thought about such a project for a while, but I'm not completely at home with kernel-design. I think I'll pick up that project once more, focussing on GCJ and Mono for a start...

      Any opinions? (my, this post has become quadruppel as large as I intended)

      --
      Free beer is never free as in speech. Free speech is always free as in beer.
  53. Re:"Cars don't have reset buttons." My Prius does. by Fulcrum+of+Evil · · Score: 1

    Andy's point is that the button isn't on the dash or visible to the user, simply because the vast majority of drivers will never need to push it. The same, sadly, cannot be said about Windows, Linux or MacOS X.

    Um, it's a CAR. How many people add stuff to their car that affects the ECU? 5%? It does a fixed set of things and everything is well defined. Not like a PC at all.

    --
    "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  54. Heh... by everphilski · · Score: 0

    MINIX is BSD'd, not GPL'd. More freedom.

  55. Try QNX. by tetabiate · · Score: 2, Informative

    I played a little with it and seems pretty fast and stable. A good set of GNU utils have already been ported and even commercial software like Intel's C++ compiler and the Opera browser. However, it is not ready to replace Linux as a desktop/server OS since it lacks a lot of applications/extensions like a good NFS client/server, journaled filesystems, etc. It is fast and realiable and has the potential to become a good desktop OS if someday the company decides to give it a chance out of the embedded and RTOS market.

  56. Re:Still Debating by Anonymous Coward · · Score: 0

    Why do so many people forget SymbianOS?

  57. Re:Obsolete Computing Technology by displaced80 · · Score: 1

    ...then write it ;-)

    After all, even the prettiest of computers are still just big dumb bit-shifters. Shift that paradigm!

    Personally, I think debates like this are what's good about the computing industry and computer science. I don't pretend to have anything but a basic grasp of the concepts here, but it's fantastic to see these arguments.

    I don't think it's a sign of immaturity. It's a sign of health. There's no ultimate 'do it this way'. And if someone thinks they've found the One True Path, just go and code it!

    --
    What's the frequency, Kenneth?
  58. Re:"Cars don't have reset buttons." My Prius does. by Miniluv · · Score: 1

    Again, the original point is that you CAN and SHOULD design an operating environment that allows for unforseen user software to be installed, and devices to be supported, without the entire system ever crashing.

    Ultimately the user base needs to adjust their expectations and begin demanding that OS vendors supply an OS that meets actual, real world needs. Namely zero crashes.

  59. Performance Hit of uKs unacceptable for most users by David+Off · · Score: 2, Informative

    > Virtually all of these postings have come from people who don't have a clue what a microkernel is or what one can do.

    Okay, I spent 2 years working as a engineer in the OSF's Research Institute developing Mach 3.0 from 1991. Let me answer Linus's question in a simple fashion. What Mach 3.0 bought you over Mach 2.5 or Mach 2.0 was a 12% performance hit as every call to the OS had to make a User Space -> Kernel -> User Space hit. This was true on x86, Moto and any other processor architecture available to us at the time. Not one of our customers found this an acceptable price to pay and I very much doubt they would today. One of the reasons Microsoft moved a lot of functionality into the Kernel between NT 3.5 and NT4.0 was performances (NT being, at its origins a uK based OS).

    What of the advantages ?

    Is porting easier? No not really, the machine dependent code in Mach 2.5 and Mach 3.0 was already well abstracted.

    You could run two OS personalities at once, for example you could have an Apple OS and Unix running at the same time. But why would any real world clients want to do this?

    Problems in the OS personality wouldn't bring down the uKernel - but they might stop you doing any useful work while you reboot the OS personality.

    Other things like distributed operating systems (and associated fault tolerance) were perhaps aided by the uK design and this is a path that, in my humble opinion, the OSF should have pursued with greater zeal than they did. Back in 1991 we had a Mach 3.0 based system that ran a uK across an array of x86 nodes but had different parts of the OS - say IO or memory management running on different nodes. From a user standpoint all the machines (in reality bog standard 386 machines linked by FDDI) looked like a single computer running a Unix like OS.

    I remember discussing Linux with my colleagues back in 1993, some were impressed and thought the nascent OS model was very powerful, others dismissed it as a toy with no real future. I suspect Tannenbaum was also amongst the poo=pooers and has become pretty annoyed about how things have turned out.

  60. Coyotos by Anonymous Coward · · Score: 0

    Anyone who wants to argue about this should investigate the work done on EROS and now Coyotos. There is a lot of discussion going on between the Coyotos team and the HURD folks, although I fear it has become more ethically than technically focused of late (it IS GNU, after all...)

  61. Re:Still Debating by Anonymous Coward · · Score: 0

    Symbian calls EKA2 (the kernel of Symbian OS) a nanokernel.

  62. Re:Still Debating by 'nother+poster · · Score: 1

    because obviously 25GB > 15GB

    A greater than sign in this context does not imply better than, simply more bytes.

  63. Hardware support by Anonym0us+Cow+Herd · · Score: 1
    All I want to know...
    is if we can make a functional distro (i.e. Ubuntu) on top of Minix 3. Is it possible? What must be changed?
    Support for a large variety of hardware.
    --
    The price of freedom is eternal litigation.
    1. Re:Hardware support by LWATCDR · · Score: 1

      "Support for a large variety of hardware."
      Might I suggest a stable binary device driver interface?
      If Minix3 offered that it might get some hardware vendors to offer support for it. To help things along it should be possible to port most of the existing device drivers from BSD to Minux3 to give it a head start.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
  64. uKernels are unnecessary for anything not embedded by Daishiman · · Score: 1

    Case in point: MVS/zOS is at the very core the same thing it was 40 years ago, and has uptimes measured in decades and clients measured in the thousands per second. Nothing would be gained by making a microkernel for high-reliability and high-availability. Undispitably great for embedded and the like, but unnecessary in the server room, where monolythic is as stable as it gets.

  65. Good! by babbling · · Score: 1

    It's great that this argument/debate is happening. It's good for people who want to learn about kernel architectures.

  66. horse... by Pedrito · · Score: 1

    dead... beating and beating and beating....

    1. Re:horse... by Truekaiser · · Score: 1

      not only dead but all that remains of the horse are are the bashed bleached bones.

      like many things micro-kernels look good on paper but fail in the real world, in this case the users of such systems found the trade off of security vs usability unacceptable.

      saying 'with a dual core machine you won't have a problem with it' is missing the point entirely because that is like what microsoft is saying with vista 'if you have a bleeding edge video card you wont have a problem with it'. only programs should limit themselves with hardware is best for them. the os should work on as many peices of hardware thats possible while using as little resources as possible. linux simply won out over minix in this reguard.

  67. Re:Still Debating by Anonymous Coward · · Score: 0

    Wandering idiot. RTFA

  68. Page based messages by CustomDesigned · · Score: 2, Informative

    That is how messages have worked in Mach since its inception. The Microkernel would always send messages by page table manipulation whenever possible. Minix-1 did not work that way (for simplicity) - it just copied the bytes. Someone who has downloaded Minix-3 will have to tell us whether Minix-3 can send "page based" messages.

    1. Re:Page based messages by indil · · Score: 1
      Minix3 messages work by indicating a message buffer to be copied between processes. Calling send or receive activates an OS trap that will copy the data from the sender process into the address space of the recipient process.

      To address earlier posts: Minix3 uses virtual memory/paging, but intentionally lacks more contemporary features on purpose. Tanenbaum has repeatedly refused to add these features to keep Minix uncluttered and easy to understand -- it's made for students to study, after all. If anyone is interested in making it the new Linux, feel free to fork it any time you want...if the license allows. I'm not familiar with which license covers it. I thought I remembered someone saying the reason Minix hasn't taken off like Linux was because its license was too strict.

  69. Oh Tanenbaum, oh Tanenbaum, wie grün sind ... by Qbertino · · Score: 2, Funny

    Oh Tanenbaum, oh Tanenbaum, wie grün sind deine Blätter
    Du grünst nicht nur zur Sommerszeit, nein auch im Winter, wenn es schneit.
    Oh Tanenbaum, oh Tanenbaum, wie grün sind deine Blätter

    For the uninformed: Tannenbaum (with double n) is the german word for Fir (conifer) or the synonym for Christmas-Tree. The verse above is the first of a famous german christmas-carol. :-)

    --
    We suffer more in our imagination than in reality. - Seneca
  70. What about nanokernels like Symbian's? by Anonymous Coward · · Score: 0

    Why no discussion of nanokernels like EKA2? It's reliable, fast and extremely widely used.

  71. Re:Obsolete Computing Technology by MOBE2001 · · Score: 1

    I don't think it's a sign of immaturity. It's a sign of health. There's no ultimate 'do it this way'. And if someone thinks they've found the One True Path, just go and code it!

    Some of us are working on it. You don't expect one person to change a century-old paradigm, do you? And you are mistaken about immaturity. The current model is more than just immature. It's deadly wrong in more ways than one. When it comes to computing, there is indeed one true path. One day soon, the scales will fall from our Turing-machine encrusted eyes and we will see the light.

  72. Re:Still Debating by Anonymous Coward · · Score: 0

    For debating with Linus you need to get his opinion too. Not his opinion which is 10 years old. Linus did a great job and linux currently runs on most supercomputers that are generally useful. Many universities use it because it's cheap and works. Linux is NOT and was never about novelty and superior technology. But about useful and working system. If there is a need, it will evolve in any way necessary. An aging professor's debate and ideas do not help much in this respect and are largely a "want-to-still-be-famous" OS expert. Systems are sometimes like buildings - even the greatest design is useless if the building fails - it will collapse independently of design. Great new ideas are great to push for - but one must be aware that it's hard to make complex systems work and that there is a reason why these systems evolve.

  73. I didn't say they were all good by rdunnell · · Score: 1

    Although the one on networks was not too bad, I'm not quite sure that the professors at my school used it properly. The class ended up being a lot more practice than theory, so everyone knew how things worked but not necessarily why they got that way. I think that teaching the "why" is just as important as the "how" so that people are properly enlightened about how to fix problems effectively, not just "whoops apply a patch and reboot." It seems to me that the book had a lot of that (which looked like wandering) but the profs didn't know how to use it.

    The main annoyance I had was that, like many technical references, the books went out of date way too fast so I couldn't resell it. So I still have whatever edition sitting on my shelf, just because it was $70, damnit. Anyone need an explanation of SONET?

  74. Reset Buttons by Anonymous Coward · · Score: 0

    Stereos and cars do have "reset buttons". Unplug the stereo or disconnect the battery in the car.

    1. Re:Reset Buttons by jibjibjib · · Score: 1

      My car stereo actually has a reset button. I've never needed to use it, though.

  75. OOP by danpsmith · · Score: 1

    I must admit that my experience is limited in operating system design, however, I have noticed that modular design in every other type of software always seems to work better and results in stabler code which is more adaptive to change. With strict parameters on what parts can and cannot do, strict parameters on how one module interacts with another, code goes from spaghetti to whatever the opposite is: I guess well-designed.

    It _is_ more work to design and implement these systems. But often, afterward the extra time and effort and CPU cycles are well worth it as you design a system in which components point out and catch their own errors on a regular basis.

    Any malfunctioning behavior is easily traceable as one section of code doesn't purposefully stomp on the rest of it: everything has boundaries. When a value gets changed it's clear what part changed it and which part has an error, with or without a debugger. Sections are easily testable one part at a time, each module or object is clear and concise in purpose and the code is easily broken down to be developed by teams even. These are all the fundamental advantages of OOP. Anyone who has ever taken a class in the subject knows this.

    Students and others may backspin and go back to making giant functions with unclear purposes that have side effects and all of this is easier to spit out than properly structured code, but to pretend that this is the best approach is ludicrous.

    I understand that microkernels might not have widespread use, yet. But you must understand that stability is going to play more and more of a role as computers begin to take up every vital role in the information structure of our lives. This is the reason things like media center PCs still serve only a purpose for those on the technological edge. Nobody wants to have to "reboot their TV."

    Linux is relatively stable, and this is fine. But to pretend like monolithic kernels are the way of the future just because your OS or your favorite OS is coded that way wreaks a little bit of bullshit IMO.

    As hardware gets faster, the abstractions progress. We are now getting to a state with speed that we can stop worrying about performance as much. It's now more important that things work than that things use 100% capacity.

    Every other sect of programming seems to be progressing toward OOP, and like Tanenbaum says in the article, it's insane to pretend like these lessons don't have merit.

    --
    Judges and senates have been bought for gold; Esteem and love were never to be sold.
    1. Re:OOP by robertjw · · Score: 3, Funny

      code goes from spaghetti to whatever the opposite is:

      Pizza

    2. Re:OOP by nuzak · · Score: 1

      I've heard the term "ravioli code" a couple times. Not usually complimentary actually, it tends to refer to overdoing OOP (in the same way one might overnormalize a database schema).

      --
      Done with slashdot, done with nerds, getting a life.
    3. Re:OOP by tehcyder · · Score: 1
      my experience is limited in operating system design
      Which still gives you an unfair advantage over the rest of the posters in this thread.
      --
      To have a right to do a thing is not at all the same as to be right in doing it
  76. Linux Will Stay "Mono" 'Til Linus Can't Take It by cmholm · · Score: 2, Interesting
    'Way back when we read the first rev of this discussion, Tanenbaum made good points. At the same time, Linus was able his little monolithic kernel project jump through the hoops he wanted it to.

    Years later, Tanenbaum still makes valid observations, Linus and others continue to make a rather larger project jump through the hoops, and that's fine. The results of academic research may or may not get traction outside of a university, but without the research, there wouldn't be alternatives to contemplate. If I've gathered nothing else about Linus' personality from his writings over the years, it's that he seems to be practical, not particularly hung up on architectural (or licensing) theories... unlike me.

    At some point, if his current architecture just isn't doing it for him any more, he might morph into Tanenbaum's 'A' student. It won't be because a microkernel was always right, but that it was right now.

    --
    Luke, help me take this mask off ... Just for once, let me butterfly kiss you with my own eyes.
  77. Re:Still Debating by makomk · · Score: 1

    Good technology isn't something that "could work very elegantly in a few years, but is squirrely right now." It's "works well right now" and sometimes "works well right now, and can be upgraded to work even better in the future."

    VHS won because it solved the problem people had.


    True - I mean, just look at how successful Linux has been...

  78. The Big Picture by thisisnotmyrealname · · Score: 2, Interesting

    I just finished watching the original Connections series with James Burke.

    The start and end of the series hits it home:
    The dependence on technology, and the use of technology to get us out of trouble created by technology.

    About how one technology is so interdependent on other technology, that one failure can cause the whole technology section to fail.
    Initial reference to electricity grid failures, usual caused by one small part failing)

    Wouldn't building a system so that one part cannot take down all the other parts be important?

    How would the Internet be if the entire thing would fail if one part stopped?

    Yes, I want a computer without a reset button...

  79. This debate will never be over... by Lendrick · · Score: 0

    ...until someone makes a microkernel unix system that's more than just a proof of concept. Linux wins by default right now because it works reliably and has the features people need in order to run in a production environment.

    It seems like coding micorokernel systems is a lot harder, since there still isn't really a completely working one.

    1. Re:This debate will never be over... by kv9 · · Score: 3, Insightful
      ...until someone makes a microkernel unix system that's more than just a proof of concept.

      you mean like Tanenbaum (slashdotted, try later) did?

      FTFA:

      So **PLEASE** no more comments like "If Tanenbaum thinks microkernels are so great, why doesn't he write an OS based on one?" He did.

      i don't reall know what you mean by proof of concept

      again, FTFA:

      It is definitely not as complete or mature as Linux or BSD yet, but it clearly demonstrates that implementing a reliable, self-healing, multiserver UNIX clone in user space based on a small, easy-to-understand microkernel is doable. Don't confuse lack of maturity (we've only been at it for a bit over a year with three people) with issues relating to microkernels.

      i know this is slashdot, and RTFA is some kind of mortal sin, but please at least try.

    2. Re:This debate will never be over... by Lendrick · · Score: 1

      It lacks maturity, therefore it is a proof of concept. Note the memory management issues listed in previous comments. It's not suitable for a production environment, therefore no valid comparison can be made and Linux (being production-ready) wins by default.

      I'm not dismissing microkernel architectures (and I'm not qualified to), but the microkernel side isn't even ready to engage the monolithic side in a debate because there really aren't any real-world examples of production microkernel unix.

    3. Re:This debate will never be over... by Gorshkov · · Score: 1

      It is definitely not as complete or mature as Linux or BSD yet, but it clearly demonstrates that implementing a reliable, self-healing, multiserver UNIX clone in user space based on a small, easy-to-understand microkernel is doable. Don't confuse lack of maturity (we've only been at it for a bit over a year with three people) with issues relating to microkernels.

      Interesting, that statement. "Self-healing" .... he pushes drivers out to userland and restarts them when they bugger up.

      I remember years ago (newbie), writing a daemon that kept crashing - massive memory leaks somewhere. Not feeling particularly energetic, I hit upon the idea of sticking it in /etc/inittab so that the system would restart it.

      Anybody here want to guess just how many people shit on me for doing that? "If you have to rely on inittab to restart your programme, FIX IT! IT'S BROKEN! YOU'RE USING A CRUTCH!" etc etc etc.

      Maybe it's just me, but unless T is talking about examining the offending carcass, rewriteing the code (self-modifying code? *gasp*) and then resurrecting the thing, isn't he talking about basically the same thing?

    4. Re:This debate will never be over... by Schraegstrichpunkt · · Score: 1
      Maybe it's just me, but unless T is talking about examining the offending carcass, rewriteing the code (self-modifying code? *gasp*) and then resurrecting the thing, isn't he talking about basically the same thing?

      You should have fixed the code. But Tanenbaum's approach is to design an OS that is secure against your attempts to fsck up the system. :-)

    5. Re:This debate will never be over... by Gorshkov · · Score: 1

      Yes, I should have .... and my point is that Tanenbaum's approach is a broken band-aid attempt to ignore the problem in the hopes that it will go away, just as my use of inittab was.

    6. Re:This debate will never be over... by sp0rk173 · · Score: 1

      Here's the thing. In a general purpose OS, you can't control code quality as well as you would like (for example, look at the quality of the linux kernel code. Sure, it works, but there's a difference between efficacy and quality). This is the main problem a microkernel tries to overcome. If there is a bad driver, and you're running a system that requires extreme uptime and availability, the entire system won't die. The resuretion server senses the death of a driver or server and restarts it, giving you a fault-tolerant, usable system.

      It's all well and good for you to be bitched out for writing bad code. Infact, that's a VERY good thing. However, don't assume that microkernel systems exists as a crutch to programmers. That's just plain wrong. It exists as a firewall between users and crappy code. I would also venture to say that its inherent modularity will allow developers to pay more attention to the actual working bits of their code, and spend less time developing kludges and hacks to get their drivers working in a monolithic system.

      The bottom line is this. Say you've built an OS. Some corporations decides they want their pro-audio card to work on your OS. They design, program, and compile their driver and release it. Users around the world start using this driver, and it sucks. Sucks ass. The developer was drunk most of the time he was coding it. From here there are two possibilities:

      1) You have a monolithic system. In this case, the driver brings the entire system down, causes all kinds of mysterious problems for end users (see windows 95 - windows 2000, and linux circa early nvidia drivers). Your users are not happy. They point the finger at you. You're chastized on Slashdot (well, except for linux, then they rationalize away the problem with different ridiculous excuses).

      2) You have a microkernel system. The driver doesn't cause any noticable change to end users. Your system stays up and e-mails you that the driver is failing, with dumps and failure information. You send these to the company, the company fixes the driver (hopefully).

      This is how *I* view the microkernel vs monolithic kernel debate. I think the system response issues are mostly overblown and based on out-of-date models (Mach and Minux 1 are definitely out of date microkernels - l4 seems to have response times that are measurably slower, but mostly unnoticable to the end user). I think this is a valuable area of research and I look forward to minux 3 maturing and becoming more usable.

    7. Re:This debate will never be over... by sp0rk173 · · Score: 1

      More like, the problem has shown it will not go away, so Mr. T is trying to show us a way that will basically make the problem go away from the user's perspective.

    8. Re:This debate will never be over... by Anonymous Coward · · Score: 0

      When your daemon crashed did it bring down the entire operating system, destroy data, corrupt your disks? I'm guessing no, because you were probably using a system that has process isolation and resource limits. If you were using a system that had decent support for monitoring and managing daemons, you could have gotten an email with a core dump or whatever mailed to you when the fault first occurred, had the daemon brought back up, and if it continued to fail had the daemon kept down. What you choose to do with the email is up to you. If you want to simply ignore it and say that your monitoring software keeps bringing the daemon back up, so nothing to worry about, then that would be the same as your band-aid. If instead you choose to fix the daemon and replace it, this system allows you to do all that with almost no downtime and most importantly no system crashes or data loss by other processes on the same system. Tanenbaum wants to extend this sort of functionality that we already have for daemons to device drivers as well. Seems like a damn good idea to me. I'd much rather find out about a buggy device driver from an email than a crashed computer and a corrupted filesystem.

    9. Re:This debate will never be over... by Gorshkov · · Score: 1

      t's all well and good for you to be bitched out for writing bad code. Infact, that's a VERY good thing. However, don't assume that microkernel systems exists as a crutch to programmers. That's just plain wrong.

      Yes, it is ..... but that, too, is reality. There will *always* be some stupid git (like I was) who will think he's being smart by taking advantage of that.

      There are many, many instances I can think of where you might want that little extra level of reassurance .... but also many, many times when you *don't*, because it WILL be a crutch.

      It exists as a firewall between users and crappy code. I would also venture to say that its inherent modularity will allow developers to pay more attention to the actual working bits of their code, and spend less time developing kludges and hacks to get their drivers working in a monolithic system.

      First, see above - I'm saying that it will BE a crutch that a lot of programmers will use.

      Second, why do you think that you have to develop "kludges and hacks" to make your driver work with a monolithic kernel, and not with a microkernel? You can have a microkernel with a badly designed system interface, or a monolithic one with a GOOD system interface.

      And 3rd ...... this is the point that bothers me most.

      The thing that matters most about the maintainability of any piece of software - kernel, application, anything - is how it's written and structured. That includes the kernel.

      Just because it's monolithic, doesn't mean it's not well-structured. If you have a good, clean interface, with a well-defined way to interact with the rest of the kernel, then your code will be easy to maintain, and WILL TEND TO BE MORE RELIABLE. Let's say for the sake of arguement (and I'm making no claims here - I haven't seen T's code) that T is the world's worst programmer, and Linus is the best. If T has designed a crappy interface that promotes side-effects, for example, the kernel is gonna suck. Linus' code, however, presents a brilliant interface, simple, robust, all the mechanisms you need, and built in check to make sure you don't hose yourself or anything else. Which would you want in your r/t system?

      Now turn it around .... Linus is the world's worst programmer, and T is god-like. NOW which one would you want to use? And what does either side of that particular coin have to do with micro vs mono? Exactly 0.

      This is how *I* view the microkernel vs monolithic kernel debate. I think the system response issues are mostly overblown and based on out-of-date models (Mach and Minux 1 are definitely out of date microkernels - l4 seems to have response times that are measurably slower, but mostly unnoticable to the end user). I think this is a valuable area of research and I look forward to minux 3 maturing and becoming more usable.

      I think the response times are *somewhat* overblown, but not that much. Look at the anal lengths game players will go to to obtain that extra .5 fps. And when you're talking about somebody running multiple servers, those extra percentage points of performance can make the difference between being able to plan your hardware upgrades on a 5 year cycle or a 3 year cycle .... that means BIG bucks.

      I think the point that bothers ME most about this whole debate is that there *are* other considerations to be taken into account when you're talking about the quality or useability of any piece of software, and T, in his arguements, seems to be focusing on essentially one, and ignoring all others. Even the example he uses - restarting services - is a BAD one, for the reasons presented above, and a major red flag for anybody who's ever had to deal with juniour programmers and try to get them to do things properly.

      The microkernel deals (or tries to deal) with a SUBSET of the types of problems that can affect a kernel. This isn't a bad thing - ther

    10. Re:This debate will never be over... by Gorshkov · · Score: 1

      If you were using a system that had decent support for monitoring and managing daemons, you could have gotten an email with a core dump or whatever mailed to you when the fault first occurred, had the daemon brought back up, and if it continued to fail had the daemon kept down

      DAMN good idea - I really wish I had thought of that one myself.

      ummmm ..... but what would you say if I told you that the daemon I wrote was the mail submission deamon?

      What would have happened in that case is that my nice, reliable, micro-kernel is now hosed because it's too busy dumping core trying to send me core dumps to do anything usefull.

      And that, boys, and girls, IS the point. Restarting daemons is a band-aid, not a solution.

    11. Re:This debate will never be over... by tpv · · Score: 1
      Sigh

      Do we really need to quote the whole article directly just to get you to read it?

      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
      QNX is widely used in real commercial systems. Cisco's top-of-the-line router uses it, for example, and I can assure you, Cisco cares a **LOT** about performance.

      One of the leading operating systems in the military and aerospace markets, where reliability is absolutely critical is Green Hills' Integrity, another microkernel.

      PikeOS is another microkernel-based real-time system widely used in defense, aerospace, automotive, and industrial applications.

      Symbian is yet another popular microkernel, primarily used in cell phones. It is not a pure microkernel, however, but something of a hybrid, with drivers in the kernel, but the file system, networking, and telephony in user space.

      Really, is reading the article that hard?

      --
      Read more of this story at Slashdot.Read more of this story at Slashdot.Read more of this story at Slashdot.
    12. Re:This debate will never be over... by Anonymous Coward · · Score: 0
      I remember years ago (newbie), writing a daemon that kept crashing - massive memory leaks somewhere. Not feeling particularly energetic, I hit upon the idea of sticking it in /etc/inittab so that the system would restart it.

      Anybody here want to guess just how many people shit on me for doing that? "If you have to rely on inittab to restart your programme, FIX IT! IT'S BROKEN! YOU'RE USING A CRUTCH!" etc etc etc.

      Maybe it's just me, but unless T is talking about examining the offending carcass, rewriteing the code (self-modifying code? *gasp*) and then resurrecting the thing, isn't he talking about basically the same thing?

      No, he's not.

      What you're missing is that software is like science: it is always broken (the analogy here is that scientific theories are always wrong but that's another discussion, altogether).

      That is, no matter how hard you try to make your software stable and free of bugs, there will always be a bug in there that makes it less than perfectly stable and secure. Therefore, you have a backup plan for when your less-than-pefect software fucks up. That's all Tanenbaum is advocating...
    13. Re:This debate will never be over... by Gorshkov · · Score: 1

      You're right - it's a backup plan. Too bad it's a bad one.

      It was also a backup plan for me - and it was bad then, too.

    14. Re:This debate will never be over... by sp0rk173 · · Score: 1

      I agree with most of your points, and feel that there is a large amount of arbitrarity in the microkernel vs monolithic kernel debate. It IS indeed possible to design a monolithic kernel well (look at the BSD's, esp. DragonFly). It is also possible to design a monolitich kernel very poorly. It's possible to design a microkernel well and poorly (l4, qnx vs mach). What I disagree with are people who ignore Scientific evidence and replace it with religious dogma, apparent all over this thread.

      So Mr. T says Microkernels are good. So what? Let him live in his world, develop his pet OS that will attempt to make a general purpose microkernel, and see if it works. Until it does or it doesn't, shut up about it! Don't assume it will be crap because your linux-guru friend that you look up to oh so much told you all microkerels are crap (No, i'm not referring to you, but the general sentiment on slashdot). If some dudes want to work on a microkernel, let them work on a microkernel. And in the meantime, read up on the RECENT research before sticking your neck out.

      I also disagree with your characterization of Mr. T's comments towards slashdot. In my experience, most slashdotters have no idea what they're talking about. I happen to agree with his characterization of the slashdot response to the original article he got published in IEEE. Most of it was baseless, and the comments that had a base were mostly founded on old, irrelevant studies.

  80. It's *not* still being debated... by Mr.+Underbridge · · Score: 1
    The very fact that this subject is still being debated is a sign of the chronic immaturity of the computer industry.

    ...it's just that Tannenbaum just won't give the hell up. He and Linus had a flame war about how to design a kernel. For whatever reason, Linus won out in terms of marketshare. Most people would just gracefully let it be. Not Tannenbaum, of course.

    1. Re:It's *not* still being debated... by ObsessiveMathsFreak · · Score: 1

      He and Linus had a flame war about how to design a kernel.

      I read the whole thing and I didn't consider it much of a flame fest. It all seemed very tame and respectable.

      --
      May the Maths Be with you!
    2. Re:It's *not* still being debated... by Anonymous Coward · · Score: 0

      Yeah, and substitute "Linus" for "Tannenbaum" and "Bill Gates" for "Linus" in the above and you would be arguing that Linus was wasting his time working on Linux all these years.

      And your argument would still be wrong.

      Steve

    3. Re:It's *not* still being debated... by Eli+Gottlieb · · Score: 1

      The AC is right, market share does not measure quality. It measures your ability to make people run your system, which (as Windoze abundantly shows) has nothing to do with quality.

    4. Re:It's *not* still being debated... by Mr.+Underbridge · · Score: 1
      I read the whole thing and I didn't consider it much of a flame fest. It all seemed very tame and respectable.

      This whole thing dates back 10 years. Both parties (Linus and Tannenbaum) have had some fairly unpleasant things to say about each other.

    5. Re:It's *not* still being debated... by Mr.+Underbridge · · Score: 1

      That's not my point. My point isn't that Tannenbaum should give up his research, but the constant anklebiting at Linux.

  81. But does anyone on ./ care??? by MoxFulder · · Score: 1

    Does anyone on slashdot actually WANT to have uncrashable hardware? NO! Most of us love tweaking our hardware and puttering around with the BIOS settings and rebuilding our kernel just for fun, etc. My computer has never kernel panicked (that I can remember), but I reboot it every few days with a new kernel.

    1. Re:But does anyone on ./ care??? by Jeremi · · Score: 1
      Does anyone on slashdot actually WANT to have uncrashable hardware?


      I certainly do. My computer is supposed to solve problems for me, not the other way around. Life is too short to spend time fiddling with widgets for fun. I want to work on my work, not on fixing unnecessary problems with my computer.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    2. Re:But does anyone on ./ care??? by bogado · · Score: 1

      Microkernels have the promisse of mendling with lower level stuff without even have to reboot, since those things would be in the 'user space'. That would be nice.

      --
      []'s Victor Bogado da Silva Lins

      ^[:wq

    3. Re:But does anyone on ./ care??? by sp0rk173 · · Score: 1

      Except, most of the stuff you would mess with would be in userland in a microkernel (the actual kernel would just be an interface to which things like filesystems, audio and video subsystems, etc talk to). So, you could still mess with it, tweak it...and not have to reboot. That is, to me, a huge plus of microkernels. Say a new audio subsystem is in development to replace Minix 3's implementation of OSS. Want to try it? Compile the server, unload the OSS server, load up the new server, boom. You're done. No rebooting. No recompiling the entire kernel for the low-level hooks needed to make it work. Want to try a new VM subsystem? Same deal.

      Why wouldn't slashdotters want that? Oh, right. Because linus says it's wrong.

    4. Re:But does anyone on ./ care??? by MoxFulder · · Score: 1

      I agree on all points :-) Well said!

      My original post was meant to be half-joking. The point I was trying to make is that Slashdot readers in generally are a lot more enthusiastic about messing around with operating systems and such that average people. Which I think explains why the promise of a small increase in reliability might not have impressed the readers of this article too much.

      Although your points indicate why this increased operating system reliability and flexibility would actually be just what a lot of hackers are looking for! So ya, good post!

  82. Apples and Oranges by C_Kode · · Score: 1

    I think they are apples and oranges. Both have good offerings depending on what you want it for.

    Microkernels are secure by separation. It also slows them down. Tanaenbaum notes Cisco using QNX and how fast it is. It also basicly does one thing. Networking. Desktop and even servers that run complexed software (Oracle DB, app servers, etc) require much more that just networking and routing. You had to do a lot of tweaking. Thats why OSX isn't a pure Microkernel. It's also why you would be nuts to run a huge server application on it. Your performance would be $hit comparatively. QNX is used mostly in enbedded systems right? Not full blown multi-dimensional equiptment. (ie PCs that do more than just route traffic, or tally register receipts) Don't get me wrong, QNX is a great OS and does (IMHO) a better job at what is does than any other OS could. I just wouldn't install it on my desktop or server. On my hardware devices? Sure!

    Monolithic kernels are for all-purpose use. Well, let me work that as.. "Better suited for all-purpose use". They get better performance when that range of uses grows and thats why I beleieve they are better suited for servers and desktops rather than embedded systems. (it's also why you need a reset button on computers and not devices... except for the fact that my Cisco routers have them. Ha!)

    It's just my don't know $hit about kernels (2) cents

  83. Hypervisors - real microkernels... by violetlight · · Score: 1
    uKernels are a great idea, but perhaps they are sitting on the fence.

    The combination of Xen and Linux provide the fields on either side of the fence, and these are likely to be more fertile.

    Hypervisors are real uKernels to me. They achieve many of the original objectives, but aren't presumptive enough to assume that service can be retained when the content of a particular partition (personality) gives up. One driver crashes in a Xen/Linux combo, you lose that virtual machine, but retain all the others. In-machine clustering saves you from service death. The system reboots and you carry on. Better than trying in vain to recover from a user space driver failure on something critical like the SCSI bus.

    Cheers Simon.

  84. Re:Obsolete Computing Technology by Anonymous Coward · · Score: 0

    Yeah, yeah, we're all waiting. Stop bullshitting and bring out the fucking flashlight.

  85. Re:Nothing's better than real challenge by VincenzoRomano · · Score: 1

    Well, both Minix3 and Linux run on real hardware.
    As a proof of concept I'd like to see both (groups):
    1. agree on a "standard architecture"
    2. agree on a "standard evaluation" for performances and reliability
    3. agree on a "normalized amount of deveopment resources"
    4. go and implement each his own proof of concept
    5. measure performabces and reliability

    Apart of points #2 and #5 that I see rather hard, this can be accomplished even if they don't agree. A community based juree could define the relevant steps and do the measurements.
    My own experience says that sometimes 1 test is worth more than 1 thousand theories.
    This is what I call "challenge".

    --
    Maybe Computers will never be as intelligent as Humans.
    For sure they won't ever become so stupid. [VR-1988]
  86. Re:Oh Tanenbaum, oh Tanenbaum, wie grün sind by Anonymous Coward · · Score: 0

    You've fulfilled my dream of posting oh tanenbaum.

    Thank you sir.

  87. Microkernel versus monolithic by Cthefuture · · Score: 1

    Until we have much more processing power (eg. quantum computing or other highly parallel machines) then microkernels will always take the back seat.

    Monolithic just works better performance-wise on current hardware (which is mostly a couple of limited performance Von Neumann processors).

    For future generations of hardware that actually have decent performance we may see things like microkernels really shine since they are designed to more easily break things into small units and do lots of work in parallel.

    --
    The ratio of people to cake is too big
  88. Re:"Cars don't have reset buttons." My Prius does. by Fulcrum+of+Evil · · Score: 1

    Again, the original point is that you CAN and SHOULD design an operating environment that allows for unforseen user software to be installed, and devices to be supported, without the entire system ever crashing.

    What's that got to do with the Prius?

    --
    "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  89. Still proves a counterpoint by Sycraft-fu · · Score: 1

    Yrs QNX is everywhere... Except desktops. You find it in embedded systems and such. The thing is, if you try the QNX desktop demo (rather neat by the way, it fits on a floppy) you find it's very slow. The whole, ultra reliable, RTOS thing ends up having a ton of overhead compared to Linux or Windows or OS-X. It's good at what it does, but give it a try, you'll find yourself migrating back to your favourite Linux shortly.

    Here's the other problem: For many (most?) people computers DON'T crash. This concept that drivers in kernel space is inherantly problematic is flawed. Sure it CAN cause problems, but it doesn't have to. Take my mom and dad for example. Each has a computer running Windows XP. They've got standard, reliable hardware that's got good drivers. They use their systems for simple tasks. They don't fuck around with the internals and so on. Result? Their systems never crash. I mean never. They just work perfectly, and both are very happy about it. If I wanted, I could put Linux on there with it's even more monolithic kernel, and have the same results.

    Problems with kernel mode stuff only tends to result when you have lots of it, and when it's not properly test. When you don't abuse your system and use only good drivers on good hardware, it's just not a problem.

    Also I don't see how a microkernel is a real improvement. Ok so instead of my system going down my device just crashes all the time. Wonderful. You get situations like ATi with their Catalyst drivers. If their GPU hangs (something it should never do) the drivers kick it in the head. Nice in theory, but it seems to mean they half-ass their drivers a bit more. World of Warcraft has a document problem that's STILL not fixed last I checked where in certian areas of the game it causes a GPU reset. That hacks everything up and either crashes the game, or screws the graphics up so you have to quit and reboot anyhow.

    The real answer is just good drivers that don't cause problems. Then it doesn't really matter if you choose to load them in kernel mode or not.

    1. Re:Still proves a counterpoint by nonmaskable · · Score: 1

      "Also I don't see how a microkernel is a real improvement."

      Well, the self-healing stuff is supposed to prevent this. And I actually had MkLinux (linux hosted on Mach) personality servers that could recover from various crashes. It was pretty neat. Problem is that you (often) have to implement complex error handling code all the way up the software stack to take advantage of it (your WoW example shows why it doesn't work otherwise).

      Lots of expensive enterprise software doesn't even check return values from system calls, so I don't hold out much hope for it becoming pervasive.

    2. Re:Still proves a counterpoint by Sycraft-fu · · Score: 1

      I guess I would argue that rather than spending all the time implementing the recovery handling, just implement good drivers that don't break. We know it can be done, hell there's Linux and BSD boxes with uptimes in the YEARS. That seems to me the smart way to do it. Make drivers that doesn't crash in the first place, and just don't worry about it.

    3. Re:Still proves a counterpoint by vidarh · · Score: 1

      That was exactly the argument people used to use against MMU's too: Just write correct software. Unfortunately humans are fallible.

    4. Re:Still proves a counterpoint by Anonymous Coward · · Score: 0

      I don't mean to slam on your argument without specific points, but I'll just put to you one simple fact: in my playing with the QNX demo, I was shocked by its desktop performance in comparison to popular desktop configurations on *NIX environments - shocked because it was great on even older hardware! The feeling of responsiveness just blows with anything besides OS X/Windows/QNX, and until significant efforts to increase the feeling of actually having the hardware you paid thousnads of dollars for in your box when you load up GNOME or KDE, the Linux desktop will remain a tinker toy. The average person is not going to run fluxbox so he can feel like he has the same performance he does in Windows. Perceived desktop speed is important, and when even QNX, a specialty OS not designed for anything near a desktop beats you, well, you have a serious issue. That being said, I support Linux and hope it pulls through to produce a functional, appealing, and hasty desktop in the near future. I just don't see it working out that way as is.

    5. Re:Still proves a counterpoint by Anonymous Coward · · Score: 0

      > The real answer is just good drivers that don't cause problems. Then it doesn't really matter if you choose to load
      > them in kernel mode or not.

      Bingo. And in my experience, driver development for QNX4 is easier than for Linux because:

      a) The interfaces between drivers and the rest of the system are well documented and don't change willy-nilly every
      so often (it does help to spend the time to do your driver interfaces right the first time, you know), though to be fair
      this is not a micro- vs. monolithic kernel issue.

      b) Since drivers run in user space, it is trivial to run them in the debugger,

      c) And finally, since drivers run in user space, fully protected from other parts of the system, programming errors
      in your driver won't force you to reboot (unless you forget to reset interrupt requests). This saves lots of time
      during development that you can use to actually find the bugs in your code.

      So to sum this up, I would be more confident of being able to write correct driver code for QNX than I would be for
      Linux.

  90. Re:"Cars don't have reset buttons." My Prius does. by Miniluv · · Score: 1

    Directly? Nothing.

    Indirectly? Very little.

    Tangentially? A lot.

  91. needing the reset button by Anonymous Coward · · Score: 0
    I really wish stereos didnt need reset buttons, the problem is that they dont have them. Even a silly paper-clip port would work. Either that or good programmers, nothing like watching my dads stereo convulse as he takes his ripped .WMA files and tries to play them in his new cars mp3 player.

    Anonymous, so RIAA doesnt datamine this 20 years from now.

  92. Not sure, looks like it's still a byte copy by Sits · · Score: 1

    All I can say having quickly flipped through the book is that there are send and recv and notify primatives. Notify fiddles a bitmap and send/recv work on fixed size messages and require the receiver to be waiting when the sender sends a message. I'm guessing that bytes are still copied.

    Any chance you can narrow where this would be down to a filename? : )

  93. Alternative: write the OS in Java by Hugo+Graffiti · · Score: 2, Informative
    Seriously. Maybe not Java itself, but a kind of system level version of Java. Andy Tanenbaum says:

    Once you have decided to have each module keep its grubby little paws off other modules' data structures, the next logical step is to put each one in a different address space to have the MMU hardware enforce this rule.

    You only need to do this if you're writing both kernel and application code in a language like C that allows arbitrary access to the entire address space. But imagine if everything was written in something like Java that doesn't have pointers. You might not even need a "kernel" as such, everything could run in supervisor mode - the protection would be provided by the language, not by MMU hardware.

    In case you think this is all pie in the sky, check out JNode which is an OS written in Java.

  94. The truth about microkernels by Animats · · Score: 5, Informative
    The real truth about microkernels is about like this:

    • Getting the architecture of a microkernel right is really hard. There are some very subtle issues in how interprocess communication interacts with scheduling. If these are botched, performance under load will be terrible. QNX got the performance part right. Mach got it wrong. Early Minix didn't address this issue. See this article in Wikipedia. Other big issues include the mechanism by which one process finds another, and how mutually mistrustful processes interact. If you botch the basic design decisions, your microkernel will suck. Guaranteed.
    • Most academic attempts at microkernels have been duds. One can argue over why, but it's the commercial ones, like QNX, VM, and KeyKos that work well, while the academic ones, like Mach, EROS, and the Hurd have been disappointing.
    • Security models really matter. And they're hard. Multics got this right. KeyKos got this right. QNX is no better than UNIX in this area. Designers must work through "A can't do X, but A can trick B into doing X" issues.
    • Trying to turn a monolithic kernel into a microkernel doesn't work well. Mach, which started life as BSD UNIX, ran into this problem, which is why MacOS X isn't based on the microkernel version of Mach.
    • Drivers in user space have real advantages. Not only is the protection and restartability better, but because they have access to all the regular user program facilities, drivers for more modern devices are much easier. Things like Firewire and USB device discovery and hot-plugging reconfiguration are far easier at the user level, where you have threads, can block, and can call other programs. The old "top half and bottom half" driver approach doesn't generalize well to today's more dynamic configurations. Monolithic kernels have had to add kernel threads and dynamic loading of modules to handle all this, resulting in kernel bloat. Of course, a big advantage of less-privileged drivers is blame management - you can tell whether the OS or the driver is at fault.
    • Startup requires more attention. A microkernel often doesn't contain the drivers needed to get itself started. So the startup and booting process is more complex. QNX has a boot loader which loads the kernel and any desired set of programs as part of the boot image. This gets the console driver and disk driver in at startup, without having to make them part of the kernel.
    • The performance penalty is real, but not that big There's a performance penalty associated with the extra interprocess communication. It's usually not that big, but there are areas where it's a problem. If it takes one interprocess call for each graphics operation, for example, performance will be terrible. NT 3.51 had a nice solution to this problem, designed by Dave Cutler. (NT 4 and later have a more monolithic kernel, but that had to do more with making NT bug-compatible with Windows 95 than with performance problems.)
    • I/O channels would help IBM mainframe channels, which have an MMU between the peripheral and main memory, are better suited to a microkernel architecture than the "bus" model the microcomputer world uses. In the mainframe world, the kernel can put program in direct communication with the hardware without giving it the ability to write all over memory. So there's little penalty for having drivers in user space. Which is why VM for IBM mainframes has been doing this for decades.
    • If you get it right, the kernel doesn't change much over time. This is the big win, and why microkernels become more stable over time. In the QNX world, USB and Firewire support were added with no changes to the kernel. (I wrote a FireWire camera driver for QNX, so I'm sure of this.) The IBM VM kernel has changed little in decades.

    So that's what you need to know about microkernels.

    1. Re:The truth about microkernels by BitchKapoor · · Score: 2, Interesting

      I/O channels would help IBM mainframe channels, which have an MMU between the peripheral and main memory...

      I've heard from a friend at Intel that their new chipsets which fully support TCPA have this feature. So maybe trusted computing isn't just about copy prevention.

    2. Re:The truth about microkernels by Animats · · Score: 1

      Actually, Intel has tried several times to change the I/O interface, but they usually interpose some proprietary programmable I/O controller between the peripheral and memory, which means that drivers need to be written for the controller/device combination. Then Microsoft gets upset because Intel is moving onto their turf. Then Intel backs down.

    3. Re:The truth about microkernels by jelle · · Score: 1

      You list only two advantages and a long list of disadvantages. And for the "Drivers in user space have real advantages", you don't need a microkernel (e.g. FUSE and USB drivers in Linux), and how it's done in Linux, the 'bloat' (if any) is no worse than that of a driver on a microkernel.

      The other advantage "If you get it right, the kernel doesn't change much over time." holds for driver interfaces in unified kernels too, and for both the problem is in the 'if you get it right'.

      The "In the mainframe world, the kernel can put program in direct communication with the hardware without giving it the ability to write all over memory." would equally help unified kernels.

      Microkernels may be very interesting academically, but it really does not offer anything that can't be done equally well with a unified kernel.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
  95. Still, on availability and usability by microbee · · Score: 3, Insightful

    Before we get into arguments or understanding arguments, two most important things to note:
    - AST is a prefessor. His interest in doing research and building the best systems for the *future* that he believes in.
    - Linus is an engineer. His interest is building a system that works best *today*.

    We simply need both. Without pioneering work done before in other OSes (this included failures), Linux wouldn't have been like this today. The greatest reason for its success it not it's doing something cool, but it's doing things that are proven to work.

    So who is right? I'd say both. Linus has said this in 1992: "Linux wins heavily on points of being available now."

    Linus admits microkernels are "cooler", but he didn't (doesn't) believe in it *today* because none of the available microkernels could compete with Linux as a *general purpose* OS. It's funny how AST listed "Hurd" as one of the microkernels - it totally defeats his own arguments. The fact is Hurd is still not available today despite it was started before Linux.

    Many people talk about QNX. Sure, in many cases (especially mission critical, RTOS, where reliablility is so much more important than performance and usability) microkernels are better, but we really shouldn't compare a general-purpose OS with real-time or special purpose OS.

    So we go back to the old way: code talks. So far microkernel proponents keep saying "it's possible to do microkernel fast, etc" but the fact is they have never had an OS that could replace Linux and other popular OS that everybody could run on their desktop with enough functionality. There are two possible reasons:
    1. Lack of developers. But why? Do people tend to contribute to Linux because Linus is more handsome (than Richard Stallman that is)? There gotta be some reasons behind it other than oppotunities right?
    2. Monilithic kernels are actually more engineerable than microkernels, at least for today.

    Maybe 2 is actually the real reason?

    Think about it.

    1. Re:Still, on availability and usability by lederhosen · · Score: 1

      Why do more people learn english than esperanto?

    2. Re:Still, on availability and usability by nathanh · · Score: 1
      - Linus is an engineer. His interest is building a system that works best *today*.

      Linus is not an engineer. He is a software programmer. The entire point of this "debate" [ed: there is no debate] is that AST wants to introduce engineering concepts into the construction of operating systems. AST is the engineer; specifically he is advocating system engineering principles. Linus is not the engineer; he's at best the mechanic.

      It's funny how AST listed "Hurd" as one of the microkernels - it totally defeats his own arguments. The fact is Hurd is still not available today despite it was started before Linux.

      The only funny things here are that you think the Hurd isn't available (hint: it is) or that it's hypothetical lack of availability would defeat AST's arguments (hint: it wouldn't).

    3. Re:Still, on availability and usability by BigPoppaT · · Score: 1

      Um, because English has been around longer than Esperanto? So this is a horrible analogy, since Hurd has been around longer the Linux. Please try again.

    4. Re:Still, on availability and usability by Anonymous Coward · · Score: 0

      For a moment, I thought this was one of those typical Grammar Nazi posts, until I realised that to be truly snarky, you'd have to say the opposite. :-)

    5. Re:Still, on availability and usability by evilviper · · Score: 1

      Monolithic kernels, and their programming model and concepts, have been around far, far longer.

      --
      Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
    6. Re:Still, on availability and usability by evilviper · · Score: 1
      Many people talk about QNX [...] but we really shouldn't compare a general-purpose OS with real-time or special purpose OS.

      Okay, then lets compare Linux (a general-purpose OS that runs on PC hardware) to QNX (a general-purpose OS that runs on PC hardware).

      See: http://get.qnx.com/

      but the fact is they have never had an OS that could replace Linux and other popular OS that everybody could run on their desktop with enough functionality.

      Oh? How about L4Linux? I know this is /., but did you even READ the F'ing Article?

      Think about it.

      No.
      --
      Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
    7. Re:Still, on availability and usability by Viol8 · · Score: 1

      "Hurd isn't available (hint: it is)"

      Really? Is it a usable OS with applications or is it still the useless
      piece of academic-interest-only piece of pre-alpha code its been for
      the last 15 years?

    8. Re:Still, on availability and usability by nathanh · · Score: 1
      "Hurd isn't available (hint: it is)"

      Really? Is it a usable OS with applications or is it still the useless piece of academic-interest-only piece of pre-alpha code its been for the last 15 years?

      In either case it is available. You are attempting to change your claim from "it is not available" [ed: you are wrong, it is available] to "it is not fit for my purpose". I can't comment on your purpose, but I can comment that Linux is not fit for purpose for 99% of the computing world either. So is Linux an academic-interest-only piece of pre-alpha code as well?

    9. Re:Still, on availability and usability by Crackez · · Score: 1

      I wonder, has there ever been a design document for the Linux kernel prior to implementation? More engineerable sounds to me slightly hacked together. Really the whole idea of open source flys in the face of software engineering.

      A good uKernel has to be designed well; perhaps that also explains why open source uKernels suck compared to the commercial designs.

    10. Re:Still, on availability and usability by Viol8 · · Score: 1

      >You are attempting to change your claim from "it is not available"

      Well actually I wasn't the granparent poster so I'm not claiming anything
      other than Hurd is nothing more than some academics wet dream of what an OS
      should be like rather than what business and the consumer actually want.
      (ie something that simply runs applications fast and reliably and can be
      networked).

      >but I can comment that Linux is not fit for purpose for 99% of the computing world either.

      Yeah , whatever. Meanwhile , back in the real world...

    11. Re:Still, on availability and usability by nathanh · · Score: 1
      Well actually I wasn't the granparent poster so I'm not claiming anything

      Well yes, you are. When you questioned my truthful statement that the Hurd is available with your obviously rhetorical question "Really?" you are making a claim by contradiction.

      > but I can comment that Linux is not fit for purpose for 99% of the computing world either.

      Yeah , whatever. Meanwhile , back in the real world...

      Back in the real world the majority of computers do not run Linux and the majority of people do not want Linux. I do. You do. Most people don't. So all I was doing was highlighting the absurdity of your false dichotomy - either it's an "useful OS with applications" or it's a "useless piece of academic-interest-only piece of pre-alpha code" - which apparently you think is a perfectly reasonable summary of the only two possible conditions possible for an OS. I'm showing you that the world isn't so black and white.

      But why am I trying to explain logic to what seems to be an intellectually challenged Valley Girl. "Well like, yeah, like, whatever".

    12. Re:Still, on availability and usability by Viol8 · · Score: 1

      "truthful statement that the Hurd is available"

      It might be available , but so what? You could have downloaded that
      sorry excuse of an OS since the early 90s. The implication was its available
      and *useful*. I very much doubt the latter is true other than perhaps for
      discussion in a academic enviroment.

      "Back in the real world the majority of computers do not run Linux and the majority of people do not want Linux."

      Most people don't *want* any particular OS, they just want something that
      will run TheirAppsOfChoice. Linux is useful since it will run a lot of standard
      apps that normal people can use as well as being a back end server system.
      Whether or not a lot of people actually use it is another matter. The fact
      is it CAN be used as such. Can Hurd be used as a general purpose desktop
      system yet? Err , I think not. Therefore , for most people its useless. QED.

    13. Re:Still, on availability and usability by lederhosen · · Score: 1

      You did both missunderstand me. English is spoken by far more people, that was what I ment, in the same way Linux is used by far more people than linux. That does not make Esperant a bad language, nor does it make the Hurd a bad idea.

  96. Lack of threading is a benefit. by Russ+Nelson · · Score: 1, Interesting

    The other big issue is a lack of threading support.

    Threading is the spawn of the Solaris. Oops, I mean the devil. Forking was so slow on Solaris that they had to invent threading to have multiple contexts run at any speed. The whole point behind a microkernel is to HIDE information. Threading EXPOSES information between separately running processes, so you need to have mutexes, semaphores, and all of that synchronization crap that makes for buggy code.

    Threading is bad. Don't use it. When you have to use code that uses it, refactor the code to use processes or a state machine. It can be done. Don't whine. But don't use threads either.

    --
    Don't piss off The Angry Economist
    1. Re:Lack of threading is a benefit. by AKAImBatman · · Score: 1

      Threading is bad. Don't use it. When you have to use code that uses it, refactor the code to use processes or a state machine. It can be done.

      I'm sure that it *can* be done. But that doesn't help us get the MASSIVE chunk of UNIX software built for MINIX. For example, I'm trying to build FOX for a GUI since I can't get GTK+ built. It won't build without pthreads.

      If Minix wants to remain compatible, it should implement green threads at a minimum. If it wasn't ever intended to be compatible, then it shouldn't have implemented the UNIX/POSIX design. Mr. Tanenbaum could have looked into a brand-new kernel design that was better suited to microkernel design than Unix. But he didn't. So, pthreads are a requirement.

    2. Re:Lack of threading is a benefit. by Anonymous Coward · · Score: 0

      Okay sport, enlighten us: How else do you suggest scaling a single process across 10s of processors without threading? And no, SHM and semaphores aren't a better solution.

      You sure know better than e.g. the people from Mental Images who have been writing multi-threaded raytracers for 10 years.

      Russ you usually make intelligent posts, yet sometimes you resort to this semi-retarded crap. I love your glasses by the way :)

    3. Re:Lack of threading is a benefit. by SmokedS · · Score: 1

      Threads have their place, processes have their place.

      A programmer that really cares about reliability and responsiveness will ensure that any code that may stall, such as network call etc, run in a separate thread so that it can be monitored for timeouts in a reasonable fashion, and so that it does not freeze the UI if the app has one. I would hate to see my webbrowser fetch just one item at a time from the net, and if MySQL forked a new process for each query to process.... well, that would... not be a good idea ;)

    4. Re:Lack of threading is a benefit. by SmokedS · · Score: 1

      Also, as Moore's law is still going strong while CPU clock scaling is stalling we will, as you may have heard, see more cores on upcoming CPUs rather than faster cores. This means that we will be seeing a minor revolution in how software is built. It will become inpossible to write software with competitive performance without using threads.

      The problems you (Russ) brought up are very real though, and there are several research projects in progress to try and adress them with "new" abstractions. One among many that is working on this is Herb Sutter, who gives his view on the matter here

    5. Re:Lack of threading is a benefit. by Richard+Steiner · · Score: 1

      Threading on SOME operating systems works properly (e.g., OS/2 2.0 and later). It makes a fairly large difference in the "feel" of an application when it can spin off threads to handle the UI in the foreground while other stuff is being done in the background.

      Too many people only have experience with broken threading models, which is sad...

      --
      Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
      The Theorem Theorem: If If, Then Then.
    6. Re:Lack of threading is a benefit. by renoX · · Score: 1

      >and no, SHM and semaphores aren't a better solution.

      I'd say they are: by default processes are share nothing and you explicitly have to put what you share in SHM, whereas thread are by default share everything.
      IMHO explicit sharing is better.

      Plus I think that message passing between processes is not necessarily worse in performance than threads or memory sharing especially when you have 10s of procs as they can't share the memory, otherwise the memory becomes a bottleneck, so the memory must be partitionned and it isn't 'true memory sharing' anymore even if it appears so.

    7. Re:Lack of threading is a benefit. by jelle · · Score: 1

      "Threading is bad. Don't use it. When you have to use code that uses it, refactor the code to use processes or a state machine. It can be done. Don't whine. But don't use threads either."

      Pfft. Quit wasting cycles and memory. No form of ipc has better bandwidth than shared memory. Threading is the easiest way to share a heap. Splitting a threaded process to processes usually costs you memory (because a single word of memory write causes the whole page to be copied (copy-on-write)).

      "so you need to have mutexes, semaphores, and all of that synchronization crap that makes for buggy code."

      Don't hate it because you don't know how to use it. Mutexes and semaphores doth not make a program buggy.

      Stop whining yourself.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    8. Re:Lack of threading is a benefit. by Russ+Nelson · · Score: 1

      Mutexes and semaphores doth not make a program buggy.

      Some things are simply hard to use. Hard to use means hard to get correct. Hard to get correct means that, with a finite effort available to invest, there will be more bugs in threaded code than in non-threaded code.

      --
      Don't piss off The Angry Economist
    9. Re:Lack of threading is a benefit. by Anonymous Coward · · Score: 0

      I have an enormous amount of respect for you and what you have achieved but..no. Todays world is full of interactive computing on fast machines with whiz bang effects all over the place. Threading is the only way to achieve a responsive system and introduce some concurency into things. This is even more true with cosnumer level multi-core processors, where multi-threading can give you some real world performance benefits.

      I'd hate to try to write a responsive GUI using a state machine. Hell, I'd hate to try and factor that code to even get it to work. Threading is simple, easy to understand and safe provided you understand what a critical section is. "Synchronization crap" is just hogwash; learning to lock during critical sections is simple and easy to learn. I've written multi-threaded device drivers with very little effort. Please don't treat threading as some sort of voodoo.

    10. Re:Lack of threading is a benefit. by jelle · · Score: 1

      "Some things are simply hard to use. Hard to use means hard to get correct."

      It's like math. Math is hard to use, but it's actually the only thing in existance you can absolutely guarantee correctness for. If you study math and excercise math, then you will learn how to use math and use it correctly.

      Mutexes and semaphores are not hard when you understand how to use them. The problem with mutexes and semaphores is that a lot of people (try to) use them (often incorrectly) without really understanding them.

      If once in your career you take the time to learn them and really understand what they do and what they don't and what are good ways to use them, they are not hard anymore.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    11. Re:Lack of threading is a benefit. by Nevyn · · Score: 1

      Again ... if this was true then the patches for the Linux or FreeBSD kernels wouldn't be full of deadlock and race condition fixes. And coverity wouldn't be finding 1000s of bugs in both ... but yet there are, and they do.

      So, either you consider yourself much better than any of the top Linux kernel developers ... or you are just lying to yourself.

      --
      ustr: Managed string API with ave. 44% overhead over strdup(), for 0-20B
    12. Re:Lack of threading is a benefit. by jelle · · Score: 1

      Well, call people a liar. If that's what you want, fine, go hate people who don't have trouble being effective with mutexes and semaphones. If that makes you feel better, go ahead.

      If you think that everything what source analysis tools such as coverity return are bugs, then you don't know how source analysis tools work and how they should be used.

      Otherwise, I will explain here why I said that mutexes and semaphores are not inherently difficult to get absolutely right.

      PP of the thread suggested that using threads is bad, he/she said never to use threads and to always separate it in processes. That is just a completely ill-advised assertion

      The level of synchronization and communication bandwidth you _can_ get for processes is much less than what you can get for threads, and it doesn't even come close to the requirements for the in-kernel synchronization issues.

      In the kernel, the people want to get the absolute best performance with as much parallelism as possible. You're talking about multiple kernels (SMP/NUMA) talking to the same hardware from totally different contexts where is it very important to keep the locks as short as possible to keep latencies low.

      The deadlocks and races that you refer to didn't exist until after they moved from a global kernel lock to very fine grained locking.

      Point is: It's as complicated as you make it, and for very decent synchronization and communication performance at a level much higher than what you can get between processes, you don't have to make it even close to as complicated as in-kernel synchronization. Using mutexes and semaphores in threads is actually very simple.

      For threads, the locking/synchronization requirements are such that using some very simple synchronization techniques, it is very simple to get great performance that beats any IPC method that you can do between processes (except shared memory).

      I have done it, seen it, used it and it works really well.

      People who suggest not using mutexes and semaphores because they consider them difficult simply avoid learning how to be effective using them.

      And when I point that out, I get called a liar? Go figure.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    13. Re:Lack of threading is a benefit. by Nevyn · · Score: 1
      Well, call people a liar. If that's what you want, fine, go hate people who don't have trouble being effective with mutexes and semaphones. If that makes you feel better, go ahead.

      Take it personally if you want, I don't care. You are saying that water flows uphill when all evidence is to the contrary ... feel free to not like me, or reallity.

      PP of the thread suggested that using threads is bad, he/she said never to use threads and to always separate it in processes. That is just a completely ill-advised assertion
      ...
      The deadlocks and races that you refer to didn't exist until after they moved from a global kernel lock to very fine grained locking.
      ...
      Point is: It's as complicated as you make it, and for very decent synchronization and communication performance at a level much higher than what you can get between processes, you don't have to make it even close to as complicated as in-kernel synchronization. Using mutexes and semaphores in threads is actually very simple.

      For threads, the locking/synchronization requirements are such that using some very simple synchronization techniques, it is very simple to get great performance that beats any IPC method that you can do between processes (except shared memory).

      You start with: "deadlocks and races didn't exist until they used threading" ... Duh, but fine, I'll give you that. But then you magically get to "just a little bit of threading is amazingly fast, and totally reliable" ... do you have any data for that?

      You can keep saying water goes uphill ... but until I see some data both myself and reality will keep pointing out the obvious:

      • 1. FACT: Oracle and postgres both use a process model with explicit sharing, and are considered extremely fast (much faster, more reliable and have more features than MySQL which uses the threading model, in fact).
      • 2. FACT: thttpd / lighttpd / and-httpd are extremely fast web servers (beating netscape, IIS, etc. which are threaded).
      • 3. FACT: apache-httpd uses a single process per. connection and even that is "fast enough" most of the time, but again it has beaten those "extremely fast" threaded designs in at least some benchmarks.
      • 4. FACT: While some Coverity errors are false-positives, it is still finding a huge amount of real errors in projects it is running on ... and one of it's biggest assets is that it can "understand" locking rules and show flaws in them (and companies are buying it just for this ... because no human can get it right all the time).
      • 5. FACT: kernel developers have a huge advantage for threading, in that they can create their own primitive interfaces (you're stuck with pthread, unless you are totally insane) and have a much higher collective threading knowledge than pretty much any other project ... and still they are failing, again and again.
      • 6. FACT: out of the "user space" applications that I use which are threaded (firefox, pan), I repeatedly see threading related bugs ... these just don't need "amazing" performance, but it'd be nice if they didn't crash/deadlock.
      • 7. FACT: as soon as you "just add a little bit" of threading to an application, you can't just consider the code inside the mutex you have to consider one thread inside and as many other threads as possible in as many other places as possible in your code.

      On top of that, I've spoken to enough younger programers who have been told "threading is easy" and believed it but produce crap, and of course it "seems to work" so they happily continue with their fantasy that threading is easy and tell even more people of their new toy.

      --
      ustr: Managed string API with ave. 44% overhead over strdup(), for 0-20B
    14. Re:Lack of threading is a benefit. by Anonymous Coward · · Score: 0
      No form of ipc has better bandwidth than shared memory. Threading is the easiest way to share a heap.

      You want to use your entire heap as IPC memory!?!?!!!

      Shared Memory IPC, can be done just as effectively and easily with processes and shared-memory as they can with threads -- and *far* more safely, because you're only sharing the objects/buffers/whatever that you are intending to share.

      With Threading you're sharing everything that's *not* being used for IPC as well, which is, frankly, rather insane from a safety point of view.

  97. Re:uKernels are unnecessary for anything not embed by Russ+Nelson · · Score: 1

    Oh, please, don't remind me how old I am!

    --
    Don't piss off The Angry Economist
  98. Re:Still Debating by galvanash · · Score: 4, Informative
    NT is a hybrid. It has Microkernel facilities that are constantly being used for something different in each version. Early versions of NT were apparently full Microkernels, but this was changed for performance.

    No-no-no-no-NO! I swear this kills me... Why does this myth continue to propogate? The ONLY thing about NT that was EVER uKernelish was that it did alot of IPC (message passing) and that it implemented "personalities" (but it did so in a most decidedly non-microkernel way). Both of these traits were commonly associated with microKernels at the time, but regardless the things that ACTUALLY make a kernel a microKernel never existed in NT... EVER...

    1. All drivers that touched an I/O port HAD to be implemented in kernelmode. That restriction goes back to the original NT 3.1 release and was NEVER otherwise.
    2. Although filesystems are modular to a certain degree, the nuts and bolts of all filesystems have to be implemented in kernelspace.
    3. While initially GDI device drivers (i.e. graphics and printing) were implemented in userspace, this concept was thrown out in NT4. Btw, there was nothing especially microkernelish about this; X is implemented in a similar way to the pre-NT4 GDI as far as that goes. Graphics and printing after all are not generally an esential function of an OS from a functionality perspective.
    --
    - sigs are stupid
  99. Re:Still Debating by wootest · · Score: 1

    Didn't Andrew just list a bunch of microkernels in TFA and address points like yours specifically? (He points out exactly that OS X and NT are not microkernel-based, for example.)

    I for one am very interested in how MINIX-3 will turn out. Actually, I can't even believe this discussion is being held - if MINIX-3 does turn out to be a good alternative, we all win, right? And if it doesn't, no harm done, right? In any case the world knows more about how microkernels work and don't work, and can apply those lessons to, say, Linux.

  100. But it's been done, long ago by Anonymous Coward · · Score: 0
    Why not doing a "proof of concept" instead of battling? It seems that a real world challenge would put an "end" to this story.

    But we have already had that. Linux showed that a monolithic kernel could be implemented relatively easily, extended relatively easily, and made secure.

    The HURD project showed that getting a microkernel to work well is a really difficult project. So difficult that despite starting years before Linux, it never really became usable.

    Academics are often slow to notice the real world. This "debate" was dead and buried long ago. It's just that the academics have yet to catch up.

    1. Re:But it's been done, long ago by jejones · · Score: 1

      Linux indeed showed that a monolithic kernel could do all that... but is it really true that just because HURD is impractical, all microkernel-based OSs are impractical?

  101. Re:Performance Hit of uKs unacceptable for most us by metamatic · · Score: 2, Insightful
    Okay, I spent 2 years working as a engineer in the OSF's Research Institute developing Mach 3.0 from 1991. Let me answer Linus's question in a simple fashion. What Mach 3.0 bought you over Mach 2.5 or Mach 2.0 was a 12% performance hit as every call to the OS had to make a User Space -> Kernel -> User Space hit. This was true on x86, Moto and any other processor architecture available to us at the time. Not one of our customers found this an acceptable price to pay and I very much doubt they would today.

    Really? I think that since typical desktop CPUs these days are 100x faster, and your performance penalty is therefore 100x smaller, the situation might be a bit different now.

    I mean, people run Firefox, even though it's easily 15% slower than Opera. They run OpenOffice on Windows, even though it's slower than Microsoft Office. They run ext3, even though it's 15% slower than ReiserFS.

    Basically, a 15% performance hit is nothing on a modern system if it gains you stability, security and functionality.

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  102. Re:Performance Hit of uKs unacceptable for most us by David+Off · · Score: 1

    > Basically, a 15% performance hit is nothing on a modern system if it gains you stability, security and functionality.

    It is still 15%... your gains in stability, security and functionality are a big if. In general you get an OS that is just 15% slower which is hard to sell.

  103. Re:Still Debating by starseeker · · Score: 1

    "If microkernels are so great, where are they? "

    Suffering the same fate as most mature ideas - being ignored because what is out there works "well enough."

    Look how long it took for modern graphical interfaces to catch on? And that's an OBVIOUS benefit, one the end user can appreciate instantly. Yet it still took many years for commercial desktop developers (never mind OSS ones) to get up to speed implementing and deploying them and arguably in some areas we still aren't there yet. Why did it take/ is it taking so long? Because the pre-existing solutions were/are good enough.

    If you take a step back, modern systems - whether Ubuntu/Fedora, MacOSX, or even Windows XP - have reached a state of tolerable functionality. My XP box at work seldom crashes (although to be fair it is seldom strained) and the interfaces available for any of these systems offer a reasonably friendly environment. Performance, while a bit on the embarassing side from an efficiency standpoint, is reasonable. There are even some who speculate that new versions of Windows are tuned not for efficiency but to ensure a continuing market for new, more powerful hardware. Personally I doubt this but it is a thought.

    Anyway, if USER level issues resist significant changes (unifying GUI look and feel, for example - only the Mac is close to doing this properly) microkernel vs monolothic is going to do exactly nothing to generate attention or revenue. Hence, the only attention it tends to get is either special purpose applications where it is NECESSARY (e.g. QNX) or academic environments with the freedom to reasearch new ideas. And in the latter case, there is seldom funding for creating a polished, finished product - that's what commercial folks do. Once you have grasped the new ideas, the goal is to move on to new, more interesting ideas that will generate papers.

    So, as usual, better is not the dominant (and occasionally not even the significant) concern. I think there are only two possible motivations which could result in a shift on this level anymore:

    1. Microkernels prove formally that they can be truly robust, however that is defined

    2. Microkernels allow formally verified security mechanisms to be implemented (EROS was a work in this direction)

    Security and reliability are the only remaining wants that simply cannot be satisfied by current software (if they don't already satisfy that is - for many applications they are in fact "good enough" already.)

    --
    "I object to doing things that computers can do." -- Olin Shivers, lispers.org
  104. same old ideas by m874t232 · · Score: 1
    If you read Tanenbaum's IEEE paper, you'll see that it's ideas that are decades old. Of the bunch, address-space based fault isolation and software verification have been tried many times and proven too cumbersome in practice. Language based fault isolation is sensible, although it's amazing that someone like Tanenbaum seems to seriously belief that it was only developed in the last few years. In fact, decades of experience with language-based fault isolation have shown that it greatly reduces some classes of errors and permits recovery from others, but that it is not sufficient for achieving reliability.

    In fact, in my opinion, we need fundamentally new ideas to improve software reliability, and it's pretty clear from his paper that people like Tanenbaum don't have them.

  105. Bad comparison by Chas · · Score: 0, Offtopic
    Most cars in Brazil can run on home-grown ethanol so Brazil imports little oil. 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.

    Problem 1: Ethanol is a much less energetic fuel on a per-gallon basis. Result? Ethanol has lower MPG vs gasoline. If people's cars are going to suddenly get 25-35% less mileage, they're going to start consuming more. ESPECIALLY in the transportation industry, which is pretty much locked on Diesel.

    Problem 2: Drivers in Brazil and the US have VASTLY different auto usage patterns. Take a look. Those who actually own a car do a fraction of the driving that Americans do in a year.

    I'm sick and tired of people who don't understand the realities of the "alternative fuel economies" thumping their chests and going "Stupid Americans!" over our fuel economy.

    The fact is, in Europe, with it's relatively even population distribution, and close proximities between work and home, they can get away with things like this much more easily than we possibly could in the far-flung population centers of the US.

    It doesn't mean the Europeans, or anyone else, are "better". It merely means their requirements are different than those of the US.

    Not to mention the fact that, unlike a small country with a couple million people, you don't change the fuel infrastructure of the US (with several hundred million vehicles) overnight, or in a week, month or even a year.

    Sorry to go off on a side-rant like this. I'm just REALLY tired of people who offer advice or criticism without understanding the full rammifications of what they're talking about. Sort of the modern day equivallent of "Let them eat cake".

    --


    Chas - The one, the only.
    THANK GOD!!!
  106. wasting time by Anonymous Coward · · Score: 0

    You-betcha. I honestly think Mr. Tanenbaum is wasting his time in replying to Slashdot. [...] As several of the posters here have already proven, they're not reading Tanenbaum's arguments anyway. So why should we expect this time be any different than the last? What's there to read? Tanenbaum's arguments are the same as they were a decade ago. The real question shouldn't be why he keeps responding on Slashdot, the real question should be why IEEE keeps publishing the stuff.

  107. Re:Still Debating by Guy+Harris · · Score: 2, Informative

    4. Network stacks, at least up to the transport layer, are implemented in kernel space.

  108. What I'd Like To See by jjohnson · · Score: 3, Funny

    Linux as a kernel is sufficiently mature that the problems Linus is spending time on are management and scalability problems--organizing the large-scale kernel hacking effort and dealing with massively parallel processing.

    I'd like to see Linus say "I've done a monolithic kernel and proven its success. Now I'm going to build a performant microkernel and see what all the fuss is about." He could hand over Linux kernel development to the senior crew that's already taking care of the major modules, and try something else.

    Essentially, it would be cool for someone like Linus, with his incredibly strong practical engineering bent, to do again what he did with Linux: semi-clean-sheet a new kernel that meets his performance requirements, but is designed around different strategies for achieving what every OS tries to achieve.

    I bet that, in two or three years, he would recant his earlier dismissal of microkernels and say that there's actually some interesting stuff there, and along the way solve some of the perennial complaints that slashdotters always bring up whenever microkernels are mentioned. In his heart of hearts, I'm sure Linus has some legacy issues with the current kernel design that he'd love to jettison, but can't without massively re-organizing the existing architecture, in which too many interested parties are already involved.

    And he could put Stallman and the HURD boys to shame *again*, which is a twofer :)

    --
    Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
  109. Re:Still Debating by Cyno · · Score: 1

    Now that Security and Stability are more difficult pressing issues than performance...

    I have no security or stability issues with Linux.

    If you're experiencing stability or security issues Minix won't be much help, not if Linux is currently too hard to learn.

  110. I think you were thinking of Oh Whacking Day by Anonymous Coward · · Score: 0

    Oh Whacking Day,
    Oh Whacking Day,
    Our hallowed snake skull-cracking day.
    We'll break their backs,
    Gouge out their eyes,
    Their evil hearts, we'll pulverize.
    Oh Whacking Day,
    Oh Whacking Day,
    May God bestow His grace on thee.

    1. Re:I think you were thinking of Oh Whacking Day by Anonymous Coward · · Score: 0

      The original is oh tanenbaum. Though I would ponder to guess the old Simpson's "Whacking day" joke is probably older than you are.

      It's to you benefit to become more cultured. Turn off the TV sometime.

  111. Micro/Macro - how about run time modifiable by jonniesmokes · · Score: 2, Interesting

    More important than micro/macro to me would be the ability to keep the system running and edit the system. I used to do that with Scheme back in my college days. It made me realize how something like the telephone system could keep running 24/7 and never go down. These days with MS Windows I gotta reboot every 30 days, and the same with these fscking Linux kernel updates. What if I don't ever want to reboot. I think a microkernel/interpreter would let you modify the running system a lot easier. You could even make incremental changes and then check to make sure they work - preserving the old code so a rollback would be simple.

    The point that Andy makes which I agree on, is that computer software is still in its infancy. The part I disagree with is that it'll change by him stating the obvious.

    1. Re:Micro/Macro - how about run time modifiable by Anonymous Coward · · Score: 0

      Symbolics Lisp Machines It's already been done. If you got the full package from Symbolics, you could actually change program while they were running, including the operating system, which was written in LISP. In some very key areas, computing has gone backwards, not forwards.

    2. Re:Micro/Macro - how about run time modifiable by jelle · · Score: 1

      "What if I don't ever want to reboot."

      Reloading an essential driver such as, say, the block device driver, or in a telephone system, the line card driver, is pretty much the same thing as a reboot. You end up with a service interruption. There should be more to a microkernel than 'it can reboot fast because you reboot only parts of it' for it to be convincingly better.

      A bug in your filesystem driver will still corrupt the disks, even if you can reload the driver.

      ps: Linux has a method to load a new kernel without needing a reboot.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    3. Re:Micro/Macro - how about run time modifiable by chthon · · Score: 1

      I think that in this case reference counter mechanism can be used.

      Start with adding a new version of the device driver, new requests should go to the new device driver, while old requests being busy will decrement the reference counter when they stop.

      Maybe you need redundant hardware, but in such a scenario as outlined by you, this will already be the case.

    4. Re:Micro/Macro - how about run time modifiable by jelle · · Score: 1

      "I think that in this case reference counter mechanism can be used."

      You can do that, and it will probably work after you spend quite considerable time on making sure it works... You either need redundant hardware like you said, or you need to write the driver such that it can share the hardware with another driver (in the latter case, a bug in one of the drivers can still put the hardware in an unusable state). With for example a filesystem or block device driver, it becomes even more complicated because the 'state' of the hardware is the harddisk, a pretty big state to copy around to your redundant hardware (even if you do it 'live', it's like syncing a software raid0, will slow down your disk speed by quite a bit). Point is, it's not automagic because it has a microkernel, it still costs time to architect, implement, and test all such features.

      Nothing is stopping Linux from having the exact same capability when unloading/reloading modules. In fact, clustering addons such as Linux-HA/Linux-vserver and openssi/openmosix already have a lot of those capabilities even across nodes.

      You can add lots of stuff to the microkernel. If you add it all up, it won't be so micro anymore, it will get bigger and bigger and the 'proven correct' argument will go up in smoke.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
  112. Re:Still Debating by saleenS281 · · Score: 1

    That's funny, because IOS is based off a microkernel. They have one or two installs around the world... or so I heard.

  113. Let's settle this... by Arandir · · Score: 1

    Let's settle this holy war once and for all! All stable Free Software monolithic kernels suitable for real world deployment to the right. All stable Free Software microkernels suitable for real world deployment to the left.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  114. I hate microkernels by I+Like+Pudding · · Score: 1

    My father was killed by a microkernel.

    1. Re:I hate microkernels by Vo0k · · Score: 1

      1) Not each kernel coming from Microsoft is a Microkernel.
      2) It wasn't a kernel, it was a chair.

      --
      Anagram("United States of America") == "Dine out, taste a Mac, fries"
    2. Re:I hate microkernels by Garabito · · Score: 1
      And your name is Inigo Montoya?

      Should microkernels prepare to die?

    3. Re:I hate microkernels by linguae · · Score: 1

      Isn't that you, Mac OS 9?

    4. Re:I hate microkernels by Jussi+K.+Kojootti · · Score: 1
      Hurd: I_Like_Pudding, I am your father.

      I Like Pudding: Noooooooooo!

  115. Re:Still Debating by Arandir · · Score: 1

    It's still taking baby-steps at the moment, but it's coming along quite nicely.

    Like I told the Hurd folks, "give me a call when you finally make it to the party."

    I would hardly call QNX a "niche" product.

    It's a realtime embedded OS. It is NOT a general purpose operating system. Hence, it is a niche product.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  116. Re:Still Debating by Arandir · · Score: 1

    if MINIX-3 does turn out to be a good alternative, we all win, right?

    Except for Andy. You see, he's bet his reputation on the hope that monolithic kernels will lose. The only reason this debate is still raging is because he can't stop trash talking monolithic kernels. It doesn't matter if there are a millions successful microkernels out there, it will still piss Andy off if even one monolithic kernel exists.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  117. Mirror set up by MrPerfekt · · Score: 2, Informative

    I placed the IDE files on our mirrors server here at Easynews...

    http://mirrors.easynews.com/minix3

    --
    I just wasted your mod points! HA!
  118. get your facts straight by m874t232 · · Score: 2, Insightful

    -- Whether your commute is long or short is largely unrelated to whether you choose to drive a gas guzzler or fuel miser.
    -- European settlement is anything but uniform; I suggest you have a look at a map, or at least a night-time satellite photo.
    -- Except for maybe Iceland, individual European nations can't change to alternative fuels by themselves--Europe is far more integrated than you seem to think.
    -- You're confusing cause and effect; it's not that US settlement patterns require cheap gasoline, it's that cheap gasoline and bad public policy caused current US settlement patterns some time in the 1950's and 1960's. This process can be reversed.

    The US simply chooses to waste gasoline for a variety of political and ideological reasons. If the US wanted to, it could move back to an energy-efficient transportation infrastructure comparable to, or better than, Europe within a few decades.

  119. Let's see... by argent · · Score: 2, Insightful

    On the microkernel side we have Minix 3, 15 years after the first not-really-open-source-but-code-available microkernel UNIX systems.

    On the monolithic kernel side we have ... what? 15 years after the first not-really-open-source-but-code-available monolithic kernel UNIX systems we had... hmmm... things like MiNT, and bits of BSD, but even Net/1 was a few years in the future and Minix wasn't even out.

    I think, after you allow for the 20 year head start, microkernels aren't doing that badly.

    1. Re:Let's see... by Arandir · · Score: 2, Interesting

      You don't time things when code is available, you time things when people are available to code. For both micro- and macro- kernels, the race started with the 80386 and the affordability of 32-bit CPUs for the average developer. The reason you didn't have Free Software kernels 15 years after the quasi-availability of UNIX source was that hardly anyone could afford the hardware. The ability to collaborate over a network also made a huge difference.

      And Minix 3 doesn't count for real world use. It may be a good starting point for one, and maybe Minix 3.5 might do it. But as of today it would be silly to put Minix on anything but a hobbyist system.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
  120. Re:Still Debating by Anonymous Coward · · Score: 0

    It's a realtime embedded OS. It is NOT a general purpose operating system. Hence, it is a niche product.

    It runs on standard x86 hardware with video, network, and input device support. It has a POSIX layer. Hence, it's a general purpose OS. Have you by any chance actually downloaded their demo livecd and tried it?

  121. You could try reading the article. Mods on crack by Anonymous Coward · · Score: 0

    In the article, Tanenbaum spends several pages explaining in some detail how such a pure language approach works in the Singularity system. But of course, knowing that would require reading TFA ...

    And evidently the moderator who gave you +1:Informative didn't RTFA either.

  122. No virtual memory, useless. by jgarry · · Score: 1

    Well, with no virtual memory, I'd have a heck of a time running Oracle. Why would anyone bother even looking at an OS that can't run modern applications? From my vantage point, minix hasn't even caught up to 1980 vintage operating systems. An OS without applications is like an engine without a car. An OS without virtual memory is like a tiny little model engine. Won't get the kids to Gramma's house.

    --
    Oracle and unix guy.
  123. Just use the MMU to wall off kernel drivers by Morgaine · · Score: 1

    >> I'd like to see Linus say "I've done a monolithic kernel and proven its success. Now I'm going to build a performant microkernel and see what all the fuss is about."

    Linus doesn't need to go that far to reap 70% of the rewards of microkernels.

    All he really needs to do is to create specialist MMU-protected driver VMs for drivers to run in, so that when a driver screws up, the kernel isn't affected too much unless it causes a bus lockup, which is rare. Notice that these VMs could even have address spaces within the monolithic kernel space ... the MMU would merely prevent them from scribbling all over it by restricting the size of their writeable window.

    This would also go a long way to reducing the potential danger created by our binary graphics drivers, which are a catastrophe just waiting to happen. They badly need some strong containment system walling them off from the kernel.

    Since Nooks does something like this already, it's far from being pie in the sky. But thinking that Linus has any interest at all in this kind of thing might well be pie in the sky.

    The other possible approach (as Tanenbaum's paper hinted) is to use virtualization but in reverse ... with Xen, a modified dom0 could contain no drivers at all, but instead use the services of drivers in domU virtual machines, all nicely walled away. And since Xen is already on the road to appearing in standard kernels, that doesn't really require Linus to do anything other than not block driver devolution.

    --
    "The question of whether machines can think is no more interesting than [] whether submarines can swim" - Dijkstra
  124. Re:Nothing's better than real challenge by Anonymous Coward · · Score: 0

    Do you even understand the issue?

  125. Why it does matter by Zeinfeld · · Score: 1
    Given the new trends on virtualization, OS's running within OS's, virtual servers, mainframe partitions, single processor concurrent contexts, multiple processors single contexts. etc. etc. etc. Does it really matter the inner architecture of the operating system?

    Yes because all current mainstream O/S have a big security hole, the security scheme has in effect two levels when dealing with a malicious attack: user and root.

    Windows has lots of fine grain privilleges and those are really good for stopping programs accidentaly doing something they should not or allowing a buffer over run exploit to do something drastic. Buth they do nothing at all to stop a bad device driver clobbering the whole system.

    Thats essentially what a rootkit is - a malicious device driver. Windows has a bunch of controls to try to limit the problem. The user is now asked before an attempt to install an unsigned driver. But the old saying is still true - once ring 0 always ring 0.

    Linux has exactly the same problem. Once you get to root it is game over, there is no way to recover the system.

    With a microkernel it is quite practical to design the system in such a way that the portion ot he operating system that is vulnerable to a rootkit attack is considerably reduced. Instead of every driver being a vulnerability this is limited to the microkernel itself.

    I think that Tanenbaum is right on the technical argument. Where he was probably wrong is that it was probably not practical to build a microkernel based O/S in 1993 when the original argument took place.

    In the meantime signed drivers is a pretty good alternative. Just make sure that the root of trust can be set by the owner of the machine.

    Another thing I would like to see is much more use of generic drivers. My windows box has something like 1000 different printer drivers. In reality of course there are only 20 or so basic variations and many of those are close. Why not have a generic printer description format in XML that the computer can pull off the printer as needed? This could be extensible to allow support for proprietary formats. Most printers would only need to note that a standard page description format is supported and codes to state the number of paper trays, paper sizes &ct.

    There are some cases where code is going to be essential. A display adapter is almost certainly going to need some code support. But most devices do not need to define executable content.

    This declarative approach has other advatages. The O/S has more information on the printer available and can do more customization and localization as a result.

    --
    Looking for an Information Security student project suggestion?
    Try http://dotcrimeManifesto.com/
  126. Linus' is a bit egotistical. He deserves it..but by BalkanBoy · · Score: 0

    .. I do like Tanenbaum's (and Johnathan Shapiro's) argument about microkernel-based OS's. It almost seems to me that if Linus, 10 some years ago had tried harder to get a micro-kernel based Linux built, Andrew Tanenbaum, et. al., would have kept quiet now. Actually, if I could turn back time, and bring Andrew Tanenbaum, Linus Torvalds and the creators of QNX in the same room (and deflated Linus' ego a little bit so he'd follow the micro-kernel approach instead of a monolithic kernel approach), we may have had Linux running as the base of Mac OS X today, and Linux/Mac OS X would have probably enjoyed an even larger momentum than it does today toward displacing Windows on the desktop even. Linus' problem is that he does not want to admit the possibility that Linux could have been _just as good_ of an OS today, even if it was micro-kernel based. Well, that little self-gratification of having to be 'right' (or maybe he just didn't care) 10+ years ago, is now opening up markets for a shitload of other micro-kernel based OS's.

    Do I think this is wrong or bad? No. I just think that Linux can (and should) evolve to a true micro-kernel based OS, if Linus or anyone else can help it. Re-write Linux from scratch, basically. They did it once, they can do it again. Then, it will be the penis-envy of all operating systems on earth, Mac OS X and QNX included.

    G'day Bruce!

    --
    'A lie if repeated often enough, becomes the truth.' - Goebbels
  127. Sorry. by CustomDesigned · · Score: 1

    My Minix-1 came on 5 1/4" floppies. I gave the textbook to my nephew a few years ago. It was a great book. The entire minix system was easy to understand - and hence more practical systems were comprehensible with some work.

  128. The two are not mutually exclusive. by Bob_Robertson · · Score: 1

    Linux uses loadable modules. That is an element of "micro-kernel" architecture, being able to load and unload drivers without taking the system down.

    There are also places where the "little bit of overhead" that a micro-kernel requires does make a difference, such as supercomputing applications.

    What I see happening is an evolution. Linux evolves to incorporate good ideas that work. Minix and the other "purist testbeds" evolve ideas.

    The best of both is that both coexist side by side without argument. It's people that argue. There's nothing to win here, neither Linux nor Minix matter in the long run. It's ideas that matter.

    That said, the micro-kernel zealots do come across as a bunch of jealous whiners who are disgusted that some macro-kernel P.O.S. is getting all the attention.

    Bob-

    --
    The Ludwig von Mises Institute. The reasoning individuals economics
  129. Testing via Xen by WindBourne · · Score: 1

    If he really wants to get it out there, T should consider the idea of creating a Xen port of it. I would think that it should be relatively easy to do. Afterall, it is not likely that the windows community will head down this path.

    --
    I prefer the "u" in honour as it seems to be missing these days.
  130. Re:Performance Hit of uKs unacceptable for most us by functor0 · · Score: 1

    One of the reasons Microsoft moved a lot of functionality into the Kernel between NT 3.5 and NT4.0 was performances (NT being, at its origins a uK based OS).

    And I curse them to this day for doing it! NT 3.51 was rock-solid. NT 4 was a piece of crap that crashed all the time. And if you've been following the Vista stuff, they've started moving parts back out of the kernel. From the horse's mouth: http://channel9.msdn.com/ShowPost.aspx?PostID=1488 20

  131. Re:Performance Hit of uKs unacceptable for most us by metamatic · · Score: 1
    In general you get an OS that is just 15% slower which is hard to sell.

    Yeah, that's why nobody bought Windows XP.

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  132. Re:Still Debating by wootest · · Score: 1

    I don't think we're having this discussion because Andrew hates monolithic kernels explicitly, I think it's because Andrew propagates a design which many think can't be as effective as a monolithic kernel and he wants to prove them wrong. I don't think hate for A is his motivation more than love for B. I see nothing wrong here, and I'd certainly do that too if I was in his situation.

  133. MkLinux - Microkernel Linux by leov211 · · Score: 1

    Anyone remember this little gem circa 1998? It was the first port of Linux to Apple PowerMac. I remembered we had it installed on a top-of-the-line (at that time) PowerMac 9500 (133MHz PPC 604 with 48MB RAM). Seems like the project is still around. See www.mklinux.org

  134. Re:Still Debating by ClosedSource · · Score: 1

    "Linux is NOT and was never about novelty and superior technology."

    I don't know. I hear a lot of claims on slashdot about how superior Linux is.

    "An aging professor's debate and ideas do not help much in this respect and are largely a "want-to-still-be-famous" OS expert."

    So what's Linus, imortal? I think using terms like "aging" to describe someone who's opinion you disagree with doesn't add much to the debate either.

  135. Re:You could try reading the article. Mods on crac by Hugo+Graffiti · · Score: 1
    In the article, Tanenbaum spends several pages explaining in some detail how such a pure language approach works in the Singularity system. But of course, knowing that would require reading TFA ...

    Whoa, if you read TFA yourself you'd discover that the explanation you're referring to isn't actually in TFA but in a paper linked from TFA. Sheesh.

    Anyway, it just goes to show that great minds think alike :-)

  136. Car crashed by x2A · · Score: 1

    My parents car once crashed. No, I don't mean a collision, the software locked up. This stopped (amongst other things) the electric doors (the middle one's) and windows (all of them) from working. No reset button. Had to disconnect the battery, then take it to get patched. Kinda unnerving.

    --
    The revolution will not be televised... but it will have a page on Wikipedia
  137. Re:Performance Hit of uKs unacceptable for most us by tehcyder · · Score: 1
    They run OpenOffice on Windows, even though it's slower than Microsoft Office
    This has more to do with being free (as in beer) than "stability, security and functionality".

    --
    To have a right to do a thing is not at all the same as to be right in doing it
  138. Can we please get rid of the following? by master_p · · Score: 1

    It is a minimal but functional UNIX system with X, bash, pdksh, zsh, cc, gcc, perl, python, awk, emacs, vi, pine, ssh, ftp, the GNU tools and over 400 other programs.

    I am not saying these programs are not good, but a different paradigm is needed in order to maximize computer utilization. All well and good with mr Tanenbaum's Minix 3 (total respect!), but I think we need an entirely different way of approaching computing in order to see problems go away and to increase productivity. Right now the classic approach of operating systems/drivers/applications/files is a setback, I feel. There has to be a better way.

  139. How long until we realize we fight with sticks? by master_p · · Score: 1

    The problem of monolithic vs microkernel would not exist if CPUs supported modularization. We are fighting in this war with sticks! Graphics people solved their problems with GPUs; audio people solved their problem with sound chips...even physics are being ofloaded to dedicated processors...but our CPUs still do not provide ways to write properly modularized software without doing all the dirty tricks in the world!

    And before someone comes in and say "but modularization has high cost, 80x86 segments are not used bla bla bla" I invite them to read about Motorola 68020's CALLM instruction, and how simple it is to provide true modularization: the CALLM instruction loads a new module's information from the destination address, saving the old module in the stack. Local calls can not access data beyond the current module's limits. Access checks are performed at each inter-module call. It is so simple!

  140. Re:Still Debating by moonbender · · Score: 1

    True enough, as long as you keep in mind that the niche isn't any smaller than the PC niche.

    --
    Switch back to Slashdot's D1 system.
  141. Video by Kim0 · · Score: 1

    If micro kernels copy video streams instead of sharing memory, I guess they would be significantly slower at that.

    Why not have both? Communication by memory only shared between the caller
    and callee, and nothing else?

  142. My Sharp TV has *2* reset buttons by Zoxed · · Score: 1

    Sorry Andy, but my new Sharp Aquos TV has *2* reset buttons: I forget the labels they are given but they are something like "User Reset" and "System Reset". They are the type of button that you need a pen to push them in.

    Unfortunatly I have yet to be able to find out exactly what each button does, nor what symptons may be cured be pressing them. I suspect the System Reset will restore to factory settings and loose my channel setup etc, but as the TV has behaved so far I have pressed neither.

    1. Re:My Sharp TV has *2* reset buttons by iggymanz · · Score: 1

      and my kodak digital camera once in a while (like every three months) gets "stuck" where I have to pop the batteries out and back in again. I should really look the thing over for a hidden reset button.

  143. history in the making by POds · · Score: 3, Interesting

    Has anyone thought of that the fact this very conversation may go down in the history of computer science? In 30 more or less years, lecturers will be telling their students about this argument! We're witnessing a more interesting slice of history than our normal mundane day lives :)

    --


    Giving IE users a taste of their own medicine since 2005 - http://pods.-is-a-geek.net/
  144. Re:Performance Hit of uKs unacceptable for most us by David+Off · · Score: 1

    If the choice is between XP or XP 15% slower but it has a lot of the OS code running at user level then it is hard to sell.

  145. Re:Performance Hit of uKs unacceptable for most us by David+Off · · Score: 1

    NT 3.51 would BSOD all the time if you pushed it, it didn't get stable till sp6 went out the door. NT 4.0, yes I agree moving the graphics code back into the OS space probably made it more unreliable for server systems but if your graphics sub-system has just crashed it is still pretty crucial for a desktop system.

  146. Why Microkernels Do Not Work by ajs318 · · Score: 2, Insightful

    There is a simple reason why microkernels do not work in practice: the abstraction layer is in the wrong place.

    <simplification>A hardware driver doing output has to take raw bytes from a process, which is treating the device as though it were an ideal device; and pass them, usually together with a lot more information, to the actual device. A driver doing input has to supply instructions to and read raw data from the device, distil down the data and output it as though it came from an ideal device.</simplification>

    In general, the data pathway between the driver and the process {which we'll call the software-side} is less heavily used than the data pathway between the driver and the device {which we'll call the hardware-side}.

    <simplification>In a conventional monolithic kernel {classic BSD}, a hybrid kernel {Windows NT} or a modular kernel {Linux or Netware}, device drivers exist entirely in kernel space. The device driver process communicates with the userland process which wants to talk to the device and with the device itself. All the required munging is done within the kernel process. In a microkernel architecture, device drivers exist mainly in user space {though there is necessarily a kernel component, since userland processes are not allowed to talk to devices directly}. The device driver process communicates with the ordinary userland process which wants to talk to the device, and a much simpler kernel space process which just puts raw data and commands, fed to it by the user space driver, on the appropriate bus.</simplification>

    Ignore for a moment the fact that under a microkernel, some process pretending to be a user space device driver could effectively access hardware almost directly, as though it were a kernel space process. What's more relevant is that in a microkernel architecture, the heavily-used hardware-side path crosses the boundary between user space and kernel space.

    And it gets worse.

    <simplification>In a modular kernel, a device driver module has to be loaded the first time some process wants to talk to the device. {Anyone remember the way Betamax VCRs used to leave the tape in the cassette till the first time the user pressed PLAY? Forget the analogy then} which obviously takes some time. The software-side communications channel is established, which takes some time. Then communication takes place. The driver stays loaded until the user wants it removed. Then the communication channel is filled in and the memory used by the module is freed, which obviously takes some time.

    In a microkernel architecture, a user space device driver has to be loaded every time some process wants to talk to the device. The software and hardware side communications channels have to be established, which take some time. Then communication begins in earnest. When that particular process has finished with the device, both channels are filled, and the memory used by the driver is freed; which takes time. Between this hardware access and the next, another process may have taken over the space freed up by the driver, which means that reloading the user space driver will take time.</simplification>

    It makes good practical sense to put fences in the place where the smallest amount of data passes through them, because the overheads involved in talking over a fence do add up. That, however, may not necessarily be the most "beautiful" arrangement, if your idea of beauty is to keep as little as possible on one side the fence. It also makes sense for device drivers which are going to be used several times to stay in memory, not be continuously loaded and unloaded. {Admittedly, that's really a memory management issue, but no known memory manager can predict the future.}

    Ultimately it's just a question of high heels vs. hiking boots.

    --
    Je fume. Tu fumes. Nous fûmes!
  147. Then check out Coyotos by domQ · · Score: 1

    Coyotos is an attempt to do just that, led by Prof. Jonathan Shapiro who is a pretty smart cookie too.

    Unfortunately it appears that GNU/Hurd will somehow be re-used as a run-time environment for Coyotos, so RMS may dodge the cream pie this time around :-)

  148. OT: Water stopping bullets. by Kadin2048 · · Score: 1

    Metaphor aside, do you know what episode that is?

    If that was really their conclusion, then I seriously question their methodology. I have personally seen solid jacketed ("ball") rounds of 9mm Parabellum and .223 Remington penetrate more than 18 inches of water. I could buy that maybe if you were really close to the water that some rifle bullets would still be going at a high enough velocity that they'd break apart under the deceleration (.223/5.56mm steel-core "green tip" rounds tend to break at the cannelure when fired into ballistic gelatin at high velocity, so I could believe they might do it in water if the water was close enough), and hollowpoints might expand prematurely on contact with the water and go off-course, but I don't think saying 'bullets won't penetrate more than 18 inches of water' is true as a general statement.

    Plus, the rate at which a projectile decelerates is going to be highly dependent on its ratio of mass to cross-sectional area (well, mass to drag coefficent, and the drag coefficient in modern bullets is governed principally by the cross-section), and modern rifle bullets are going to be far superior to a round ball (or Minie-type ball). Perhaps the angle of incidence has an effect: maybe if a long modern bullet strikes the water at an angle, it begins to tumble and then disintegrates. I've never tried that, but I've definitely fired them straight-on into containers of water and they don't disintegrate.

    If Mythbusters said that, I'm a little disappointed. There must be some implicit caveats about the bullets and velocities.

    --
    "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
    1. Re:OT: Water stopping bullets. by Gorshkov · · Score: 1

      I'm sorry, but I don't remember the episode - but I'll tell you what I *do* remember. THey had a slide/guide set up into a swimming pool - the angle was somewhere between 30 and 45 degrees, I think. They tried different distances from about 15 feet, and I think the closest they could get because of their rig was about 1.5 feet or so - certainly under 3.

      They tried 9mm .38, .45 magnum, 22 file 303 (or 30-6 - don't remember), up to and including a .50 cal sniper rifle.

      Bottom line - black powder musket ball went down at least 3 feet. None of the other rounds went anywhere, except as slow-moving fragments - they all shattered when they hit the water.

      Aside from the fact that they had a fixed deflection angle, I didn't see anything wrong with their methodology.

    2. Re:OT: Water stopping bullets. by Kadin2048 · · Score: 1

      Interesting; I'll have to see if I can find the episode around somewhere. Sounds like maybe the deflection angle is important: maybe that causes the modern bullets to spin and shatter, while a round ball is basically immune to damage by spinning (since its cross section is the same from all angles).

      I wonder what a musket firing a Minie ball would do.

      --
      "Ladies and gentlemen, my killbot features Lotus Notes and a machine gun. It is the finest available."
    3. Re:OT: Water stopping bullets. by metallic · · Score: 1

      There is something extremely wrong with their methodology. I've had rounds penetrate more than 18 inches of flesh and bone without shattering using quality ammunition. And considering that a standard .45 ACP FMJ round has a lower muzzle velocity than most muskets, I also find it incredibly hard to attribute any problems they had with higher muzzle velocity.

      --
      Karma: Positive. Mostly effected by cowbell.
    4. Re:OT: Water stopping bullets. by Gorshkov · · Score: 1

      I'm sorry, I can't help you there - I'm not exactly a firearms expert. All I can tell you is that what I was watching seemed to be reasonable. But if you can find the episode somewhere and critique it, I'd be interested in knowing

  149. OpenBSD security model is passe by Dark+Coder · · Score: 1

    Because social engineering is the BIGGEST weakness in today's computer security, 'root' modeling found in most class B1/B2 of the Orange Book is now rapidly becoming obsoleted. Windows is still a sub-C1 class. Linux is currently C2, trying to gain B1 (SELinux). BSD has attained B1, commercially and with addons.

    So, boxing out the various resources and issuing privileges to a subclass of users becomes a much needed feature in addressing this weakness.

  150. Not to split hairs, but... by einhverfr · · Score: 1

    I am not disputing the fact that a bug in a driver can take the kernel down, but your original point was that you have to *rebuild* the kernel to fix a bug in a driver, which is patently false.

    --

    LedgerSMB: Open source Accounting/ERP
    1. Re:Not to split hairs, but... by gbjbaanb · · Score: 1

      ah, I think the OP was modded off my screen. However, can you unload a loaded kernel module that is in use? If not, how do you make it not-in-use in order to unload it? So, technically, you do have to take the system down to fix a module bug.

  151. Parent requiers password n/t by Anonymous Coward · · Score: 0

    no text

  152. Working torrent by Kalak · · Score: 1

    I've made a working torrent, and replied to the usenet thread with it as well:
    http://iddl.vt.edu/~jackie/IDE-3.1.2.iso.bz2.torre nt

    --
    I am, and always will be, an idiot. Karma: Coma (mostly effected by .hack)
  153. cooperative information hiding by epine · · Score: 1


    I've read T-bomb's side of the issue whenever this debate has flared up, and I've never come away impressed with his ability to fully enter into the debate.

    In effect, Linus is saying the past 20 years of work on object-oriented programming is misguided. I don't buy that.

    The comments Linux offered up were from the perspective that there is more than one way to implement information hiding. T-bomb believes that only hardward enforced information-hiding (exploiting MMU protections) is valid. Many critical data structures in Linux enforce information hiding through a C language macro interface which encapsules all the extremely tricky logic that is terribly hard to get right.

    Both forms of information-hiding break down if employed incorrectly. In the micro-kernel instance, the break-down is caught (usually) by the MMU which traps out one (or more) of the participants in the failed initiative. I fail to see how Minix can self-heal itself from incorrect program code. What it can do is resume or limp along more gracefully. The fix to the program logic waits upon a developer to come along and identify and correct the faulty program logic.

    In Linux, mistakes in the use of the critical primitives will likely take down the entire kernel. It's well understood within the core community of kernel hackers what kinds of misuse or mistakes most often lead to this unfortunate result. If a chunk of code does not pass a visual sanity check, most likely it never becomes part of a sancitified kernel in the first place. The coders who consistently contribute code which does pass the visual sanity review tend to deeply understand the issues at stake. In practice, the dire consequence doesn't leak through the early stages of the development process nearly as often as T-bomb insinuates. I diagnosed one kernel hang myself concerning an embedded 2.4.19 ARM kernel where the semantics of an ARM timer register were subtly abused in concert with sleep/wake cycles. If this same programming mistake had been made in MINUX, it wouldn't have been of any benefit. We still could not ship the product to the end customer until fixing the mistake.

    Linus further stated that there are development costs associated with the micro-kernel design, such as achieving the same degree of efficiency while copying stack frames from one protected address frame into another. This leaks out far more often than most people admit. fgetc() doesn't call the OS (as a true u-kern would) for every character processed. That would be too costly for a primitive operation at that scale. Instead the C library buffers character data, a small detail which adds much complexity to things like the C++ streams library. We had some hideous problems with a PHP module until we realized it was buffering old results from fstat() calls (even after closing and reopening the file IIRC). Both of these practices stem from trying to eliminate unnecessary context switches for performance critical operations.

    u-kern APIs tend to involve more of this than monolithic kernels because the context switch is more frequent or more expensive. I think in the 3.51 NT u-kern (before they abandoned many of their u-kern principles) they went to a lot of trouble to batch up GDI calls when possible on the application side of the fence. This kind of thing sucks developer attention and can introduce strange artifacts such as the PHP artifact we observed: open file, write data to file, close file, fstat file, observe length is sill zero.

    What Linus was pointing out about Linux kernel development is that once you've paid the price to establish good cooperative information-hiding through macro layers (and fully debuged the difficult semantics) in many ways it takes less effort to review the code for correct use of these abstraction layers than it does to deal with the ongoing headaches introduced by crossing MMU barriers for every trivial operation.

    I happened to despise the cooperative tasking model from Windows 3.1 and OS 9. In t

  154. Evolution by microbee · · Score: 1

    Linus doesn't believe in revolution. He always does things incrementally. Despite being a monolithic kernel fundamentally, Linux kernsl is modular and will continue to be so. If the microkernel direction is correct, I'm sure Linux will head toward it, and someday you'll find Linux more like microkernel than now.

    For example, one Linux philosophy is "if sth can be done in user space, do so". udev (to replace devfs) is one great example. There are parts that are traditionally done in kernel space that are moved into user space, but also vice versa (think X and direct rendering).

    So from engineering point of view, kernel hackers are not interested in arguing "which one is cooler". Instead they are interested in "which one will work better in real world".

  155. Well, there's this one little company... by Valdrax · · Score: 1

    This debate will never be over... until someone makes a microkernel unix system that's more than just a proof of concept.

    There's this one little company that sells an OS based on the Mach microkernel. They may be a little obscure, but maybe you've heard of them?

    --
    If it's for-profit but free, you're not the customer -- you're the product (e.g., the Slashdot Beta's "audience").
  156. Those all have equivalents to "power" not "reset." by Valdrax · · Score: 1

    No, actually, you're missing the point. TVs, cars, and stereos all have an equivalent to the power on/off button that computers have.

    However, only computers have such a frequent need to be turned off and back on due to seizing up that the functionality was streamlined into the press of a single button.

    --
    If it's for-profit but free, you're not the customer -- you're the product (e.g., the Slashdot Beta's "audience").
  157. Rebooting Chevy Vans by billstewart · · Score: 1
    My current 1987 Chevy van needed a new engine after ~110,000 miles, and the new one isn't quite an exact match for the old one. Every once in a while I'll drive it in ways that the engine behaviour doesn't look right to the on-board computer (e.g. accelerating uphill at highway speed to pass somebody) and it'll turn the "Check Engine Soon" light on. Nothing particularly wrong, but it won't turn off unless I shut off the car, so I'll usually reboot it the next time I'm stopped.

    My first Chevy van was an old beater '71, the first "second vehicle" we could afford after college, 80,000 miles, only wrecked badly once, then used for salt-water fishing. Being a Chevy, the electrical system would occasionally gronk out, and I'd have to put it into neutral and shut the engine off and on while driving down the road. Later the neutral safety switch died, and rather than replace it my garage recommended that I just wire around it, so I no longer have to put it in neutral to reboot.

    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
  158. Hardware support? Graphical Browsers? by billstewart · · Score: 1
    Can't bug them too hard for not having a graphical browser, since X Windows has only been running for a week (:-), but does anybody know if there's work on porting Firefox or other graphical browser to Minix?

    More importantly, what hardware is supported? The FAQ talks about 386-or-better, disks, RAM, and Ethernet, but doesn't talk about video cards, PCMCIA, or sound cards, which are typically the problem areas. The machine I'd really like to run a lightweight operating system on is an old laptop - is it likely that Minix will be able to recognize the fairly lame graphics system, and is it easy to test X from the CD so I don't have to install the whole thing first?

    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks