Slashdot Mirror


Microkernel: The Comeback?

bariswheel writes "In a paper co-authored by the Microkernel Maestro Andrew Tanenbaum, the fragility of modern kernels are addressed: "Current operating systems have two characteristics that make them unreliable and insecure: They are huge and they have very poor fault isolation. The Linux kernel has more than 2.5 million lines of code; the Windows XP kernel is more than twice as large." Consider this analogy: "Modern ships have multiple compartments within the hull; if one compartment springs a leak, only that one is flooded, not the entire hull. Current operating systems are like ships before compartmentalization was invented: Every leak can sink the ship." Clearly one argument here is security and reliability has surpassed performance in terms of priorities. Let's see if our good friend Linus chimes in here; hopefully we'll have ourselves another friendly conversation."

722 comments

  1. Eh hem. by suso · · Score: 3, Insightful

    Current operating systems are like ships before compartmentalization was invented

    Isn't SELinux kinda like compartmentalization of the OS?

    1. Re:Eh hem. by Anonymous Coward · · Score: 3, Informative

      SE Linux provides security models to compartmentalize your programs and applications and such. This is a completely different beast then compartmentalizing your individual kernel parts. Modules was kind of a primitive step in the direction of a microkernel, but still a long ways off from a technical standpoint.

    2. Re:Eh hem. by SatanicPuppy · · Score: 1

      Not really. SELinux is just a different type of security model, it doesn't have anything to do with the kernel architecture.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    3. Re:Eh hem. by Ohreally_factor · · Score: 4, Funny

      Ship analogies are confusing and a tool of the devil.

      Could someone out this into an easy-to-understand car analogy, like the good Lord intended?

      --
      It's not offtopic, dumbass. It's orthogonal.
    4. Re:Eh hem. by c_forq · · Score: 1

      I'll give it a shot...
      Macrokernals are like a solid frame with no airbags, if you get hit anywhere it will effect everywhere. Microkernals are like frames with multiple crumple zones and multiple airbags and the effects of impact are localized and don't effect other areas. It doesn't really work... but cars aren't really compartmentalized so...

      --
      Computers allow humans to make mistakes at the fastest speeds known, with the possible exception of tequila and handguns
    5. Re:Eh hem. by somersault · · Score: 1

      Running on a monolithic kernel is like having no dividers between the engine bay, trunk, and the rest of the car.

      --
      which is totally what she said
    6. Re:Eh hem. by Kjella · · Score: 3, Informative

      Isn't SELinux kinda like compartmentalization of the OS?

      No, it's compartmentalization of the applications. Besides, the analogy is really bad because a ship with a blown compartment is quite useful. Computers with a blown network driver will e.g. break any network connections going on, in other words a massive failure. What about a hard disk controller which crashes while data is being written? Drivers should not crash, period. Trying to make a system that could survive driver failure will just lead to kernel bloat with recovery code.

      --
      Live today, because you never know what tomorrow brings
    7. Re:Eh hem. by dascandy · · Score: 2, Funny

      An OS is like a car, you have a good bit of it that takes care of moving your car (the kernel / engine compartment) and a good bit that takes care of you ("user space" for both). The idea is, you can do whatever you want in any passenger seat (login as user, can't crash the system), when you're root (driver) you can crash the system (into a tree or an oops, whichever suits your fancy). Now, when there's a flaw with the suspension that causes your wheels to drift out from under the car, this microkernel mechanism allows you to leave the car in floating condition in the middle of the highway, call the emergency service, they'll reattach the wheels and you can drive on. The same for engine failure, when it fails you'll just stop and you can get another and you can continue. Theoretically, you could have a failed battery after which your car just stops somewhere and you can't run off. Of course, all runs on the car power, so you can't dial emergency help and you're stuck with a perfectly good car that doesn't move. Or, for the analogy, a kernel that can't load a new disk driver off disk.

      The kernel should run the drivers that need system level access and shouldn't have been running any other tasks in kernel mode in any case.

    8. Re:Eh hem. by Surt · · Score: 1

      Ok, current operating systems are like car engines before carburetors were invented. And SELinux is really like an engine with dynamic piston shutdown for fuel conservation.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    9. Re:Eh hem. by Anonymous Coward · · Score: 0

      It is sad that you can't manage to spell "kernel" correctly despite the fact that pretty much everyone else seems to have managed to do so.

    10. Re:Eh hem. by moreati · · Score: 1

      Ah, more (ab)use of The Car Analogy, how about this.

      A computer is like a car - the passenger cabin is user space, the engine and drivetrain are the kernelspace, the wheels are drivers. A monolithic kernel is like if all the tyres were connected by hoses - if 1 tyre blows, they all go flat and the car crashes spectacularly.
      A microkernel has each tyre inflated seperately, if 1 blows the car can be pulled over. If there were enough wheels, 1 blowout is inconsequential.
      Run flat tyres can be considered a workaround. In the extreme, an electric car with a hub motor for each wheel further increases the provable resiliance, but as with microkernels - performance traditionally sucks.

      Abusive enough for you?

    11. Re:Eh hem. by Skreems · · Score: 1

      Uh... electric cars with individual wheel motors can out-accelerate traditional cars by about 2x...

      --
      Slashdot needs a "-1, Wrong" moderation option.
      The Urban Hippie
    12. Re:Eh hem. by Belgarion89 · · Score: 1

      I believe the point was that instead of causing the whole ship/OS to sink/crash, it will still run, allowing users to possibly debug the problem. Joe WindowsUser probably wouldn't benefit from this too much, as most of them don't know a process from a toaster, but a lot of Linux people are into IT anyway and could have a fair shot at fixing the system without having to rebbot and loose data.

    13. Re:Eh hem. by moreati · · Score: 1

      Sorry, that line was meant for added humour. I wish my car was a Hywire.

    14. Re:Eh hem. by ScrewMaster · · Score: 1

      Or like having no firewall ... oh forget it.

      --
      The higher the technology, the sharper that two-edged sword.
    15. Re:Eh hem. by indil · · Score: 1
      No, it's compartmentalization of the applications. Besides, the analogy is really bad because a ship with a blown compartment is quite useful. Computers with a blown network driver will e.g. break any network connections going on, in other words a massive failure. What about a hard disk controller which crashes while data is being written? Drivers should not crash, period. Trying to make a system that could survive driver failure will just lead to kernel bloat with recovery code.

      Easy. Minix (the OS that Tanenbaum created) uses a reincarnation server that restarts any drivers that crash. All drivers are run in userspace, so if one crashes then the kernel isn't brought down with it (yes, even the file system driver). Then you can debug all you want.

      Yes, it would be nice if drivers never failed. Better yet, why don't we all just agree to make all of our programs fault-free? Not going to happen, at least not when written in C/C++. The best you can hope for is to reload the driver without compromising the rest of the system, which is what Minix's reincarnation accomplishes.

      The reason Tanenbaum advocates this stuff is because it can work if designed correctly. Again, see Minix.

    16. Re:Eh hem. by Anonymous Coward · · Score: 0

      Besides, the analogy is really bad because a ship with a blown compartment is quite useful. Computers with a blown network driver will e.g. break any network connections going on, in other words a massive failure.

      Actually, the analogy is pretty good. A computer with a blown network driver will break any network connections, but that hardly translates to massive failure. Computers can operate usefully without network connections; shocking, I know.

      On the flip side, if a ship's engine room gets flooded, then your ship is dead in the water. It's not particularly useful for moving stuff then, is it? "Massive critical failure," oh my!

      So the analogy is perfectly sound. Whether or not something becomes an unrecoverable problem is a matter of resourcing out redundancy, not redesigning the system. Current computer systems almost always emphasize efficiency over reliability, but that's an artifact of resource allocation, not the fundamental idea itself.

      It's like having an airplane with only one engine. If that engine fails, you fall out of the sky. It doesn't help to complain that since you have redundant landing gear, your single engine failing shouldn't cause you to fall out of the sky. If you want to survive engine failure, then you need to add more (preferrably independent) engines. Simple as that.

    17. Re:Eh hem. by Anonymous Coward · · Score: 0

      What about a text editor? The user will lose everything they were working on anyway. Trying to make a system that will survive text editor crash will just load your kernel with bloat. Text editors should not crash. period. The memory will be all corrupted anyway. might as well reboot.

    18. Re:Eh hem. by Anonymous Coward · · Score: 0

      without having to rebbot and loose data

      "reboot", "lose". (OK, "rebbot" was probably a typo, but I don't think "loose" was. Please learn the difference betwen "lose" and "loose".)

    19. Re:Eh hem. by sjames · · Score: 1

      Isn't SELinux kinda like compartmentalization of the OS?

      SELinux compartmentalizes userspace but not the kernel. In the kernel, it consists of extra function calls into SELinux from various system call handlers give it a chance to log or veto the operation. If a driver screws up and scribbles all over kernel memory, nothing stops it.

      It's a great thing, but it has nothing to do with fault isolation in the kernel. It can, however provide fault isolation for system daemons.

  2. O Tanenbaum... by ZombieRoboNinja · · Score: 3, Funny

    ...I got nothing.

    1. Re:O Tanenbaum... by cbiltcliffe · · Score: 5, Funny

      O Tanenbaum, O Tanenbaum
      Your microk3rn3l rul3z!
      O Tanenbaum, O Tanenbaum
      Those m0n0lithic foolz!
      They build a kernel all-in-one,
      Where all the bugs can have free run.
      O Tanenbaum, O Tanenbaum
      Those Linux guys just drool. ;)

      --
      "City hall" in German is "Rathaus" Kinda explains a few things......
    2. Re:O Tanenbaum... by Call+Me+Black+Cloud · · Score: 1, Funny

      Bravo! Bravo! Funniest post I've seen this month.

    3. Re:O Tanenbaum... by Anonymous Coward · · Score: 0

      Rock On, O Tan\{12}enbaum! You must be feeling like Christmas came early this year!

  3. Amen by Delifisek · · Score: 0

    hopefully we'll have ourselves another friendly conversation.
    Amen my brohter, amen..

    --
    [My english is better than most other people's Turkish, so please point out mistakes politely. Thank you.]
  4. The unsinkable Kernel by Random+Destruction · · Score: 5, Funny

    So this microkernel is the unsinkable kernel?
    FULL SPEED AHEAD!

    --
    :x
    1. Re:The unsinkable Kernel by joe+155 · · Score: 1

      maybe it would be unsinkable if only it would ram the bloody problem head on instead of trying to turn and cutting right along the hull (or whatever kernels have in this titanic analogy...)

      --
      *''I can't believe it's not a hyperlink.''
    2. Re:The unsinkable Kernel by Anonymous Coward · · Score: 0

      Ice anyone ?

    3. Re:The unsinkable Kernel by alexhs · · Score: 1

      Ice anyone ?

      Good idea ! Pistachio icecream for me :)

      --
      I have discovered a truly marvelous proof of killer sig, which this margin is too narrow to contain.
    4. Re:The unsinkable Kernel by msh104 · · Score: 1

      didn't the last unsinkable ship sink on it's first journey?

    5. Re:The unsinkable Kernel by sharkey · · Score: 1

      Well, then it will be the ideal kernel for a machine running an Unbreakable Database.

      --

      --
      "Outlook not so good." That magic 8-ball knows everything! I'll ask about Exchange Server next.
    6. Re:The unsinkable Kernel by mgblst · · Score: 1

      Yes, but even a Microkernel will fail if you drop it from a 747 into the Atlantic ocean, while shooting it with a m60. It just works better under normal conditons.

    7. Re:The unsinkable Kernel by C_nemo · · Score: 2, Informative

      May i Point out that the Titanic was divided into compartments, but only in the vertical direction. No horizontal compartments, and hence since she sutained damage to critical_number_of_compartments + 1, trimming of the ship + water ingress allowed the remaing compartments to be progressively filled.

    8. Re:The unsinkable Kernel by wilsone8 · · Score: 1

      Only if by "It just works better", we mean, "everyone tried this, found out it was really slow in practice, and abandoned it in favor of a less rigorious model that actually lets us get stuff done"

      --
      The real problem is not whether machines think but whether men do. - B.F. Skinner
    9. Re:The unsinkable Kernel by Moe+Taxes · · Score: 1

      It's your choice a speed boat that depends on an intact hull or a half-flooded barge limping around in circles. There are a lot of steps between a good boat and a sunk boat, but for my servers anything less than a good boat might as well be sunk.

      Agruments for microkernels seem unsupported by reality. If it made an kernel easier to design and implement then I would be running hurd. And what production machine can tolerate partial failure? The complexites introduced with message passing microkernels have shown themselves to be less managable than the traditional monolithic kernel.

      --
      It took a real world war to end the airplane's patent wars. - Fâché Rouge -
    10. Re:The unsinkable Kernel by tenchiken · · Score: 3, Interesting

      It also should be noted that for some insane reason, the Titanic crew didn't counterflood. If they had they might have been able to significantly slow down the entire drop of the ship, and almost certainly the frame of the ship would have remained intact on the water rather then having the stern of the ship rise out of the water, and then the entire ship snapping.

    11. Re:The unsinkable Kernel by Jendi · · Score: 1

      "I'm the Thread of the Worrrrrllld!!!!"

      Sorry.

    12. Re:The unsinkable Kernel by this+great+guy · · Score: 3, Funny

      Andrew should name such an unsinkable kernel TiTanenbaum.

    13. Re:The unsinkable Kernel by Anonymous Coward · · Score: 0

      well, it's a poor metaphore -- clearly your broken kernel wouldn't actually be flooded with water

    14. Re:The unsinkable Kernel by not-admin · · Score: 1

      Very likely they ddin't have training for that contingency.
      The ship was unsinkable, after all..

    15. Re:The unsinkable Kernel by Skreems · · Score: 1

      Would you rather the machine dropped a system driver, or rebooted? Which is faster to recover from?

      Also, I thought (though I could be wrong) that a lot of this was an implementation benefit as well... the system is rock solid and stable, now you go to add another service in the kernel. No matter how badly you screw it up, you can't destabilize the other components, whereas with a macrokernel that remains a distinct possibility.

      --
      Slashdot needs a "-1, Wrong" moderation option.
      The Urban Hippie
    16. Re:The unsinkable Kernel by TeknoHog · · Score: 1
      Andrew should name such an unsinkable kernel TiTanenbaum.

      And preferably run it on a spruced up Powerbook.

      --
      Escher was the first MC and Giger invented the HR department.
    17. Re:The unsinkable Kernel by msh104 · · Score: 1

      I also understood from "hurd" development that it is a bitch to debug.

  5. How hard... by JonJ · · Score: 3, Interesting

    Would it be to convert Linux to a microkernel? And Apple is using Mach and BSD as the kernel XNU, are they planning to make it a true microkernel? AFAIK it does some things in kernel space that makes it not a microkernel.

    --
    -- Linux user #369862
    1. Re:How hard... by Anonymous Coward · · Score: 0

      Pretty much impossible. With 2.5 million lines of code, the potential for new bugs, and the lengthy process involved, would make this more difficult than constructing a whole new operating system. Not to mention compatibility issues with current software...

      In software engineering, you will find that once a program has been released, it's pretty much unthinkable to have any large scale paradigm shift in its design, without somehow re-making it.

    2. Re:How hard... by muhgcee · · Score: 1

      I'm no kernel hacker, but I would imagine that to "convert" Linux to a microkernel would entail rewriting Linux...ie, there would be no "Linux" when you were done "converting" it.

    3. Re:How hard... by cp.tar · · Score: 2, Funny

      Well, I hear that GNU/HURD is in the making...

      --
      Ignore this signature. By order.
    4. Re:How hard... by Anonymous Coward · · Score: 0

      Apple did exactly this, in fact, before the NeXT acquisition became a reality. Their mach-microkernelled linux was called mkLinux, and it worked.

    5. Re:How hard... by muhgcee · · Score: 1

      GNU/Hurd is downloadable and somewhat usable. Of course, not meant for production.

    6. Re:How hard... by mmkkbb · · Score: 2, Informative

      Linux can be run on top of a Mach microkernel. Apple supported an effort to do this called mkLinux which ran on both Intel and PowerPC hardware.

      --
      -mkb
    7. Re:How hard... by Abcd1234 · · Score: 1

      Yeah, except with products like mklinux, the kernel is run as a single server over the microkernel, which kinda defeats the whole purpose.

    8. Re:How hard... by salec · · Score: 1

      Perhaps they could pick one of the too-high-level kernel functionalities, encapsulate it (untangle from other parts of kernel, make it like ... a detachable module) and export it out of kernel (out of inner security ring), as some kind of "uber" process (having higher priority then any of the processes "proper"). Then repeat that for next such funcionality, untill kernel has no presumptions about hardware it runs on (like having a filesystem, for example), except for CPU and memory.

      We already have this separation to some extent, at least in idea if not strictly enforced - loadable kernel modules are dressed to play nice - ask for registration to assume certain roles, use kernel system calls, but they are not treated with due suspicion, held beyond a protective fence to secure other parts of this elite circle of software (and even less for "dirty peasant" common processes which have no business with them).

    9. Re:How hard... by diegocgteleline.es · · Score: 1

      IMO, it'd be much easier to progressively move things to user space than writing a microkernel from scratch. Saying "let's write a microkernel from scratch" is just like saying "we're goint to write a complete desktop from scratch, with a complete office suite and everything!". Not feasible in practice - too many efforts. It's completely possible to write a "microkernel API" in the linux kernel if some day it has sense. People has been also experimenting with userspace drivers

    10. Re:How hard... by iabervon · · Score: 4, Interesting

      This is actually sort of happening. Recent work has increased the number of features that can be provided in userspace. Of course, this is done very differently from how a traditional microkernel does it; the kernel is providing virtual features, which can be implemented in user space. For example, the kernel has the "virtual file system", which handles all of the system calls, to the point where a call to the actual filesystem is needed (if the cache, which the VFS handles, is not sufficient). The actual calls may be made to userspace, which is a bit slow, but it doesn't matter, because it's going to wait for disk access anyway.

      The current state is that Linux is essentially coming around to a microkernel view, but not the classic microkernel approach. And the new idea is not one that could easily grow out of a classic microkernel, but one that grows naturally out of having a macrokernel but wanting to push bug-prone code out of it.

    11. Re:How hard... by Sique · · Score: 2, Insightful

      Check out mkLinux and L4Linux. The efforts are made. The userland linux service on a microkernel is a reality.

      --
      .sig: Sique *sigh*
    12. Re:How hard... by rg3 · · Score: 2, Insightful

      Another example of this approach is libusb. Instead of providing drivers for USB devices inside the kernel, you can do that with libusb. It gives you an interface to the USB system. Many scanner and printer drivers use it, and the drivers are included in the CUPS or SANE packages.

    13. Re:How hard... by mmkkbb · · Score: 1

      You're right. The only thing it was really good for was running multiple versions of the Linux kernel at the same time.

      --
      -mkb
    14. Re:How hard... by slamb · · Score: 1
      > Check out mkLinux and L4Linux. The efforts are made. The userland linux service on a microkernel is a reality.

      I've never understood the point of systems that plop a monolithic kernel on top of a microkernel. Sure, if there's a bug in the monolith, the microkernel doesn't crash. But who cares? There was only one thing running on top of it, and it isn't running properly anymore.

      The point of a microkernel design is to compartmentalize things like filesystem drivers and the TCP layer, as the article said. How does this approach accomplish that?

    15. Re:How hard... by samkass · · Score: 2, Informative

      Years before mkLinux, CMU experimented with some software called MacMach. It ran a "real" BSD kernel over Mach, and MacOS 6.0.7 on top of that. (By "real" I mean that you had to have one of those uber-expensive old BSD licenses to look at the code.) You could even "ps" and get MacOS processes in the list, although they weren't full peers of a unix process. I believe the most recent machine MacMach could run on was a Mac ][ci.

      Also, in the early 90's Tenon Intersystems had a MacOS running on Mach that had some UNIXy stuff underneath as well.

      Then, of course, there was mkLinux, known for being almost compatible with Linux, almost compatible with most hardware, and almost as fast as just running Linux.

      All of them ran reasonably well, but neither really embraced the kernelized design from UI to drivers to hardware, and all were to varying degrees slower than the mainstream versions of their software.

      --
      E pluribus unum
    16. Re:How hard... by The_Wilschon · · Score: 1

      The best kept secret of the decades:

      the HURD IS Duke Nukem Forever!

      --
      SIGSEGV caught, terminating

      wait... not that kind of sig.
    17. Re:How hard... by Intron · · Score: 1

      So that if the filesystemn crashes you can keep right on, er... what now?

      --
      Intron: the portion of DNA which expresses nothing useful.
    18. Re:How hard... by JulesLt · · Score: 1

      The tendency with OS X has been the other way.

      As they have a strictly controlled hardware platform it is less risky than on systems that have to maintain a wider hardware base.

      --
      'Capitalists of the world, unite! Oh ... you have' (League Against Tedium)
    19. Re:How hard... by cp.tar · · Score: 1

      At least it is taking forever.

      Alas, I repeat myself. And many others.

      Frankly, though, I would really love a completely modular system... not just in the kernel, but in the userland as well...
      For instance, no more huge, clumsy office suites... but rather sets of tiny programs, each performing a tiny function and completely optional...
      I'm allowed to dream, right?

      --
      Ignore this signature. By order.
    20. Re:How hard... by slamb · · Score: 1
      > So that if the filesystemn crashes you can keep right on, er... what now?

      You can:

      • keep right on trucking, maybe. If it's the NFS driver, then your network filesystem went down. Okay, you can still use the rest of the system. If it's the mouse driver, the network stuff still works. There are lots of areas of the kernel that might not be critical for what you're doing.
      • produce a decent bug report - "the vfat filesystem process crashed" - and be confident that it's a bug in either the filesystem process or the microkernel. [1] The TCP driver couldn't have possibly corrupted anything in the filesystem driver unless there's a bug in the microkernel. In fact, you can even restart that process and try different things to reproduce it, without rebooting the whole system. Maybe even script actions. As is, you can kinda sorta do stuff like that with Xen or UML, but this way's easier.
      • develop the kernel stuff more easily, for the same reasons that make bug reports easier.

      [1] - Someone did bring up the point that you can do stuff like tell the hardware (in your non-privileged device driver) to do a DMA transfer to memory you don't own. So the memory protection is weak without applying it to DMA transfers, which apparently some hardware does.

    21. Re:How hard... by antrik · · Score: 1

      Maybe you should look at Plan9: It does provide a very modular application infrastructure.

      However, Plan9 does *not* have a modular kernel. Also, it is not UNIX-compatible.

      With the Hurd on the other hand, while having the necessary foundations for a very modular archtecture both in the Kernel *and* in applications, the latter possibility is completely unused so far :-(

      --
      All my comments get moderated +-0, spotless.
    22. Re:How hard... by Sique · · Score: 1

      First: You don't need to run only the single UNIX service on the kernel. When I was involved in L4Linux, we planned to have the UNIX kernel doing all the non real time stuff (authorisation, administration etc.pp.) and run in parallel real time jobs like data stream switching, robotics etc.pp.

      Second: The single UNIX service is a kind of fallback. When you are designing a new operating system, it's nice to know that all services are already there, and you can start replacing them one by one with compartemented services.

      Third: It is nice to have all the drivers usable for exotic hardware, so recycling them for your project is easy. And stuff that doesn't need to be compartemented or doesn't have special requirements can be left within the single UNIX service.

      --
      .sig: Sique *sigh*
    23. Re:How hard... by zerocool^ · · Score: 1


      If you read the link from the article, you get some background into Linus and AT's flame war, back during the creation of Linux. What you don't get is the rest of the background.

      For that, you need to read "Just for Fun", Linus' autobiography (ghost written by David Drake).

      In it, he discusses the reasons that Linux is a monolithic kernel. Linus knew about the arguments for both when he went into the process of writing the kernel. He chose to go monolithic for a number of reasons.

      1.) Monolithic kernels are easier to write. At the time, according to Linus, there weren't more than 100 or so people who actually used linux - for varoius reaons - you had to have a 386. You had to have 4MB of ram. You had to partition your hdd and install Minix first. etc. Writing a Monolithic kernel meant that linus could speed development on it. See the comment about "wins big on being-available-now" in the usenet post, re HURD.

      2.) Linus felt at the time of writing Linux, and again at the time of writing the book (1999-2000 ish), that most of the discussed advantages of writing a microkernel are false advantages. Namely, security, speed, and simplicity. According to Linus, when you write a microkernel, yes, each part is in and of its self more simple than it would have been in a monolithic kernel. HOWEVER, for every small, compartmentalized part you add, you increase the complexity of the overall kernel by an order of magnitude, due to the fact that now you have to deal with passing information between all the parts, as well as trusting the information you're getting, or authenticating it somehow.

      Linus felt that a microkernel would be easer to write, and in the end, more secure (less worries about bad messages being passed), less complex (message passing again), and faster (the time it takes to check the message passing).

      He also goes to great lengths to point out how much he respected Andy Tanenbaum. He says that there are books that change people's lives. The bible. The HHGttG. War and Peace. For him, that book was "Operating Systems: Design and Implementation" by AT. Linus started with Minix because he respected AT so much; Linux started as simply a terminal emulation program in order that he could interface with U-Helsenki's Unix machine, and as an exercise to play around with the advanced capabilities of the 386 processor.

      ~Will

      --
      sig?
  6. Metaphors eh? by 10Ghz · · Score: 1

    Well, if current kernels are "ships before compartmentalisation", then microkernels are something like car-engines that are broken down to tiny bits. Everything is a separate part, and it works just as well.

    I wouldn't give much credit to metaphors. Even when they are said by Andrew "Broken Record" Tanenbaum.

    --
    Lesbian Nazi Hookers Abducted by UFOs and Forced Into Weight Loss Programs - -all next week on Town Talk.
    1. Re:Metaphors eh? by Anonymous Coward · · Score: 0

      Well no, microkernels are are like ships after compartmentalisation.

    2. Re:Metaphors eh? by Anonymous Coward · · Score: 0

      Snap your cam shaft and your engine is fucked until it's fixed. Your attempt at a contrary metaphor just plays into his theory.

    3. Re:Metaphors eh? by jelle · · Score: 1

      "Snap your cam shaft and your engine is fucked until it's fixed. Your attempt at a contrary metaphor just plays into his theory."

      So is your microkernel-engine without a camshaft. Plus, with all the parts in separate boxes, your 65hp engine might just fit in the truckbed of that huge F350 you're powering with it.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    4. Re:Metaphors eh? by somersault · · Score: 1

      Car enginers pretty much are put together from tiny bits. The separate parts of a microkernel would still be quite useless in and of themselves, without other parts to talk to. The parts of a car engine can only access the parts that they are meant to, unless you start drilling holes and attaching hoses and stuff :p

      --
      which is totally what she said
    5. Re:Metaphors eh? by AKAImBatman · · Score: 3, Interesting

      Methinks a better analogy is: Snap your timing chain on a high performance engine and watch the entire machine tear itself into a piece of junk. Snap a belt or two on a more pedestrian engine and watch it stop until the belt is replaced.

    6. Re:Metaphors eh? by misleb · · Score: 3, Insightful

      The problem I have with the compartmentalized ship metaphor is that I question the value of being able to run a system that has one compartment "breached." The system may technically still run, but is it goign to be of any use in such a state? Aren't you going to want to reboot it anyway or is the theory that you can restart a component without rebooting? Is this realistic? Seems to me that a system would get into a pretty funky state depending on which component failed.

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    7. Re:Metaphors eh? by udippel · · Score: 1

      Someone mod parent up, please !

      This is the closest on the first page of Slashdot for this topic:
      Sure, you can make and keep kernie run almost forever. But would you really want to do so when your webserver is owned, your device driver screwed, your MTA sending SPAM everywhere ? Therefore, alas, the whole matter is a dead fish.
      If you want to stick with the ocean-liner: You sit on a boat with bird flu, pox, a broken compartment, no food, but the engine keeps running, guaranteed. I have no clue why you would want this, by the way ? What is the great advancement ? Okay, you have compartments; you can bet on an item or another to work forever. Does this bring you to New York Harbour ?

      To me the alternative of off-loading device drivers looks much more promising. There is ever more hardware, and isolating crappy drivers (frequently they are) is a possible way to clean the kernel code.
      An extra layer between hardware and kernel is another goodie. Because you can run your stuff unmodified on that kernel; contrary to the Minix solution.

      Sure Andrew T. is a great chap; very knowledgable AFAICS; though Minix is but an obsession for him. What a pity. Sure, monolithic kernies are ugly. Sure, microkernels are pure beauty, but don't do optimal daily work.

    8. Re:Metaphors eh? by mikiN · · Score: 2, Insightful

      Simple. With a compartmentalized ship you can repair or replace the faulty compartment while still at sea. With a single-compartment ship (with damage way below the waterline) you have to take it to the dry dock to do repairs (that is, if you're able to keep it afloat that long anyway...)

      --
      The Hacker's Guide To The Kernel: Don't panic()!
    9. Re:Metaphors eh? by Anonymous Coward · · Score: 0

      Screw compartmentalization.
      If I'm going down I'm taking alot of innocent people with me!

    10. Re:Metaphors eh? by srussell · · Score: 3, Informative
      Aren't you going to want to reboot it anyway or is the theory that you can restart a component without rebooting?
      Yeah, I think that's the point.

      The goal is to have a system such that you maximize the segregation of the parts. If the SCSI subsystem crashes -- for example -- you flush it and restart it. While it may not be possible to totally isolate every subsystem, with a microkernel subsystems should be more robust than in monolithic kernels.

      For all of Linus' scorn of microkernels, Linux borrows heavily from the concept, if not from the theory. One could almost say that Linux implements a microkernel poorly through the kernel module interface. It fails to be a true microkernel in a number of ways, though, not least of which is the low degree to which it isolates modules.

      In any case, your nervousness about a system where a "fundamental" subsystem craps out is understandable in someone who's main experience is with monolithic kernels, because the corruption of one subsystem often infects other systems. For example, IME when the Linux SCSI module starts barfing (which happens with distressing regularity), if you're lucky, you can unload and reload the SCSI modules, but eventually, you're going to have to reboot, because it never quite works well after a reload. In a microkernel, subsystems are just services that other subsystems may use, but aren't intimate with. A corruption in one subsystem shouldn't lead to corruptions in any other subsystem.

      --- SER

    11. Re:Metaphors eh? by misleb · · Score: 1

      I'm not questioning the compartmentalized ship idea, I'm questioning the compartmentalize kernel. You can reboot a kernel. You can't just reboot a ship. A ship NEEDS to stay afloat no matter what. An operating system doesn't. Sometimes it is better that a kernel panic (sink) rather than continue running in a crippled and possibly corrupt state. There is a reason why the kernel kills processes that segfault rather than try to keep them running. If you keep them running, you risk (more) data corruption.. and that is generally considered worse than a little downtime.

      That said, modern operating systems are already pretty well compartmentalized with the majority of code running in user space. The kernel is actually a relatively small part of the whole system. At some point it becomes a matter of diminishing returns. You COULD break down the kernel into smaller parts and maybe that would be a little more elegant, but in the real world it probably isn't going to make much difference.

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    12. Re:Metaphors eh? by misleb · · Score: 1

      The goal is to have a system such that you maximize the segregation of the parts. If the SCSI subsystem crashes -- for example -- you flush it and restart it.

      If the disk subsystem crashes, how exactly do you get at the on disk program to start it with? Are you going to try to restart it without actually reloading it? Would you trust it?

      While it may not be possible to totally isolate every subsystem, with a microkernel subsystems should be more robust than in monolithic kernels.

      The different between theory and reality is that, in theory, there is no difference.

      For all of Linus' scorn of microkernels, Linux borrows heavily from the concept, if not from the theory. One could almost say that Linux implements a microkernel poorly through the kernel module interface. It fails to be a true microkernel in a number of ways, though, not least of which is the low degree to which it isolates modules.

      Likewise, you could say that OS X implements a microkernel poorly (or is it a poor microkernel?). But in the end, is it any faster or more stable or more modular than your average monolithic kernel? I don't mean to bring up OS X as an example of microkernel's fatal flaws, but is there another example of a microkernel based system that is much better? Wasn't NT4 microkernel based? Did that help it?

      In any case, your nervousness about a system where a "fundamental" subsystem craps out is understandable in someone who's main experience is with monolithic kernels, because the corruption of one subsystem often nfects other systems. For example, IME when the Linux SCSI module starts barfing (which happens with distressing regularity), if you're lucky, you can unload and reload the SCSI modules, but eventually, you're going to have to reboot, because it never quite works well after a reload.

      What makes you think that a microkernel would necessarily fair much better in this case? In my experience, SCSI problems are as much hardware as software.

      A corruption in one subsystem shouldn't lead to corruptions in any other subsystem.

      The question remains, what is the value in running a system with one of its basic subsystems (disk I/O in the above example) crashed? If the engine room of a ship gets breached, the ship stays afloat. Great. Hardly anyone dies. If the disk subsystem of an OS craps out, well, thats bad. You're probably going to have to reboot it anyway and you certainly don't want the rest of the system to run as if nbothing happened because you have no idea what the disk subsystem did or did not write to disk before it crashed. Continuing as if nothing happened would be disasterous.

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    13. Re:Metaphors eh? by jelle · · Score: 1

      Actually, even the smallest fourbangers will smash their heads in the valves if you break the timing belt...

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    14. Re:Metaphors eh? by jelle · · Score: 1

      Oops, meant to say 'smash their valves in the cylinders'.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    15. Re:Metaphors eh? by AKAImBatman · · Score: 1

      Uh, no. Only interference engines have that problem. Unless you're driving a Pontiac (generally classified as "high performance" engines) or an older vehicle, you're unlikely to end up with an interference engine.

    16. Re:Metaphors eh? by jelle · · Score: 1

      "Uh, no. Only interference engines have that problem. Unless you're driving a Pontiac (generally classified as "high performance" engines) or an older vehicle, you're unlikely to end up with an interference engine."

      The 2002-2004 models of the VW Beetle, Jetta, Passat all have an Interference engine. I wouldn't call that an older car, or a car with a high-performance engine (esp not the Beetle and Jetta)... (http://www.forparts.com/daycovolkswagen.htm)

      Non-interference engines have lower compression ratios because of the increased space between the pistons and the cylinders... A Higher Lower compression ratio does not just mean that you can make a more powerful engine, but it also means that you can make an engine that makes more efficient use of the energy in the gasoline (gas mileage).

      But ok, so your point is that you can make a non-interference engine and prevent the self-destruct when the timing belt gives up.

      You don't need a microkernel for that kind of protection, you can do the same thing in monolithic kernels by running the driver in userspace (in a kernel thread). So you have a choice. With a microkernel you don't have the option to use a rock-solid driver without overhead.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    17. Re:Metaphors eh? by Grishnakh · · Score: 1

      To my knowledge, every Honda engine made in the last 20 years or so is an interference engine. It's very important to replace the timing belts according to the published maintenance schedule on Hondas (but as long as you do, the engine will run forever).

    18. Re:Metaphors eh? by kerasineAddict · · Score: 1

      If the disk subsystem crashes, how exactly do you get at the on disk program to start it with? Are you going to try to restart it without actually reloading it? Would you trust it?
      If you store a copy of the disk driver relating to whichever disk holds further drivers in a portion of memory marked read only, then you can restart any driver. Same would apply for the network driver on a diskless system.

      The question remains, what is the value in running a system with one of its basic subsystems (disk I/O in the above example) crashed? ... If the disk subsystem of an OS craps out, well, thats bad. You're probably going to have to reboot it anyway and you certainly don't want the rest of the system to run as if nbothing happened because you have no idea what the disk subsystem did or did not write to disk before it crashed. Continuing as if nothing happened would be disasterous.
      Running the system as if nothing happened would be disasterous. But choosing appropriate action based on the problem of one subsystem, which may or may not be reboot it anyway. If the hardware is faulty, then no amount of software will fix it. But if a driver dies, and the system can remain usable, the driver's author could be sent debugging information. Notifiying the user may also be important. It sucks when the kernel crashes and document I'm writing gets lost. But if there was a hard drive crash, and I could still print it, or save it to a network device, that would be improvement. And if it wasn't the HDD, at the very least the system could do a clean shutdown. Both are better alternatives than just killing everything.
    19. Re:Metaphors eh? by mikiN · · Score: 1

      Ship analogy helps again. If the engine room is on fire (sorry but can't resist reference to the Calypso incident), instead of just shutting down all operations aboard ship and praying to the god Neptunus to have mercy, it may be very advantageous if the radio room kept operating (to call for help, for instance), while the crew continued helping passengers to evacuate affected areas while informing them on what exactly is going on, etcetera.

      Put that analogy to a server: if the SCSI system dies, it may be advantageous to inform all server processes that the filesystem is no longer accessible, so that they in turn can inform already connected or newly connecting clients that something is wrong, instead of just waiting for things to time out (remember those hanging NFS mounts with Zen-like time-out periods?)

      In short, gracefully degrading service while informing those affected is way better than just "disappearing from the radar" with no clue to clients whatsoever.

      --
      The Hacker's Guide To The Kernel: Don't panic()!
    20. Re:Metaphors eh? by magetoo · · Score: 1
      If the disk subsystem crashes, how exactly do you get at the on disk program to start it with? Are you going to try to restart it without actually reloading it? Would you trust it?
      Well, duh, you load the "bootstrap" disk subsystem from ROM, obviously. Then you can load the "real" (full-featured, with permission checking, journalling) disk subsystem; start that up, and deactivate the bootstrap system.

      In a manner of speaking, you are rebooting. Except that that single really important process doesn't have to be brought down, even for a second.

      The question remains, what is the value in running a system with one of its basic subsystems (disk I/O in the above example) crashed? [...] If the disk subsystem of an OS craps out, well, thats bad. You're probably going to have to reboot it anyway and you certainly don't want the rest of the system to run as if nbothing happened because you have no idea what the disk subsystem did or did not write to disk before it crashed. Continuing as if nothing happened would be disasterous.
      Why wouldn't I want to keep the rest of the system running as if nothing happened? Surely, that would be the ultimate goal for any system that needs to be available all the time. "You're probably going to have to reboot it anyway" is simply not true if you can restart all the parts completely independantly from each other.

      Obviously, you would have to keep in mind that the assumptions have changed. It would no longer be acceptable for a critical program to crash if the whole file system was yanked out from under it.

    21. Re:Metaphors eh? by m50d · · Score: 1

      On a well-designed system it is absolutely realistic to be able to restart it, especially since so much kernel code is drivers for non-essential hardware. If my sound card drivers crash, just block on any reads/writes until they're restarted. Same for my network card, cd drives, even hard disk should be alright for short periods. Heck, there is no reason this shouldn't work for losing a cpu on an SMP system, or a stick of ram provided the core kernel parts (scheduler etc.) weren't on that one.

      --
      I am trolling
    22. Re:Metaphors eh? by misleb · · Score: 1

      If you store a copy of the disk driver relating to whichever disk holds further drivers in a portion of memory marked read only, then you can restart any driver. Same would apply for the network driver on a diskless system.

      I don't think there is generally a driver per disk. It would be the whole subsystem. It seem a little excessive to be storing "backup" copies of drivers in memory so you can restart them. I'm no kernel hacker, but I do know that hardware can get into some strange states that are difficult to recover from short of a reboot.

      Running the system as if nothing happened would be disasterous. But choosing appropriate action based on the problem of one subsystem, which may or may not be reboot it anyway. If the hardware is faulty, then no amount of software will fix it. But if a driver dies, and the system can remain usable, the driver's author could be sent debugging information. Notifiying the user may also be important. It sucks when the kernel crashes and document I'm writing gets lost. But if there was a hard drive crash, and I could still print it, or save it to a network device, that would be improvement.

      It think this goes beyond what a microkernel can accomplish depending on what subsystem has a problem. The printing subsystem in your favorite OS is going to require the ablity to write to disk (spooling). Part of your word processing program could be swapped to disk which contains the code needed to save a document. How to swap that back into RAM? What if it is the paging system the frieks out? Your program is going to hang whether you have a microkernel or a monolithic kernel.

      And if it wasn't the HDD, at the very least the system could do a clean shutdown. Both are better alternatives than just killing everything.

      Depends on the problem. I've had several Linux kernel problems, for example, that didn't hang the machine. There are kernel panics, and then there are just "OOPS"s. I don't know how much better a microkernel system would fare. Again, depends on what goes wrong.

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    23. Re:Metaphors eh? by misleb · · Score: 1

      Put that analogy to a server: if the SCSI system dies, it may be advantageous to inform all server processes that the filesystem is no longer accessible, so that they in turn can inform already connected or newly connecting clients that something is wrong, instead of just waiting for things to time out (remember those hanging NFS mounts with Zen-like time-out periods?)

      So your major complaint, in this case, is with timeouts and client communication, not micro vs. monolithic kernels.

      In short, gracefully degrading service while informing those affected is way better than just "disappearing from the radar" with no clue to clients whatsoever.

      Either way, the clients can't write to the server so what difference does it make? I know if an NFS server disappears, I get kernel logs saying such. How would a microkernel help?

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    24. Re:Metaphors eh? by kpharmer · · Score: 0

      > Methinks a better analogy is: Snap your timing chain on a high performance engine and watch the
      > entire machine tear itself into a piece of junk. Snap a belt or two on a more pedestrian engine and
      > watch it stop until the belt is replaced.

      And just to be a complete nitpicker:
          Or just go completely nuts in the opposite direction with timing *gears* and never have to worry about breakage or stretch :-)

      and yep, some vehicles came stock with timing gears. I've got two international harvester scouts in my driveway that can attest to this

    25. Re:Metaphors eh? by misleb · · Score: 1

      Well, duh, you load the "bootstrap" disk subsystem from ROM, obviously. Then you can load the "real" (full-featured, with permission checking, journalling) disk subsystem; start that up, and deactivate the bootstrap system.

      PCs don't have filesystem aware ROM.

      Why wouldn't I want to keep the rest of the system running as if nothing happened?

      Because, as I said in the text you quoted, you have no idea what the crashed disk subsystem did or did not write to disk. If you continue as if nothing happened, you coudl REALY fuck up your data.

      Anyway, I am not aware of "disk subsystem failure" to be a major problem in modern operating systems. Disks fail, sure, but how often does the subsystem just randomly cause a kernel panic?

      Obviously, you would have to keep in mind that the assumptions have changed. It would no longer be acceptable for a critical program to crash if the whole file system was yanked out from under it.

      Like others who have replied to me, I think you are going beyond what a microkernel can accomplish. If a program is in the middle of a disk write operation, either that program has a backup plan when that write times out or it crashes. The kernel isn't of much help.

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    26. Re:Metaphors eh? by misleb · · Score: 1

      On a well-designed system it is absolutely realistic to be able to restart it, especially since so much kernel code is drivers for non-essential hardware. If my sound card drivers crash, just block on any reads/writes until they're restarted. Same for my network card, cd drives, even hard disk should be alright for short periods. Heck, there is no reason this shouldn't work for losing a cpu on an SMP system, or a stick of ram provided the core kernel parts (scheduler etc.) weren't on that one.

      Indeed, a well designed system should be fault tolerant. Solaris, for example, can recover from CPU failure and RAM failure. But that doesn't have much to do with microkernels. As for other drivers failing, well, I'm not so sure it is really that big of a problem to be talking about radical OS redesigns. Especially one that, traditionally, has significant performance penalties. I think most people would rather have a system that runs fast all the time vs. one that can handle that rare event when some faulty code in their sound driver writes to the wrong bit of RAM or whatever.

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    27. Re:Metaphors eh? by Anonymous Coward · · Score: 0

      The system may technically still run, but is it goign to be of any use in such a state? Aren't you going to want to reboot it anyway or is the theory that you can restart a component without rebooting? Is this realistic? Seems to me that a system would get into a pretty funky state depending on which component failed.

      It depends on which driver failed. Imagine running a webserver on an off-the-shelf PC. The 3D driver fails. What would you prefer, reboot the machine, or just kill the 3D driver? This example is actually one of the places where Linux is Micro-kernel-like. The major part of the graphics driver (X) does run in user-space, and can often be restarted if it fails.

      And yes, restarting a driver is what you would do. The idea is that drivers run in userspace just like every other program. And as long as they don't lock up the hardware, they generally *can* be restarted (good lock with restarting a driver that just locked up the PCI bus).

      Another example: you are watching a movie on your desktop PC, along with your girlfriend. Half way through, the network driver crashes. What would you prefer? Rebooting the PC, while she goes call her friend, and talk on the phone for a couple of hours? Or continue watching the movie, and then restart the network driver later?

    28. Re:Metaphors eh? by m50d · · Score: 1
      But that doesn't have much to do with microkernels.

      It makes it a lot easier. If most things are in userspace processes you only need to worry about specific handling of a small amount of code.

      As for other drivers failing, well, I'm not so sure it is really that big of a problem to be talking about radical OS redesigns. Especially one that, traditionally, has significant performance penalties. I think most people would rather have a system that runs fast all the time vs. one that can handle that rare event when some faulty code in their sound driver writes to the wrong bit of RAM or whatever.

      I don't. I came to linux because of the promise of stability, no more random crashes. I have much more CPU power than I need.

      --
      I am trolling
    29. Re:Metaphors eh? by magetoo · · Score: 1
      PCs don't have filesystem aware ROM.
      There's nothing that says they couldn't. Ever heard about Open Firmware? And with EFI, I'm not so sure "real" PCs won't have it soon either.

      Anyway - you asked. If you really are concerned about restarting parts of the system when the disk is inaccessible, there is a solution. I'm not saying you could start using a MK-based system on your average x86 Dell desktop and it would make your farts smell like roses, just that a MK architecture can do some things better, if you let it.

      On the "as if nothing happened" scenario.
      Well, if you're constantly writing to disk, you might very well be screwed. If you're constantly *reading* from disk, this just might save you, though. And what about journalling file systems? There's a good chance you could actually know what's been written.

      Like others who have replied to me, I think you are going beyond what a microkernel can accomplish. If a program is in the middle of a disk write operation, either that program has a backup plan when that write times out or it crashes. The kernel isn't of much help.
      Perhaps. It certainly isn't going to be a magic bullet for existing programs. But then OTOH, a backup plan as simple as "retry" might work.
    30. Re:Metaphors eh? by srussell · · Score: 1

      If the disk subsystem crashes, how exactly do you get at the on disk program to start it with?

      Oh, heck... that's easy. The code's already in memory, so all the kernel has to do is clear out the module's stack and heap space and restart it.

      While it may not be possible to totally isolate every subsystem, with a microkernel subsystems should be more robust than in monolithic kernels.

      The different between theory and reality is that, in theory, there is no difference.

      Uh, OK. What's that got to do with this discussion? Every reliability-based OS on the market today is a micro-kernel. Because they're more reliable. That's not theory, that's practice.

      Micro kernels are more robust. They aren't perfectly robust, but they're significantly, demonstrably more robust than monolithic kernels.

      Likewise, you could say that OS X implements a microkernel poorly (or is it a poor microkernel?).

      Yes, you could, although it is a bastard microkernel, rather than a microkernel impostor. Linux's microkernel adaptions provide nothing in the way of improved stability. OS-X is fundamentally stable, but has been altered in a way that reduces its stability. There's a difference.

      is there another example of a microkernel based system that is much better? Wasn't NT4 microkernel based? Did that help it?

      QNX.

      And, yes, NT4 was so much more stable than any other, monolithic kernel Windows, I'm surprised that you brought that up. Companies used, and still use, NT far beyond its "life cycle" because of how fucking stable it was. It was so much more stable, that Microsoft integrated huge chunks of NT into its later OSes... and they got more stable because of it.

      What makes you think that a microkernel would necessarily fair much better in this case? In my experience, SCSI problems are as much hardware as software.

      Ok, let's say that SCSI problems are hardware related, for the sake of the argument. Let's say that the hardware is just flaky; the code on the SCSI chip is buggy, or something.

      In a monolithic kernel, a SCSI hardware problem will cause the SCSI module to crap out, which will screw up all sorts of other things in the kernel. One drive dies, and all of a sudden -- because the SCSI module is borked -- you can't get to any of your SCSI devices. Your 'ls' hangs the terminal, and can't even be killed with a SIGHUP. In the worst case -- often the common case, in Linux -- your entire computer is dead in the water. In Linux, you reboot.

      Let's assume the micro-kernel SCSI module is equally unable to gracefully handle bad situations like hardware failures. In a micro-kernel OS, if the kernel notices that the module is borked it just restarts the module, because it hasn't been corrupted by whatever screwed up the SCSI module. Or, if it doesn't, for some reason, you can tell it to.

      The question remains, what is the value in running a system with one of its basic subsystems (disk I/O in the above example) crashed?

      There is no value in running a system with a crashed subsystem, which is why, with a micro-kernel, you simply restart the subsystem and continue. Because mono-kernels don't segregate subsystems, if a subsystem crashes, you never know what else has been affected, and you reboot.

      If you do a little research, you'll notice that monolithic kernel advocates never argue that monolithic kernels are as stable as or more stable than micro kernels. The argument is always that monolithic kernels are faster, not more stable. And that's true. It is equally true that microkernels are more robust than monolithic kernels. What Microkernel advocates argue is that the speed difference isn't as b

  7. Or... by Mr.+Underbridge · · Score: 5, Funny
    You could just have a small monolithic kernel, and do as much as possible in userland.

    Best of both worlds, no? Wow, I wish someone would make such an operating system...

    1. Re:Or... by Zarhan · · Score: 2, Interesting

      Considering how much stuff has recently been moved to userland in Linux (udev, hotplug, hal, FUSE (filesystems), etc) I think we're heading in that direction. SELinux is also something that could be considered "compartmentalized".

    2. Re:Or... by otis+wildflower · · Score: 1

      Unfortunately, ASCII strips the sarcasm bit..

      (I wonder if one of the UTF encodings restores it?)

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

      Man, I swear I actually heard the whooshing sound ...

    4. Re:Or... by Metteyya · · Score: 1, Troll

      Who the hell modded you Funny?

    5. Re:Or... by bcmm · · Score: 1

      Someone probably got confused and thought he was talking ironically about GNU Hurd, which is always funny.

      --
      # cat /dev/mem | strings | grep -i llama
      Damn, my RAM is full of llamas.
    6. Re:Or... by Mr.+Underbridge · · Score: 1

      You know, Hurd is coming bundled with Duke Nukem Forever...

    7. Re:Or... by Anonymous Coward · · Score: 0

      No mon, Hurd is Duke Nukem Forever. Wosn't dat obvi - I mean, super-clear already?

    8. Re:Or... by Anonymous Coward · · Score: 0

      Seems nxdos is heading in that direction with asmuch of the extra .asm modules as tsrs and system files. --chris http://nxdos.sourceforge.net/

  8. NT4 by truthsearch · · Score: 2, Interesting

    NT4 had a microkernel whose sole purpose was object brokering. What I think we're missing today is a truely compartmentalized microkernel. The NT4 kernel handled all messages between kernel objects, but all it did was pass them along. One object running in kernel space could still bring down the rest. I assume that's still the basis of the XP kernel today.

    I haven't looked at GNU/Hurd but I have yet to see a "proper" non-academic microkernel which lets one part fail while the rest remain.

    1. Re:NT4 by segedunum · · Score: 4, Interesting

      NT4 had a microkernel whose sole purpose was object brokering.

      Well, I wouldn't call NT's kernel a microkernel in any way for the very reason that it was not truly compartmentalised and the house could still be brought very much down - quadruply so in the case of NT 4. You could call it a hybrid, but that's like saying someone is a little bit pregnant. You either are or you're not.

    2. Re:NT4 by Anonymous Coward · · Score: 1, Informative
      NT4 was the release where NT stopped pretending to have a micro-kernel architecure. Microsoft pulled a load of previously user-mode code (e.g. the graphics subsystem) into the kernel to improve performance.

      The "cleanest" NT versions were NT 3.1, 3.5 and 3.51.

    3. Re:NT4 by Abcd1234 · · Score: 1

      And, coincidentally, 3.51 specifically was often lauded as the most stable of the NT series of releases...

    4. Re:NT4 by naasking · · Score: 1
      There have been plenty of such implementations, with various degrees of success achieving that goal. The most promising:
      1. CapROS (successor to EROS)
      2. L4Ka and Fiasco implementations of the L4 microkernel architecture

      The only way the system can fail is via a kernel bug, or via a component that obtains priviledged access to low-level hardware that can induce a kernel failure (ie. programming DMA hardware to overwrite kernel data).
    5. Re:NT4 by swv3752 · · Score: 1

      Fiasco, there is a name to inspire trust. Is the whole OS called "Disaster"?

      --
      Just a Tuna in the Sea of Life
    6. Re:NT4 by Xiaran · · Score: 2, Informative

      Indeed. Microsoft have also been forced time and time again to make compromises to get better performance. An example of this is known to people that write file filter ddrivers for NT. Basically they seemingly couldnt make(a reasonably nice) object model run fast enough in some circumstance. So now there are effectively *two* file system interfaces for and NT files system : one that uses the regular IRP passing schmantics and the other doing direct calls into your driver to speed things up.

      This, as people can imagine, complicates everything(in a particular part of NT that is already complicated enough and not terribly well documented).

    7. Re:NT4 by iabervon · · Score: 1

      The issue with a microkernel is what happens if a bug in your filesystem driver means that an attacker can cause it to report that /bin/sh is setuid root (as a special case of executing arbitrary code). Sure, the attacker can't screw up everything at once, but that doesn't matter too much. Most subsystems will have the ability to produce output that would compromise system security, so it's like a tightly compartmentalized ship whose bulkhead controls open the doors if they get submerged.

    8. Re:NT4 by Anonymous Coward · · Score: 0

      NT was never a microkernel. It had a hardware abstraction layer as a component of it's so-called microkernel, for crying out loud. A microkernel *is* a hardware abstraction layer.

      Microkernels were cool when NT was released so Microsoft used the term as a marketing buzzword. Just because somebody (and especially Microsoft) tells you something doesn't mean it's actually true!

    9. Re:NT4 by marcosdumay · · Score: 1

      GNU/HURD is not a kernel. Mach is compartimentized, but I don't know about L4. Both kernels that run HURD.

    10. Re:NT4 by Anonymous Coward · · Score: 0

      I have yet to see a "proper" non-academic microkernel which lets one part fail while the rest remain

      Have a look at the Iguana and Wombat projects. They use the L4 microkernel for OS virtualization in embedded systems (most notably in Linux based phones).

    11. Re:NT4 by cecom · · Score: 1

      I am sorry but you are wrong. NT was _never_ a microkernel. It does use messages for userland->kernel calls and interdriver calls, however this does not make it a microkernel. The purpose of the messages (IRPs) is not to achieve isolation between modules, but to facilitate an universal implementation of asynchronous operations. An operation is started, then it waits in a queue somewhere and is completed asynchronously by an interrupt - any implementation would require something similar, but NT enforces it all over, even for synchronous operations for consistency. An IRP contains direct pointers to data, to callback functions, etc - nothing to do with a microkernel at all.

      Ironically, this design makes kernel programming for NT fairly difficult (although I do not think it can be avoided), causing lots of instability. It is very easy to "damage" an IRP by writing garbage, do something with it when it is in the wrong state, completely lose it, etc - all leading to an OS crash. Again, the opposite of what we would see in a microkernel.

      What you are saying about "object brokering" is technically true, but sounds like pure marketing speak to me :-) There is a directory of named object in the kernel and it provides lookups etc, but this is by far not its primary function.

      NT is not and was never a microkernel and it was never intended or claimed to be, including by its creator Dave Cuttler.
      This is especially true in the context of this story, because Tanenbaum's definition of a microkernel is very clear.

    12. Re:NT4 by truthsearch · · Score: 1

      Well I can obviously not speak from seeing the code. But every book I've ever read on the subject uses the term "microkernel" in describing the NT kernel. We're talking pure semantics here.

    13. Re:NT4 by cecom · · Score: 1

      You read funny books :-)

      I think semantics is pretty important in a story entitled "Microkernel: The comeback", involving Andrew Tanenbaum, who happens to be very clear on this subject, don't you think ? :-) NT is not a microkernel by Tanenbaum's definition, and by almost anybody's definition, as far as I can tell. I have seen some misguided journalistic attempts to label it as such, but there is no point in continuing the confusion.

      Further, we don't have to look at NT's code to judge its architecture. The design is pretty clear and has been explained in depth. Then there are projects like ReactOS. There also exist real microkernels, so we can compare. In short, there isn't lack of information on the subject, so we don't have to speculate.

      The most I have seen in books is that NT "borrowed" some aspects from a microkernel design, and I think that even such a claim is misguided. Perhaps part of the confusion stems from NT having loadable drivers, and another part from using messages - both of these are usually present in a microkernel design but they are not the distinguishing features of one. It is like saying that a car borrows its design from a train because they both have windows.

      To wrap up: here is the defition of a microkernel in Wikipedia: http://en.wikipedia.org/wiki/Microkernel . It clearly confirms my point. However I am happy to discuss opposing points of view, if there is some evidence to support them. After all, that is why we are hear on Slashdot - to chat (and I mean it :-)

    14. Re:NT4 by VolciMaster · · Score: 1
      I have yet to see a "proper" non-academic microkernel which lets one part fail while the rest remain.

      BeOS did this pretty nicely. I ran 4.0, 4.5, and 5.0, and while it was rare, I'd have chunks of the OS die (network stack, whatever), and the little status box would pop up either alerting me to the failure, allowing me to reboot that component, or it would just do it in the background. Resetting drivers etc all happened without rebooting.

  9. Trusted Computing by SavedLinuXgeeK · · Score: 2, Interesting

    Isn't this similar, in idea, to the Trusted Computing movement. It doesn't compartamentalize, but it does ensure integrity at all levels, so if one area is compromised, the nothing else is given the ability to run. That might be a better move, than the idea of compartamentalizing the kernel, as too many parts are interconnected. If my memory handler fails, or if my disk can't read, I have a serious problem, that sinks the ship, no matter what you do.

    --
    je suis parce que j'aime
    1. Re:Trusted Computing by Anonymous Coward · · Score: 0
      so if one area is compromised, the nothing else is given the ability to run

      You're right in what you said, but not what you meant.
      Total Corrup^W^WTrusted Computing is designed so that if one area is compromised, that area being the computer owner's private data (hint: in this version of the future the owner is not you), then as you said nothing else will run on that hardware.
    2. Re:Trusted Computing by SavedLinuXgeeK · · Score: 1

      Actually trusted computing is not soley based on user data, but goes all the way down to the bios. Programmable ram, and bios updates prove as sources of issues for Trusted Computing. Trusted computing works on building upon verification of the previous levels. It works through the post, the bootloader, etc, all the way up to the Operating System, as the last level. So it is similar in that if one area is compromised, the other areas are not taken down, they are kept safe.

      --
      je suis parce que j'aime
    3. Re:Trusted Computing by Lonewolf666 · · Score: 1

      First, Trusted Computing has a much different understanding of "integrity". In Trusted Computing, an "integer" application is one that can prove (upon start?) it has not been manipulated by third parties.
      This gives some protection against hackers, but does not guarantee that the application or driver is free from bugs that might bring the system down.

      Second, you don't necessarily want to stop everything else when a problem appears. It would be quite desirable, for instance, that a flaw in your audio drivers leads only to the shutdown of the audio system. So you can still save the document you worked on for three hours without saving.

      --
      C - the footgun of programming languages
    4. Re:Trusted Computing by Kjella · · Score: 1

      Isn't this similar, in idea, to the Trusted Computing movement. It doesn't compartamentalize, but it does ensure integrity at all levels, so if one area is compromised, the nothing else is given the ability to run.

      TC protected you exactly one kind of failure - random disk error causing the checksum to fail. Any error inherent in the original code can bring the house down.

      --
      Live today, because you never know what tomorrow brings
    5. Re:Trusted Computing by Chandon+Seldon · · Score: 2, Insightful

      Trusted computing merely checks that the code hasn't changed since it was shipped. This verifies that no new bugs have been added and that no old old bugs have been fixed.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    6. Re:Trusted Computing by a.d.trick · · Score: 1

      Yes, but mostly no. Trusted computing is about not trusting anything in the user space (similar to SELinux). A compartmentalized kernel is about about not relying on anything in the kernel. (note the difference of trust and reliance) Both are good when done properly I don't know too much about kernel hacking, but my guess is that a micro-kernel would be able to handle buggy drivers better and make development of the kernel easier.

  10. Oh Dear by segedunum · · Score: 1, Informative

    Not again:

    http://people.fluidsignal.com/~luferbu/misc/Linus_ vs_Tanenbaum.html

    We've got Andy Tanenbaum coming up with nothing practical in the fifteen or sixteen years he's been promoting microkernels, and then turning around and telling us he was right all along. Meanwhile, the performance of OS X sucks like a Hoover, as we all knew:

    http://sekhon.berkeley.edu/macosx/intel.html

    I'll just pretend I didn't see this article.

    1. Re:Oh Dear by AKAImBatman · · Score: 1

      Spouting or not, at least he's doing something. Minix3 (the end point he gets to in the article) is a BSD licensed OS that implements the concepts he discussed. I think it's time to get out the ole' performance metrics and see if much has changed in 20 years.

    2. Re:Oh Dear by truthsearch · · Score: 1

      the performance of OS X sucks like a Hoover

      Um, those benchmarks are only for statistical computations. I don't know about you but most computer users aren't performing statistical analysis. Ask anyone who uses a Mac on a regular basis and they'll tell you it hums along nicely.

    3. Re:Oh Dear by daviddennis · · Score: 1

      I'm typing this on a MacOS X computer and of course the performance is fine for what I'm doing, and has been fine for more CPU-intensive tasks like video editing as well.

      Perhaps Apple is trading speed for reliability, just as is being suggested?

      And if so, any idea if it's worked - is MacOS X any more or less reliable than Linux? It's hard for me to tell since both my MacOS X and Linux systems have been very reliable.

      D

    4. Re:Oh Dear by igb · · Score: 4, Insightful
      It's tempting for people who work in fields where performance matters to assume it matters for everyone, all the time. Do I need my big-iron Oracle boxes to be quick? Yes, I do, which is why they are Solaris boxes with all mod cons. Do I need the GUI on my desk to be pleasant to use? Yes, which is why it's increasingly a Mac that I turn to first. Sure, a G4 Mac Mini isn't quick. But there's a room full of Niagaras, Galaxies and 16-way Sparc machines to do `quick' for me.

      All I ask is that the GUI is reasonably slick, the screen design doesn't actively give me hives and the mail application is pleasant. Performance? Within reason, I really couldn't care less.

      ian

    5. Re:Oh Dear by Rogerborg · · Score: 1

      I think it's just darling that after berating linux for being "tied fairly closely to the [weird] 80x86", that MINIX 3 is only available for... x86.

      --
      If you were blocking sigs, you wouldn't have to read this.
    6. Re:Oh Dear by Slashcrap · · Score: 1

      Um, those benchmarks are only for statistical computations. I don't know about you but most computer users aren't performing statistical analysis. Ask anyone who uses a Mac on a regular basis and they'll tell you it hums along nicely.

      Yeah, those benchmarks only demonstrate mathematical performance. Mac owners don't use their computers for doing sums so those benchmarks don't matter. For computing tasks which don't involve any maths, Macs just can't be beat.

    7. Re:Oh Dear by AKAImBatman · · Score: 1

      I think it's just darling that after...

      ...decade old comments on an architecture that was unsuitable for serious production work at the time...

      that MINIX 3 is only available for... x86.

      MINIX has always focused heavily on the x86 platform, despite the built-in portability. Why? Because it's for teaching. x86s are cheap, and thus make ideal teaching platforms.

      You know what I find darling? That Linux was heavily modified to port to dozens (hundreds?) of other architectures. Hmmm... maybe Tanenbaum was more on target than you give him credit for?

    8. Re:Oh Dear by AlanS2002 · · Score: 0

      Nothing Practical in 15 years?

      A simple google on Minix revealed this. Sure doesn't look like nothing practical. I might not completely agree with his arguments (interesting comment on the subject here), but that doesn't mean he isn't attempting to put his money where his mouth is so to speak.

      --
      Not all conservatives are stupid,
      but it is true that most stupid people are conservative.
      - Hume
    9. Re:Oh Dear by shaitand · · Score: 1

      Andy says there is a 30% performance hit going with a microkernel over a macrokernel. The better question is, would you be willing to accept a 30% performance increase if it meant your mac was 'only' as reliable as your linux box?

      If the answer is yes, you (like most of us) have found out that in practice the tradeoff isn't worthwhile for theoretical benefits.

    10. Re:Oh Dear by NutscrapeSucks · · Score: 2, Interesting

      I've seen OS X kernel panic after plugging in a funky USB mouse, and when a SMB share suddenly disappears. These are both cases which a real microkernel could in theory recover from. So I don't believe there's any particular "reliability" in the OS X design.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    11. Re:Oh Dear by shaitand · · Score: 1

      I'm just the opposite. I want my desktop machine to snap and obey me instantly. I couldn't care less about a 'slick' appearance. I am only interested in how it performs.

    12. Re:Oh Dear by Anonymous Coward · · Score: 0

      You know, I've been using a Mac for about two weeks now. At first I thought it ran pretty good, comparable with my Linux box at home. Now don't get me wrong, it does, but I was markedly less impressed when I realized it's got a dual core processor and EIGHT gigabytes of RAM. Their computers run pretty well, but it's only because they're given an intense level of hardware.

    13. Re:Oh Dear by LWATCDR · · Score: 1

      That link had almost no useful data.
      The author's program ran slower on Mac OS/X than Linux. The problem is that a microkernel should have NO effect on a math heavy program! Why didn't he run a profiler? What part of Mac OS/X is slow?
      Mac OS/X does have some issues with process creation. That is a given but that shouldn't be an issue with this type of program.
      Was it IO bound?
      Where was the problem?
      Could it have been that the had some background tasks running under OS/X he didn't on the other system?
      Then you have the fact that OS/X isn't really a microkernel OS at all. The Kernel runs in a single Mach address space.
      Using that result proves only that a statistics program written by a political science major ran slower under Mac OS/X than under Linux.
      It really doesn't provide any useful data on micro vs monolithic kernels.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    14. Re:Oh Dear by Jesus_666 · · Score: 1

      Mac owners don't use their computers for doing sums so those benchmarks don't matter.

      Ha! Shows what you know!

      Pantheon:~/Stuff jesus_666$ uname -srm
      Darwin 7.9.0 Power Macintosh
      Pantheon:~/Stuff jesus_666$ echo "1 + 1" | bc -l
      2

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    15. Re:Oh Dear by Been+on+TV · · Score: 1

      Only funky USB mouse I have seen causing an OS X kernel panic had the word Microsoft on it. ...and it required a driver written by same company. Coincidence?

      --
      The future is in beta
    16. Re:Oh Dear by Halo1 · · Score: 1
      Meanwhile, the performance of OS X sucks like a Hoover
      Possibly (although my G5 is fast enough for anything I do), but it won't have anything to do at all with micro kernels, because Mac OS X does not use a micro kernel (and no public Mac OS X release ever has used a micro kernel).

      The entire Mac OS X kernel, including the BSD personality, runs in one address space. Messages are plain function calls. See the link I posted earlier for more info.

      --
      Donate free food here
    17. Re:Oh Dear by the_Bionic_lemming · · Score: 1

      For computing tasks which don't involve any maths, Macs just can't be beat.

      Ahh, so when did Mac release a gaming platform, and where do I get the games?

      --
      _ _ _ Go for the eyes Boo! GO FOR THE EYES!
    18. Re:Oh Dear by daviddennis · · Score: 1

      There have been some rumors about Apple changing its kernel now that Avie has retired.

      Perhaps Steve Jobs has come to agree with this.

      D

    19. Re:Oh Dear by colinrichardday · · Score: 1

      Wasn't it Tanenbaum who criticized Linus for tying Linux too close to the x86 architecture?

    20. Re:Oh Dear by NutscrapeSucks · · Score: 1

      Yes, you're absolutely right! Microsoft made a special mouse designed to crash Macintoshes. Of course!

      Funny, you make a offhanded comment about Macs crashing and the fanboy loons come out of the woodwork.

      And all MS mice are standard HID devices, so no special driver should be required. It's not like USB failings of older versions of OSX weren't well documented around the web.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    21. Re:Oh Dear by Creepy · · Score: 1

      I rarely trust benchmarking because often there are tradeoffs that make one area perform poorly and another well. That said, take a look at this benchmark - it shows some serious problems (stdlib allocate is 3000+% slower!), but also some stuff that macosx does well (blowfish, stdlib write).

      http://www.geekpatrol.ca/blog/106/

      I expect macosx would trounce XP in 2d graphics tests because quartz extreme makes heavy use of graphics hardware and we won't have that until Vista for Windows. I don't know of any hardware accelerated GUI features for Linux but I'm running the fairly old KDE and badly need to update my box (my distribution is no more and I need to tarball and archive about 200MB of data [mostly text files], then switch distributions).

      Personally, I don't think microkernel is bad, but it has the same advantages and shortcomings as a true object oriented languages like Smalltalk. For illustration, in Smalltalk, you could have a case where object2 may need to alter data from object1. Object2 requests the data from object1, object1 sends the data to object2, object2 checks if changes are needed and if so, updates the data and then sends a message with the updated data back to object1. In C++, that could be accomplished simply by making the data public or protected and allowing the other object to directly access its data (though you can also write helper functions that do messaging exactly the same as above). The good thing about messaging is you don't have to worry about another object breaking your data as much and it makes the code much more modular (easier to test and debug, IMO) and reusable.

    22. Re:Oh Dear by Jon+Kay · · Score: 1

      Tanenbaum has done something non-toy before, Amoeba OS. The fact that you haven't heard about it should tell you something. It had some cool capability ideas in it, though.

    23. Re:Oh Dear by AKAImBatman · · Score: 1

      What makes you think I'm unaware of Amoeba? Or for that matter, why do you consider Minix3 a "toy" OS?

    24. Re:Oh Dear by Been+on+TV · · Score: 1

      so no special driver should be required.

      But it does. To activate additional buttons on the Intellimouse Explorer. ...and it consistently caused OS X kernel panics.

      --
      The future is in beta
    25. Re:Oh Dear by NutscrapeSucks · · Score: 1

      Not required, optional. If Apple had a mouse-button mapping facility in the OS, you would never need to download anything from Microsoft except for the really crazy models.

      And my Crash-A-Mac mouse is a generic model (says "IBM" but not really) that has wierd problems on PCs as well.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    26. Re:Oh Dear by jadavis · · Score: 1

      When it comes to OS design, there are many ways where you can go very, very wrong.

      If we did not have people spending years researching these microkernels, the performance would be well outside of reason, even on modern hardware for basic desktop use.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    27. Re:Oh Dear by drsmithy · · Score: 1
      Um, those benchmarks are only for statistical computations. I don't know about you but most computer users aren't performing statistical analysis.

      What makes you think the same trend doesn't hold ? What makes you think there's something special or unique about what this benchmark is showing ?

      Ask anyone who uses a Mac on a regular basis and they'll tell you it hums along nicely.

      I use Macs on a regular basis. On anything less than a top-end dual processor PowerMac G5 (haven't had a chance to try the Core Duos yet), the interactive responsiveness of OS X is awful with more than a trivial load (with the exception of the things that are almost completely handled within the video card).

      My 1Ghz, 768M RAM G4 iBook has worse interactive responsiveness than my 550Mhz, 384M RAM P3 Compaq Armada running Windows 2003 (at least until the Armada starts swapping). Running Linux on the iBook makes it *noticably* faster (but nowhere near as nice to use, so I leave OS X on it).

      OS X does a lot of things well, but performance - *particularly* interactive responsiveness - is not one of its strong points.

    28. Re:Oh Dear by Rogerborg · · Score: 1

      Why, yes, it was, but that was back when he was convinced that RISC chips would wipe the floor with x86 any second now. He's actually a pretty good predictor of the future, if you make sure to always bet against him.

      --
      If you were blocking sigs, you wouldn't have to read this.
    29. Re:Oh Dear by Rogerborg · · Score: 1

      Which reminds me; I've been frozen in a block of ice for a decade. So, how's the takeup of RISC chips going? Have they replaced x86, as he confidently predicted?

      --
      If you were blocking sigs, you wouldn't have to read this.
    30. Re:Oh Dear by AKAImBatman · · Score: 1

      Yes, actually. It seems that most modern CPUs have moved to a RISC core, but get around the issues of compiler support by using microcode to translate CISC instructions into something more palatable for superscalar, out-of-order, pipelined architectures.

      Granted, he didn't predict we'd end up with such a weird hybrid of CISC and RISC, but then again, he's not exactly Kreskin.

  11. multicompartment isolation by maynard · · Score: 2, Insightful

    didn't save the Titanic. Every microkernel system I've seen has been terribly slow due to message passing overhead. While it may make marginal sense from a security standpoint to isolate drivers into userland processes, the upshot is that if a critical driver goes *poof!* the system still goes down.

    Solution: better code management and testing.

    1. Re:multicompartment isolation by LurkerXXX · · Score: 4, Insightful

      BeOS didn't seem slow to me. No matter what I threw at it.

    2. Re:multicompartment isolation by maynard · · Score: 1

      we are talking about a metaphor here. Are you suggesting that a modern multicompartement ship is a good metaphor to use in designing operating system kernels, whereas the Titanic would have been bad?

    3. Re:multicompartment isolation by podperson · · Score: 1

      As the old joke goes, neither a real commercial microkernel operating system nor better development practices have been tried and found hard, they've both been found hard and left untried.

    4. Re:multicompartment isolation by Bush+Pig · · Score: 2, Interesting

      The Titanic wasn't actually _properly_ compartmentalised, as each compartment leaked at the top (unlike a number of properly compartmentalised ships built around the same time, which would have survived the iceberg).

      --
      What a long, strange trip it's been.
    5. Re:multicompartment isolation by Anonymous Coward · · Score: 0

      >>Are you suggesting that a modern multicompartement ship is a good metaphor to use in designing operating system kernels, whereas the Titanic would have been bad?

      Yes. The Titanic had the appearance of a compartmentalized system, but in reality it was monolithic since flooding in any part of the ship could eventually access any other part.

    6. Re:multicompartment isolation by WindBourne · · Score: 2, Insightful
      didn't save the Titanic.

      It actually took hitting something like half the compartments to sink her. If it had hit just one less compartment, she would have stay afloat. In contrast, one hole in a none compartmentalized ship can sink it.

      That is no different than an OS. In just about any monolithic OS, one bug is enough to sink them.

      --
      I prefer the "u" in honour as it seems to be missing these days.
    7. Re:multicompartment isolation by Daniel+Dvorkin · · Score: 1

      Well, one of the reasons the Titanic sank was because the compartmentalization was incomplete; once it took a certain amount of water, it was riding low enough that more water could come in over the bulkheads. There's probably a lesson here.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    8. Re:multicompartment isolation by maynard · · Score: 1

      OK. So lets get to the meat of the argument, which is that message passing micokernels are slow by design and still prone to failure if a critical userland device driver process dies. Further, please show me how security is improved. If a userland process (say a shell) elevates privileges to root, how is this any different from a monolithic kernel based system?

    9. Re:multicompartment isolation by ArsenneLupin · · Score: 1

      Actually, the iceberg was "slicing" open the Titanic on a large part of its length, impacting several compartments. That's what did it in. Had only one compartment been affected, it would have stayed afloat.

    10. Re:multicompartment isolation by carlislematthew · · Score: 1
      Another thing: If a driver goes down, then I'm generally fucked anyway. "Awesome, my SCSI driver died but my system is still running! Cool! Oh wait, I can't do a damn thing now. Time to reboot I suppose."

      I can't imagine that many cases where I would want to continue on if the kernel went bad. Give me auto-save in every app, and that will be fine... It's not like OS's are so horrendously unreliable that this is a common occurrence anyway.

    11. Re:multicompartment isolation by Anonymous Coward · · Score: 0

      You're missing the point. A microkernel allows the OS to fail cleanly. A macrokernel can't detect all errors (e.g. a write through a freed pointer), so a macrokernel can continue running while in a broken state causing all sorts of potential damage.

    12. Re:multicompartment isolation by dpilot · · Score: 1

      Or how about,
      "My SCSI driver died but my system is still running! Good thing the device manager daemon is there to:
      1:Save the open file pointers on the SCSI devices,
      2:Terminate the old SCSI management task,
      3:Start a new SCSI management task,
      4:Restore the file pointers.
      I was delayed a moment, but didn't lose any data."

      In a *good* microkernel, if Mr. SCSI went bad, the corruption would have been limited, anyway. Flush/restart should be sufficient.

      Obviously the challenge becomes confinement.

      --
      The living have better things to do than to continue hating the dead.
    13. Re:multicompartment isolation by maynard · · Score: 1

      You're still dependent on sane message passing for the system to function. Further, no one has yet to argue that message passing doesn't badly impact system performance. That's because it does.

      Essenentilly, the argument here is that micokernel design somehow increases security and is more stable. Further, the argument is that as monolithic kernels grow larger, system stability and security must therefore decline in proportion to size. Yet, in the real world this is not what I see. Instead, I see that micorkernel systems are terribly slow and not significantly more stable than monolithic systems. Further, I see no security benefit one way or the other. If a shell elevates its prigilege to root, it still has total control over the system - whether running on a microkernel based system or not.

      I think the article overstates the stability benefits and makes a false argument on security.

    14. Re:multicompartment isolation by gEvil+(beta) · · Score: 5, Funny

      So wait a second. In your analogy, which part of Linux plays the Leonardo DiCaprio role? (I'm curious to know which part of Linux I should take out back and kick repeatedly.)

      --
      This guy's the limit!
    15. Re:multicompartment isolation by maynard · · Score: 1

      OK, just to be clear: one serious kernel bug is enough to take down the OS. Clearly, a userland process segfaulting will not take the OS down. The rest I've responded to down the thread by others who had posted first.

    16. Re:multicompartment isolation by diegocgteleline.es · · Score: 1

      critical driver goes *poof!* the system still goes down.

      Not to mention that hardware bugs exist. A driver, be it in userspace or kernel space can block your computer by touching the wrong registers.

    17. Re:multicompartment isolation by ceejayoz · · Score: 1

      You're both right. Per Wikipedia:

      Titanic was divided into 16 compartments with doors that were held by a magnetic latch and would fall by moving a switch on the bridge; however, the watertight bulkheads did not reach the entire height of the decks (only going as far as E-Deck). Titanic could stay afloat with any two of its compartments flooded, eleven of fourteen possible combinations of three compartments flooding or the first/last four compartments flooded; any more and the ship would sink.

    18. Re:multicompartment isolation by mgblst · · Score: 1

      Yeah, I think the lesson is, just because you are unsinkable, doesn't mean you should start ramming icebergs. I guess that translated into the computer world as, even if you could create a microkernel, doesn't mean you want to design something like windows xp around it.

    19. Re:multicompartment isolation by drudd · · Score: 1

      5. Driver hits same bug that caused first instance to crash.
      6. Goto 1

      --
      Venn ist das nurnstuck git und Slotermeyer? Ya! Beigerhund das oder die Flipperwaldt gersput!
    20. Re:multicompartment isolation by tchernobog · · Score: 1

      A huge iceberg didn't spare the Titanic...
      ...and a nuclear strike wouldn't spare Rambo [*].

      Because something isn't a "security-catch-all" it doesn't necessarily mean it's inherently bad. See safe belts in your car. They wouldn't save you from a frontal crash with a truck. I just will keep fastening them, thanks very much.

      As for IPC overhead, see L4 implementations. If carefully done, a microkernel doesn't do it so bad at all. See also http://os.inf.tu-dresden.de/pubs/sosp97/ and search the net for other Liedtke's articles.

      [*] Although, maybe Chuck Norris... okay, too frightening to consider.

      --
      42.
    21. Re:multicompartment isolation by Xiaran · · Score: 2, Informative

      You're still dependent on sane message passing for the system to function. Further, no one has yet to argue that message passing doesn't badly impact system performance. That's because it does.

      Ive coded under QNX a lot and would stronghly disagree with your view on the message passing overhead. From this QNX page.

      QNX interprocess communication consists of sending a message from one process to another and waiting for a reply. This is a single operation, called MsgSend. The message is copied, by the kernel, from the address space of the sending process to that of the receiving process. If the receiving process is waiting for the message, control of the CPU is transferred at the same time, without a pass through the CPU scheduler. Thus, sending a message to another process and waiting for a reply does not result in "losing one's turn" for the CPU. This tight integration between message passing and CPU scheduling is one of the key mechanisms that makes QNX message passing broadly usable. Most UNIX and Linux interprocess communication mechanisms lack this tight integration, although an implementation of QNX-type messaging for Linux does exist. Mishandling of this subtle issue is a primary reason for the disappointing performance of some other microkernel systems.

    22. Re:multicompartment isolation by AKAImBatman · · Score: 1

      I'll say "What is QNX?" for $500, Alex.

    23. Re:multicompartment isolation by Jesus_666 · · Score: 1

      Of course the microkernel would detect that, download a fixed version of the driver, compile it if necessary and load it. If there was no updated version the kernel would wait for it, polling the server every five seconds.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    24. Re:multicompartment isolation by Anonymous Coward · · Score: 0

      How the heck is is *compiling* a new driver with NO DISK!

    25. Re:multicompartment isolation by ray-auch · · Score: 1

      Actually it was both causes together.

      The fact that more than 3 (or 4?) compartments were compromised meant that the compartment separators were overtopped.

      Had the compartments been higher it might have stayed afloat even with the number that were holed. Had fewer been holed, it would (in theory) have stayed afloat, because the compartments wouldn't have been overtopped.

    26. Re:multicompartment isolation by bogado · · Score: 1

      Many people believe that if the titanic had "rammed" the iceberg face-to-face it would have stayed afloat, badly damaged for sure but afloat. The atempt to avoid the iceberg, and it hitting the side of the ship was the great problem.

      --
      []'s Victor Bogado da Silva Lins

      ^[:wq

    27. Re:multicompartment isolation by Kr3m3Puff · · Score: 1

      Nor does OSX... Mach Microkernel...

      Finally processors have gotten to the point to support such a robust architecture... just because it is faster doesn't make it more usable...

      --
      D.O.U.O.S.V.A.V.V.M.
    28. Re:multicompartment isolation by Anonymous Coward · · Score: 0

      Further, no one has yet to argue that message passing doesn't badly impact system performance. That's because it does.

      Actually I read an article decades ago that showed that with the same hardware, message passing has the same performance, since you can always impliment it the same way. Sorry, I have no idea who to find the reference.

    29. Re:multicompartment isolation by hawk · · Score: 1

      >...and a nuclear strike wouldn't spare Rambo [*].

      *You* obviously haven't been to a Hollywood movie in a while . . . Once the sequel train starts, the hero can survive the complete destruction of the entire universe in an antimatter explosion . . .

      hawk

    30. Re:multicompartment isolation by Anonymous Coward · · Score: 0

      That's a bad example. Consider the BeOS network stack. It was implemented in user space, and it sucked ass. Slow as hell. Be's solution? Move it into the kernel. Of course, they went under before they finished it.

    31. Re:multicompartment isolation by glitch23 · · Score: 0

      That's because there wasn't anything available to throw at it.

      --
      this nation, under God, shall have a new birth of freedom. -- Lincoln, Gettysburg Address
    32. Re:multicompartment isolation by renoX · · Score: 2, Informative

      And BeOS is called a "Modular Hybrid Kernel" by wikipedia: hybrid implies that you don't get the full protection..

    33. Re:multicompartment isolation by magetoo · · Score: 1
      You're still dependent on sane message passing for the system to function.
      Yes. And the message passing microkernel is, obviously, the single point of failure.

      What you gain is that the critical component is much smaller. QNX's MK is, what, 4K? Or was it 8K? That's a lot less code to have to go through for vulnerabilities or bugs.

    34. Re:multicompartment isolation by Anonymous Coward · · Score: 0

      OK, compare the monolithic model:

      1. user process traps into kernel mode
      2. kernel reads parameters
      3. kernel performs the system call
      4. transition back into user mode

      Now the microkernel model:

      1. user process traps into kernel mode
      2. kernel reads message
      3. kernel writes message into receiver's address space
      4. kernel puts first process into wait state
      5. kernel changes VM tables and thread state to second process
      6. kernel transfers control to second process
      7. second process reads parameters
      8. second process performs system call
      9. second process traps into kernel mode
      10. kernel changes VM tables and thread state to first process
      11. kernel transfers control to first process

      Can you see why message passing can lower performance? Many aspects of Windows NT use the message passing model, even the graphics (up until 1995). At that point they decided that graphics performance would never be good enough (compared to Win95's) while still transferring every operation to another user process, so they changed it. They took the graphics module out of the Win32 user process and made it into a kernel driver so each graphics call just makes a single kernel transition instead of 2 kernel transitions, VM changes, and context switches.

      dom

    35. Re:multicompartment isolation by LurkerXXX · · Score: 1

      I think I'll stick with what the designers called it. A Microkernal. I think they'd know better than anyone else. If you'd care to site a real reference rather than one a 10-year old can change at a whim, I might check it out.

    36. Re:multicompartment isolation by Anonymous Coward · · Score: 0

      I assume by "kick" you mean "have passionate gay sex with".

    37. Re:multicompartment isolation by owlstead · · Score: 1

      There are only two important compartments in a modern computer, the processor and the memory. If you need to actually store anything you would need a disk as well. And everything in between those parts. For critical communications a serial port should suffice. It's not that hard to make a computer unsinkable, especially if you make (disk) drivers restartable.

      Then again, if you don't have keyboard or mouse access to your laptop because (*&(*^)( the X server has crashed, all this does not matter much. Proper analogy is probably when the steering hut is blown right off the ship. If you are lucky you can get to the engines and do some things from there. But the radar (aka my office document) is probably still out.

      PS. can the guy that implemented the cursor in firefox please put up his hand while I try and find my shotgun?

    38. Re:multicompartment isolation by Anonymous Coward · · Score: 0

      Another suggestion is to look at the research coming out of places like Karlsruhe. Micro-kernels do not have to be slow. Message passing can be almost as fast as traditional operating system call mechanisms.

  12. The thing is... by gowen · · Score: 5, Interesting

    Container ships don't have to move cargo from one part of the ship to another, on a regular basis. You load it up, sail off, and then unload at the other end of the journey. If the stuff in the bow had to be transported to the stern every twelve hours, you'd probably find fewer enormous steel bulkheads between them, and more wide doors.

    --
    Athletic Scholarships to universities make as much sense as academic scholarships to sports teams.
    1. Re:The thing is... by plover · · Score: 1
      If the stuff in the bow had to be transported to the stern every twelve hours, you'd probably find fewer enormous steel bulkheads between them, and more wide doors.

      And more ships rolling over due to accidental mismanagement of the weight distribution. You make a great point, the "boat" metaphor becomes a lot more relevant when it becomes dynamic.

      --
      John
    2. Re:The thing is... by Tim+C · · Score: 1

      That's true, but I guarantee that they'd have a fail-safe method to shut those doors, forming a watertight seal.

      About the only conclusion we can draw is that on reflection, it was a pretty silly analogy.

    3. Re: The thing is... by Black+Parrot · · Score: 1

      > Container ships don't have to move cargo from one part of the ship to another, on a regular basis. You load it up, sail off, and then unload at the other end of the journey. If the stuff in the bow had to be transported to the stern every twelve hours, you'd probably find fewer enormous steel bulkheads between them, and more wide doors.

      Yeah, you got to be careful with analogies.

      When it comes to security, imagine aliens trying to take over your ship. The bulkheads might be useful for constricting them to one area, but what's absolutely essential is to make sure you can't operate the security doors from within each section. Otherwise the invaders just open them and spread at will.

      My point being that partitioning priviledged code into little chunks doesn't help anything; if you break in to one you've got the whole system. But it is useful to limit the amount of priviledged code to the minimum possible, and not mix in code that doesn't really need to be privileged. That way if the aliens break in, it's less likely to be in a compartment that has controls for the security bulkheads.

      --
      Sheesh, evil *and* a jerk. -- Jade
    4. Re:The thing is... by crawling_chaos · · Score: 4, Insightful
      Compartmentalization had very little to do with the advent of the container ship. Titanic was partially compartmented, but they didn't run above the waterline, so that the breach of several bow compartments led to overtopping of the remainder and the eventual loss of the ship. Lusitania and Mauretania were built with full compartments and even one longitudinal bulkhead because the Royal Navy funded them in part to use as auxilliary troopships. Both would have survived the iceberg collision, which really does make one wonder what was in Lusitania's holds when those torpedoes hit her.

      Comparments do interfere with efficient operation, which is why Titanic's designers only went halfway. Full watertight bulkheads and a longitudinal one would have screwed up the vistas of the great dining rooms and first class cabins. It would also have made communication between parts of the ship more difficult as watertight bulkheads tend to have a limited number of doors.

      The analogy is actually quite apt: more watertight security leads to decreased usability, but a hybrid system (Titanic's) can only delay the inevitable, not prevent it, and nothing really helps when someone is lobbing high explosives at you from surprise.

      --
      You can only drink 30 or 40 glasses of beer a day, no matter how rich you are.
      -- Colonel Adolphus Busch
    5. Re:The thing is... by leuk_he · · Score: 1

      And before the anology police gets us.

      The problem with microkernels is that if one component dies it does not take down the entire ship. However if the motor or the steering of a ship dies, the boat is still afloat, but the boat is pretty useless.

      The same happens in a microkernel. The display driver may die and the rest for the ship continues. However the system can be pretty useless without a display.

      Restarting the display driver and letting the application behave correcty to this is left as an excercise of the student. (replace display with file system is excercise no 2. )

    6. Re: The thing is... by blibbler · · Score: 1

      if XCOM2 has taught me anything, if aliens attack a shipping vessel, you first need to clear them from the deck of the ship, and only then you can move inside. It is also important for most of your crew to carry motion detectors, because otherwise it can take many many turns to find the last hiding alien.

    7. Re:The thing is... by geoffspear · · Score: 1

      Where can I get a kernel extension that will guarantee a kernel panic every time my wireless mouse stops working? My machine is pretty useless without a mouse, so why would I want the rest of the machine to keep working?

      --
      Don't blame me; I'm never given mod points.
    8. Re:The thing is... by mverwijs · · Score: 1

      Container ships don't have to move cargo from one part of the ship to another, on a regular basis.

      It's an analogy. Therefor, it is dead easy to make the comparison seem ludicrous, even if it does hold water (pun intended). You could try to discuss T'baums opinions, instead of discussing his analogy. It's better sport, methinks.

    9. Re:The thing is... by gowen · · Score: 1

      I was using an analogy to point out how bad his analogy was.
      I could've said "It's no use comparing a ship to a kernel, because ships and kernels have different flexibility requirements of their data (i.e. cargo)."

      The ship metaphor is fundamentally flawed, and Andrew T shouldn't have used it. I pointed out its flaw, but chose to do it through his metaphor, because I am not a prosaic dullard.

      --
      Athletic Scholarships to universities make as much sense as academic scholarships to sports teams.
    10. Re:The thing is... by Isao · · Score: 1
      Container ships...

      Think cruise ships. People moving hither and yon, supplies and equipment stored all over the place. A casino. Interfacing with different ports all the time (and having to onload/offload people, supplies, waste). All while maintaining security, integrity and availability.

    11. Re:The thing is... by budgenator · · Score: 1

      I agree, I was on a cruise ship once and the majority of the watertight doors between compartments were open during normal operation, you can't expect normal passengers to unseal, open, close and reseal water-tight doors. The other thing I noticed is that normal passenger areas were well above the water-line, normal crew living and work areas seemed to be above the water-line, and what was below the waterline was engineering spaces such as engines, generators, water and waste processing, stabilizing gyroscopes, fuel and storage holds.

      So to follow the analogy:
      1. well above the water line is normally open between compartments and closed only in dire emergencies,
      2. slightly above the water line expected to be closed but opened frequently and not guaranteed to be closed.
      3. below the waterline, doors closed except for infrequent opening and probably interlocked so when unsealed status indicators are updated.

      I know commercial freighters are more likely to keep doors sealed higher than cruise ships, so the question is really where the waterline is, and if we are building freighters or cruise ships. Torvalds assumes the kernal is above the waterline and the hardware is below; Tanenbaum assumes it's below the waterline and the hardware is the water.

      --
      Apocalypse Cancelled, Sorry, No Ticket Refunds
    12. Re:The thing is... by Arandir · · Score: 1

      A better analogy to microkernels is to have a small container ship with a small hold, and a whole bunch of other small containers ships with small holds roped to it, and trying to navigate them all from the central ship. You can do it, but it's much more difficult. It's THE reason Hurd is so tardy.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    13. Re:The thing is... by Anonymous Coward · · Score: 0

      Because you might be able to switch to a virtual console, and restart the process running the mouse driver.

    14. Re:The thing is... by Anonymous Coward · · Score: 0

      I attempted to help develop Hurd a while ago (no doubt like many of you). The reason Hurd is tardy is not just the microkernel design, it's because the developers don't know when to just start coding. It's a very good thing to design for a while before you start... but they've been designing forever now, at some point you have to write a beta and find out where the week points are. I attempted to help with the recent L4 port, you'll notice it's now dead. This is because my friend and I were about to start WRITING it. As soon as we were going to actually do something, they thaught of several problems with the current design, and completly abandoned the port until L4 could be modified to better support it. Yes they would've had one week point (related to syncronous message passing and servers losing a small bit of their time slot... not deadly by any means). Basically they won't write it unless it's perfect, noone has designed a perfect system yet so Hurd still doesn't really exist.

      Microkernels are a bit more difficult to get off of the ground because you have to start by designing interfaces, instead of coding. This doesn't go as well with the coding mentality of the a large portion of FOSS developers (I.E. highschool students). The reason Linux took off so fast is exactly because it was complete garbage, but it booted. This meant everyone could boot it and hack on it. This makes for a shallow learning curve, and alot of shitty code, but quick and shiny results for hackers. Somehow you have to balance Hurd and Linux to get a good system that actually exists.

      Once a message passing system and protocol is in place, a microkernel would be better than Linux for hackers, because they can replace small pieces at a time. By the way... I point you at Eros, which never had great commercial success because it wasn't Unix, but it was one damn fine Microkernel, with an operating system to go with it.

      Give me a system that's truely stable and I'll optomize it no problem. Computers are fast now, consider what people did on PDP8's and what we do now. Most of our speed has gone into faster development times (Java), and more protection (VM, kernels, Java again, VMWare, etc.). It's time we got some safety at a lower level so systems like the Java VM aren't so nececary. Maybe then we can get some of the speed we have back. Think about it, how many people run VMWare as a jail? Wouldn't it be nice if the OS was just ACTUALLY secure so you didn't have to take an 80% performance hit BELOW the OS layer?

      And on that note... DragonlyBSD we're all rooting for you... show us what you can do.

    15. Re:The thing is... by Arandir · · Score: 1

      And on that note... DragonlyBSD we're all rooting for you... show us what you can do.

      Bah. That's just an overhyped macrokernel. I was promised earth shattering innovations from DBSD, but all I've gotten has been an increase in trolling. I think I'll stick with my underhyped macrokernel FreeBSD.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    16. Re:The thing is... by Watson+Ladd · · Score: 1

      High explosives were inside the Lusitania. So the metaphor: If you are determaned to blow yourself up, nothing will stop you.

      --
      Inventions have long since reached their limit, and I see no hope for further development.-- Frontinus, 1st cent. AD
    17. Re:The thing is... by Pseudonym · · Score: 1
      Container ships don't have to move cargo from one part of the ship to another, on a regular basis.

      Depends what you mean by "regular". Millions of dollars can be saved by ships moving cargo around so that what is needed in the next port is easy to get to by the time you arrive, while maintaining adequate weight balance. (This, incidentally, is a very interesting algorithmic problem. I believe it's NP-hard to do it with the minimum number of container moves.)

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    18. Re:The thing is... by dcam · · Score: 1
      Container ships don't have to move cargo from one part of the ship to another, on a regular basis. You load it up, sail off, and then unload at the other end of the journey. If the stuff in the bow had to be transported to the stern every twelve hours, you'd probably find fewer enormous steel bulkheads between them, and more wide doors.


      This is a bad example. As others have commented, moving to compartments in ships has nothing to do with containters.

      It is a particularly bad example because container ships do actually shift cargo while in transit. The contents of one ship may not all be destined for one port, so often after visiting a port a ship may rearrange the containters for optimal unloading at the next port.
      --
      meh
  13. My last time was... by Anonymous Coward · · Score: 0

    When was the last time your TV set crashed or implored you to download some emergency software update from the Web?

    I dont know if anyone else has the misfortune to use a Sagem digital TV box, but mine crashes all the time. It FREQUENTLY has to update its channel list which stops me watching TV for 5-10 minutes.

    I personally think that software is stable and secure at the moment, I havent had crashes for a long time. The problem is the users ability to install random programs which damage their privacy/security.

  14. Talk about beating a dead horse by daves · · Score: 1

    The Torvalds/Tanenbaum discussion has been done to death. Google for all that can be said on the subject.

    --
    People who disagree with you are not automatically evil, greedy, or stupid.
  15. Theory Vs. Practice by mikeisme77 · · Score: 3, Interesting

    This sounds great in theory, but in reality it would be impractical. 2.5 million lines of code handling all of the necessary things the Linux Kernel handles really isn't that bad. Adding compartmentalization into the mix will only make it more complicated and make it more likely for a hole to spring somewhere in the "hull"--maybe only one compartment will be flooded then, but the hole may be harder to patch. However, I wouldn't rule compartmentalization out completely, but it should be understood that doing so will increase the complexity/size and not necessarily lower the size/complexity. And isn't Windows XP or Vista like 30 million lines of code (or more)? That's a LOT more than double the size of the Linux kernel...

    1. Re:Theory Vs. Practice by Shazow · · Score: 3, Informative
      wouldn't rule compartmentalization out completely, but it should be understood that doing so will increase the complexity/size and not necessarily lower the size/complexity.

      Just to clear things up, my understanding is that Tanenbaum is advocating moving the complexity out of kernel space to user space (such as drivers). So you wouldn't be lowering the size/complexity of the kernel altogether, you'd just be moving huge portions of it to a place where it can't do as much damage to the system. Then the kernel just becomes one big manager which tells the OS what it's allowed to do and how.

      - shazow
    2. Re:Theory Vs. Practice by mikeisme77 · · Score: 3, Interesting

      But then you'd have issues with performance and such. The reason the current items are in the kernel to begin with have to do with the need for them to be able to easily communicate with one another and their need to be able to have system override access to all resources. It does make his claim more valid, but it's still not a good idea in practice (unless you're primary focus for an OS is security rather than performance). I also still think that this method would make the various "kernel" components harder to manage/patch--I put kernel in quotes because the parts that would be moved to user land would still be part of the kernel to me (even if not physically).

    3. Re:Theory Vs. Practice by Anonymous Coward · · Score: 0
      Then the kernel just becomes one big manager which tells the OS what it's allowed to do and how.
      Does it also have pointy hair and frequently mention 'proactive multi-tiered synergy'?
    4. Re:Theory Vs. Practice by zhiwenchong · · Score: 5, Funny

      In theory, there is no difference between theory and practice. But, in practice, there is.

      - Jan L.A. van de Snepscheut

      Sorry, couldn't resist. ;-)

    5. Re:Theory Vs. Practice by Shazow · · Score: 1
      But then you'd have issues with performance and such.

      You're right, and there is.

      There is about a 6% to 14% performance hit, depending on the operation. Although most of the slowdown is constant-time. And Andy claims that that kind of performance hit is insignificant in today's uber-fast systems. Then again he goes on to say that Minix is intended for small embedded devices (which tends to be much slower). So I'm skeptical as well.

      Andy Tanenbaum came to my university and gave a presentation/lecture about Minix, you can read my bloggish writeup if you're interested.

      Also the Minix Wikipedia node has some informative stuff.

      - shazow
    6. Re:Theory Vs. Practice by jelle · · Score: 1

      "There is about a 6% to 14% performance hit, depending on the operation. Although most of the slowdown is constant-time. And Andy claims that that kind of performance hit is insignificant in today's uber-fast systems."

      Which is one of the points on which he is wrong...

      14% takes that 2GHz processor down to 1720MHz, a 3GHz processor to 2580MHz

      If he were right, the top 300-500MHz processors would never sell, because 14% below that would be fast enough for everybody.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    7. Re:Theory Vs. Practice by ronanbear · · Score: 2, Informative

      The 30 or so million lines of code in XP refers to everything. The XP kernel is only a fraction of XP but is still larger than the linux kernel.

      --
      the more they over-think the plumbing the easier it is to stop up the pipe
    8. Re:Theory Vs. Practice by JonnyCalcutta · · Score: 1
      To be fair, the top percantage of processors are very highly priced and don't sell in as big numbers. Most PCs sold are using mid-range processors, and they work fine for the tasks most people do. If speed was the only issue then surely everyone would still be using the CLI, and anti-virus software would be too big a drain on resources (not to mention all the other little apps people run in the background for ease).

      As far as the actual topic goes, I'll leave it up to people who have a knowledge of the subject to argue it out.

    9. Re:Theory Vs. Practice by menace3society · · Score: 0

      No, it just means you have really lousy implementors. Is it gravity's fault that you eventually reach a terminal velocity? Then why is it the software's fault when you can't write good code?

    10. Re:Theory Vs. Practice by booch · · Score: 1

      If you were right, nobody would buy anything except the top-speed CPUs. If you look at what people are buying, they tend to be more middle-of-the-road or low-end CPUs. So I think your argument falls down.

      I'd also note that Intel's latest Core CPUs are slower (at least in raw MHz) than the previous Pentium 4 chips. Pentium 4 topped out at 3.8 GHz. The Core processors, which are replacing Pentium 4s, currently top out below 2.5 GHz. (The new chips have a higher performance per MHz than the Pentium 4, but I don't think it's high enough to be equivalent to 3.8 GHz in most use cases.) Instead of raw computing power, Intel is now concentrating on performance per watt.

      --
      Software sucks. Open Source sucks less.
    11. Re:Theory Vs. Practice by ihatewinXP · · Score: 1

      So to again go the "In Theory" route:

      Would the added overhead for performance be a problem if it was actually built knowing the underlying architecture or taking into the incredible gains in processor speeds since this argument first arose? I mean (and im being quite honest) if this argument began on x386's and im typing this on a dual core 2ghz machine there has to be a usable system somewhere in this mix of code and hardware.

      An earlier poster mentioned QNX - and maybe that is theoretical mix I am referring to in practice.

      --
      ---- The real Slashdot is still here. You just have to browse at -1 to read the comments.
    12. Re:Theory Vs. Practice by mikeisme77 · · Score: 1
      I'm not saying it wouldn't be usable/useful. It has a purpose in specialized computing, for projects/people who require a fully secured computer. But for me (at least), I'd rather have a system with optimal performance and a few security holes (that when discovered are patched in a week or less--as the Linux kernel normally is) rather than a slower system with no security holes that "can't be sunk".

      You also need to take into account that when the original argument was made (for x386) processors, people did fewer things with their computers. Now though, people (even casual computer users) do very resource intensive tasks on computers--from 3D games to video rendering and editing. Computers are no longer "just tools", they are now multimedia hubs (possibly even more so than the TV--for some at least).

    13. Re:Theory Vs. Practice by Hast · · Score: 1

      I'd assume that those percentages are in comparison to a monolithic kernel. So a micro-k would take 6-14% longer to execute code normally found inside the mono-kernel. Your idea of comparing absolute CPU sizes only holds if you are only running inside the kernel and that you are 100% of CPU all the time.

      The point is that most apps are not doing this and thus the penalty wouldn't be as noticable.

    14. Re:Theory Vs. Practice by Shazow · · Score: 1
      I'd assume that those percentages are in comparison to a monolithic kernel.

      You're right about that. The comparisons were micro vs monolithic kernel. And the operations I mentioned were system call operations like performing IO read/writes, caching, interfacing with devices, etc. So yes, most applications would not be affected significantly.

      From the lecture, my impression was that those numbers were merely benchmarks taken on the same system with each type of kernel. Although there was a 6-14% performance difference, as I mentioned a lot of the slowdowns were "constant-time" overhead operations, i.e. O(1). That is, as the hardware speed increases, the percentage of the slowdown decreases. Between, say, 300mhz CPU's, the performance difference may be 6-14%, but 600mhz CPU's it may shrink down to 3-7% for instance. So yes, with the rate speeds are increasing, eventually it will be negligible.

      - shazow
    15. Re:Theory Vs. Practice by *SECADM · · Score: 1

      The real problem that has always been there with the microkernel is that, sure you can take all the device drivers or MM or FS out of the kernel and make them servers, but what happens when they fail?

      Say your ATI video card's driver ran into a synchronization issue that is unsolvable, and panics. Sure, it's isolated from the microkernel. But so what? You *need* the video driver to do anything on the system. So the kernel goes off and restart the video driver server. But wait, you can't just restart the video driver... Some other piece of code say, the power management code for video, is somewhat of a state machine, so that needs to be restarted, too. Then of course, every app in userland that uses video needs to be restarted, to sync up to the new video driver. So sure you haven't restarted the kernel... But you've restarted a significant portion of the system, that to the user's perception the system has effectively rebooted.

      This is certainly not true for every piece of kernel code, but it is true for a lot of code in the kernel. Imagine if your file system server goes down. Or your Virtual memory server goes down. All these things are so essential to the system, even if we do isolate them from the core, the entire system is effectively rendered useless without them. Back to the compartmentalized ship analogy... Sure, if one of the non-essential compartment is leaking, then the ship can pretty much go on sailing without a problem. But if one of the engine rooms or its equivalent (I don't know too much about ships unfortunately) is breached, what difference does it make that it's compartmentalized? That baby is going down.

      --
      sure I'll have a sig.
    16. Re:Theory Vs. Practice by Ulrich+Hobelmann · · Score: 1

      L4-Linux is reported to be 10% slower than Linux (2.4 AFAIK).

      I'm positive that these 10% apply for newer CPUs as well as older ones (or maybe the newer ones are faster, with the syscall instruction).

      QNX is a real-time kernel, so I'm not sure if there's a tradeoff of throughput/performance for very small latency that "ordinary" users don't need.

    17. Re:Theory Vs. Practice by srussell · · Score: 1
      But then you'd have issues with performance and such.
      Tanenbaum's argument is that the performance difference is barely noticeable on modern hardware. There's some truth to that, unless you are doing high performance computing or are a ricer, in which case micro vs. mono kernel is only one of many factors you have to consider. In any case, it boils down to a speed vs. performance, and -- although I'm not the best person to defend microkernels in an argument of this sort -- it would be very easy to argue that the performance difference has shrunk considerably while the stability gap is still largely the same or may even be growing.

      Caveat: I do not use microkernels, and have only the vaguest knowledge of the theoretics of such systems.

      --- SER

    18. Re:Theory Vs. Practice by jelle · · Score: 1

      "If you were right, nobody would buy anything except the top-speed CPUs. If you look at what people are buying, they tend to be more middle-of-the-road or low-end CPUs. So I think your argument falls down."

      People buy the middle of the road because that gives you a better value: more speed per dollar. If the OS steals 6-14% of that, it reduces that value.

      High-end CPUs are pricey, which means people that buy them are willing to pay up for the little extra speed. They wouldn't be happy with a 6-14% performance hit.

      Many enthousiasts overclock their CPU's. They wouldn't be happy with a 6-14% performance hit.

      Linux/Unix is mainly used in server applications. Those processors (Opterons/Xeons) carry a price premium just because they give a couple extra percent more speed with the larget caches that they have.

      Speed matters. Always.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    19. Re:Theory Vs. Practice by jelle · · Score: 1

      "And the operations I mentioned were system call operations like performing IO read/writes, caching, interfacing with devices, etc. So yes, most applications would not be affected significantly."

      Linux/Unix is mainly used in server applications. Many server applications heavily perform "IO read/writes, caching, interfacing with devices, etc."...

      "That is, as the hardware speed increases, the percentage of the slowdown decreases." "Between, say, 300mhz CPU's, the performance difference may be 6-14%, but 600mhz CPU's it may shrink down to 3-7% for instance."

      That can't be so. The slowdown is caused by additional CPU/memory operations. Sure, the number of operations stays constant, but on the faster CPU the other operations also speedup, so the percentage stays the same. Actually, if the operations are really 'constant time', then the percentage would go up with faster processors, because everything except the 'constant time' operations would speed up.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    20. Re:Theory Vs. Practice by booch · · Score: 1

      I think we could argue this point for days.

      Most people buying PCs these days DO NOT care about speed. Heck, they don't even know what a MHz is. They get a slightly faster CPU because that's what the salesman tells them they need, or is a better value. (I typically recommend around 2nd from the bottom, in the theory that it will last longer than the cheapest choice.) I mean, a lot of people are just running Word and Excel. They were perfectly happy with their 800 MHz Pentium III, and the code didn't get 3 times slower. Hard drive and network performance are the more likely limiting factors in today's use cases.

      Even for servers, I/O is usually more important for performance. Your point about CPU caches shows that memory latency is typically a bigger bottleneck than raw CPU speed. If the CPU were the bottleneck, how would adding cache help? How often is your CPU running at 100%? How long does it run at 100%?

      --
      Software sucks. Open Source sucks less.
    21. Re:Theory Vs. Practice by Jeremi · · Score: 1
      People buy the middle of the road because that gives you a better value: more speed per dollar. If the OS steals 6-14% of that, it reduces that value.


      Sure... but having a computer that crashes reduces the value much more quickly. How many paid hours of a technician/debugging time do you think it takes to cancel out the economic benefit of a 14% faster OS? Better yet, how many minutes or hours of your online store's web site being down does it take to lose your company more money than the cost of the entire server? Not many.


      Speed matters. Always.


      True, but unless the system is only being used to play games, reliability matters much more. A slow computer is a known factor that can be accounted for. A crashed computer is an unplanned emergency.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    22. Re:Theory Vs. Practice by jelle · · Score: 1

      "I think we could argue this point for days."

      Agreed... Which is why it is on /. and comes back every couple of months...

      "I mean, a lot of people are just running Word and Excel."

      They won't be running Tanenbaum's microkernel either... (by the way, does it even exist yet?)

      "Even for servers, I/O is usually more important for performance."

      And I/O needs system calls, which is where the slowdown is when you have a microkernel...

      "Your point about CPU caches shows that memory latency is typically a bigger bottleneck than raw CPU speed."

      It can be a biggie, and the microkernel thrashes the cache a little more than necessary.

      "How often is your CPU running at 100%?"

      Actually, a lot: g++ takes a lot (really a lot) of time compiling code if you use a lot of template classes (STL, boost, and friends). But granted, that won't slow down with a microkernel... But the production systems I work on do make a lot of system calls and are often heavilym and continously loaded with both I/O and CPU.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    23. Re:Theory Vs. Practice by jelle · · Score: 1

      "Sure... but having a computer that crashes reduces the value much more quickly. "

      Is Linux that unstable for you that you would trade in 6-14% of its speed for something that (when Tanenbaum finally actually makes it), in my prediction, will crash just as often (or more)?

      If hardware dies and it locks-up the PCI-bus, no microkernel is going to save you.

      If a driver is flakey, it should be fixed or moved to userspace. Putting everything below a microkernel isn't going to give you anything better than that.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    24. Re:Theory Vs. Practice by hackstraw · · Score: 1

      In theory, there is no difference between theory and practice. But, in practice, there is.

      - Jan L.A. van de Snepscheut


      I still maintain the point that designing a monolithic kernel in 1991 is a fundamental error. Be thankful you are not my student. You would not get a high grade for such a design :-)

      - Tanenbaum to Torvalds

      In this context, practice trumped theory.

    25. Re:Theory Vs. Practice by Kristoph · · Score: 1

      Ok, but, honestly, does your system really run at 100% CPU all the time. I have tested this over a 1000+ hours and my average CPU utilization when the system is NOT idle (that is, when I am interacting with it) is 3.07% and the non-idle % of time when the CPU is over 80% is 0.000062% and the % of non-idle time that the CPU is 100% is so small it shows as 0%.

      So, I am thinking that maybe I have 6-14% to spare.

      ]{

    26. Re:Theory Vs. Practice by Anonymous Coward · · Score: 0

      "unless you're primary focus for an OS is security rather than performance"

      I think that's becoming the critical point. For the vast majority of computer users, performance is no longer an issue, security still is. Most arguments against microkernels have to do with the idea that microkernels are slow. That's hard to debate because there really aren't that many of them. Mach, QNX and L4 are probably the most commonly cited examples of microkernels but I don't think any of them have been fully tested not developed to their full potential.

      Mach is an older microkernel model that's really not so "micro" compared to something like L4. It is used in Mac OS X and I think it enhances the desktop side, but as a server it suffers.

      QNX is very nice, small and fast but has never really caught on as a desktop OS because of it's closed source nature.

      L4 is also very small and fast and open source but seems to be in a constant cycle of research. I seem to remember talk of porting Hurd to L4. I don't know if that ever gained any traction. It was going to be fairly difficult because of the difference in the number of system calls??? IIRC

      Regardless, the idea of a microkernel just makes sense for security and stability but performance is critically dependent upon a fast message passing system.

      I just wonder how dragonfly bsd fits into this whole thing. If it works out, I wonder if the dragonfly kernel might end up being a better kernel for Mac OS X than the Mach kernel. It's my understanding that dragonfly should theoretically be very fast once all the pieces are in place.

    27. Re:Theory Vs. Practice by Jeremi · · Score: 1
      Is Linux that unstable for you that you would trade in 6-14% of its speed for something that (when Tanenbaum finally actually makes it), in my prediction, will crash just as often (or more)?


      Obviously I wouldn't sacrifice speed for something that was less reliable. But if I had the choice of sacrificing 6-14% and getting in return an OS that never crashes, even in the presence of some buggy drivers, then sure, I would do it. Keep in mind that I'm on dual 2GHz CPUs, and so most of the time any slowdown is caused by I/O anyway... so the only thing I would be sacrificing is CPU cycles that were otherwise being wasted by the idle_thread.


      If a driver is flakey, it should be fixed or moved to userspace. Putting everything below a microkernel isn't going to give you anything better than that.


      As I understand it, "moving (potentially) flaky drivers to userspace" is what microkernels are all about. And having a system where driver crashes are similar in consequence to userland segfaults sounds very good to me.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    28. Re:Theory Vs. Practice by try_anything · · Score: 1

      It's funny that you mention an 800 MHz PIII. That's what I do my professional software development on. It's the slowest machine in the house, but it's plenty fast, and I wouldn't gain much out of migrating my work environment to the Athlon 64 X2 box I use for web surfing. So your statement is true for my household -- speed is a complete non-issue.

    29. Re:Theory Vs. Practice by Chandon+Seldon · · Score: 1

      14% takes that 2GHz processor down to 1720MHz, a 3GHz processor to 2580MHz.

      The 14% hit is probably only on those specific kernel operations that are now going through a layer of indirection that they wouldn't otherwise go through. A good chunk of this stuff is on operations that aren't (generally) CPU limited to begin with like disk & network access. Stuff that is CPU performance sensitive frequently has no system calls at all. You're going to get a performance hit, but it's not going to be noticible except in specific edge cases (i.e. forks might get slower which would hurt Apache performance).

      Any performance hits from a microkernel will be reduced further as people optimize around them. Correct is absolutely more important than fast in this case.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    30. Re:Theory Vs. Practice by booch · · Score: 1

      Minix has always been a microkernel, as far as I know. It was back in 1992 that Tannenbaum argued with Linus that a monolithic kernel was the wrong way to go. Had Minix had a more flexible license and maintainer, there's a decent chance that it would have gone on to do what Linux did.

      Good points on the I/O versus system calls and caching. Your work load does not sound typical to me though.

      I would guess that in an ideal world, we'd want to choose monolithic versus micro-kernels for various different tasks. For your case, it sounds like performance is more important than security. So a monolithic kernel would probably be best. But I think most tasks would be better off with more security, at the expense of some performance.

      I'd also point out that there are some microkernels out there that don't seem to have any performance penalty. QNX is probably the best example. I'm not sure about L4, but it probably has better performance characteristics than Mach, and Linux runs on top of it. Someone also mentioned that BeOS had a microkernel, and performed very well.

      --
      Software sucks. Open Source sucks less.
    31. Re:Theory Vs. Practice by jelle · · Score: 1

      On desktops, the problem is that the microkernel overhead doesn't take the 6-14% when it's idle, it takes the 6-14% when you're waiting for the program to respond to your input.

      On servers it's not unusual to find the disk utilization ('iostat') at 100%. Granted, this is not CPU but spindle activity, but the microkernel makes each I/O slower, and I/O is exactly what is keeping the system 100% busy. I want the job that causes the load to finish as fast as possible, so why let a microkernel waste time there?

      On embedded systems, the CPU itself is much heavier loaded. Continously above 75% is not abnormal in our embedded systems (if it were less, then we would switch to a slower, more power efficient version of the cpu).

      So no, I don't have 6-14% to spare. That doesn't mean that _you_ can't use a microkernel, but it's not the right thing for me to throw away valuable cycles in return for nothing. None of the fault cases I encounter on the desktop, server, or embedded systems would be solved with a microkernel, and the 'security' it supposedly gives is only a feeling of security and really nothing that security levels (or selinux) doesn't already give you.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    32. Re:Theory Vs. Practice by Anonymous Coward · · Score: 0

      So X has to be coded with the assumption that a driver might fail. Other apps using X don't have to care. Is this any worse than the current state of the art where everything simply falls over because there is no alternative?

      I guess if the only thing you know how to do is stop and restart the whole app, then yeah, you've got problems. Of your own making.

    33. Re:Theory Vs. Practice by jelle · · Score: 1

      "But if I had the choice of sacrificing 6-14% and getting in return an OS that never crashes, even in the presence of some buggy drivers, then sure, I would do it."

      Never crashes doesn't exist. Mainboards burning out (remember the incomplete stolen capacitoy formula), harddisks dying if you don't have Raid, Power outages, and overheating if the AC is turned off will not be prevented by microkernels. Besides that, a server that 'runs fine' except that the network card drivers or scsi/ata drivers are not loaded is still completely off-line.

      "As I understand it, "moving (potentially) flaky drivers to userspace" is what microkernels are all about."

      My point is that, if a driver is found flaky, that may be the only option besides dropping the hardware, but a _lot_ (most) of the drivers in Linux are rock solid, and slowing them down by putting the whole system under a microkernel is the same thing as giving every car a speed limiter at 50MPH in case its driver may cause an accident while speeding.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    34. Re:Theory Vs. Practice by jelle · · Score: 1

      "Correct is absolutely more important than fast in this case."

      'Correct' is not what a microkernel does, the reason why people like them is because they think it will help protect against 'incorrect' in drivers.

      A microkernel-based OS will end up littered with buggy drivers that nobody cares to fix, so a microkernel-based OS will have a lot of 'incorrect' in there.

      A microkernel's usefullness is similar to that of a 'virusscanner'. It's not the cure, it only treats symptoms, and it does so badly and costly.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    35. Re:Theory Vs. Practice by jelle · · Score: 1

      "For your case, it sounds like performance is more important than security."

      I'm actually convinced that microkernels won't give any additional security, nor reliability (unless you have hardware that has flaky drivers that can 'fix' themselves by being restarted/reloaded and which go either out of bounds, or for which rmmod/insmod doesn't work... but in that case the real solution is to fix the driver or ditch the hardware, not a microkernel).

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    36. Re:Theory Vs. Practice by Jeremi · · Score: 1
      Never crashes doesn't exist. Mainboards burning out...


      I should have been more specific: make it "never crashes due to software bugs".


      Besides that, a server that 'runs fine' except that the network card drivers or scsi/ata drivers are not loaded is still completely off-line.


      Sure, but the critical drivers are only a subset of the total drivers in use. So the benefit still exists for any driver that isn't central to the computer's tasks at hand.


      My point is that, if a driver is found flaky, that may be the only option besides dropping the hardware, but a _lot_ (most) of the drivers in Linux are rock solid, and slowing them down by putting the whole system under a microkernel is the same thing as giving every car a speed limiter at 50MPH in case its driver may cause an accident while speeding.


      But there are those of us, like myself, who are perfectly content at 50MPH anyway, so we wouldn't miss the extra speed. But we would like the extra peace of mind that comes from a more robust design. I guess ideally Linux could come with a configuration option that lets the user specify whether to run drivers in user space or kernel space, then the people who need more efficiency can have it, and the people who want more robustness can have that.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    37. Re:Theory Vs. Practice by jelle · · Score: 1

      "But there are those of us, like myself, who are perfectly content at 50MPH anyway, so we wouldn't miss the extra speed. But we would like the extra peace of mind that comes from a more robust design."

      You think this is insurance? It more resembles racketeering: You're perfectly welcome to switch to Tanenbaum's nonexistent slower microkernel that supposedly will crash less than Linux...

      "I guess ideally Linux could come with a configuration option that lets the user specify whether to run drivers in user space or kernel space, then the people who need more efficiency can have it, and the people who want more robustness can have that."

      Now, on a per driver basis, that is a feature I would applaud. I'd be interested to learn how exacly that would be done without too many driver modifications too...

      As far as microkernels to make systems more reliable or secure, I'll put that in the 'buying extended warranty from the retail shop' category: In most cases not worth the cost.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    38. Re:Theory Vs. Practice by indil · · Score: 1
    39. Re:Theory Vs. Practice by Anonymous Coward · · Score: 0

      You don't necessarily take a performance hit. Take a look at the research coming out of places like Karlsruhe. Micro-kernels do not have to be slow. Message passing can be almost as fast as traditional operating system call mechanisms.

    40. Re:Theory Vs. Practice by Tsagadai · · Score: 1

      Minix 3 is around 12,000 lines of code. Linux doesn't need to be 2.5 million lines as anyone who has compiled a kernel or worked on any embedded system knows. Code size is irrelevent to converting to micro kernel. after all those 2.5million lines were written before and are revised on a regular basis. Size is no barrier.

    41. Re:Theory Vs. Practice by Kristoph · · Score: 1

      I am not sure why 6-16% overhead (or for that matter 50% overhead) is an issue when the system is idle. After all, 6-16% of an idle system (utilized at, say, 10% is less than 2 % of the overall system capacity).

      On the server, if you are bottlencked on IO the incremental cost of a microkernel will be minimal (bus utilization overhead which is MUCH smaller than 6%). The only case where you would pay the full penalty of a microkernel is when you are bottlenceked on the CPU or when you are bottlnecked on the bus which is quite rare.

      I might be so bold to suggest that the cases where windows has higher performance than Linux are greater than where Linux has higher performance than a Micrkernel. So, by your logic, from a performance standpoint, Windows might be the best choice.

      ]{

    42. Re:Theory Vs. Practice by jelle · · Score: 1

      "I am not sure why 6-16% overhead (or for that matter 50% overhead) is an issue when the system is idle. After all, 6-16% of an idle system (utilized at, say, 10% is less than 2 % of the overall system capacity)."

      It matters because the overhead doesn't happen during idle cycles (there is nothing to do during idle cycles, let alone something that can be slowed down by the kernel), it only happens during activity...

      "The only case where you would pay the full penalty of a microkernel is when you are bottlenceked on the CPU or when you are bottlnecked on the bus which is quite rare."

      If the bus bottleneck rarely occurred, there wouldn't be a push for faster FSB from Intel and faster HTT and memory interfaces, would there?

      "I might be so bold to suggest that the cases where windows has higher performance than Linux are greater than where Linux has higher performance than a Micrkernel. So, by your logic, from a performance standpoint, Windows might be the best choice."

      That is your statement (about windows being faster than Linux) and your logic, not mine.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    43. Re:Theory Vs. Practice by Chandon+Seldon · · Score: 1
      You are making two incorrect assumptions. First you assume that operating systems with no buggy drivers are a realistic expectation - they aren't. Second, you assume that people won't debug drivers if crashes don't result in system crashes - also not true.

      A microkernel is "correct" in the same way access checking is correct - it allows a stupid mistake to result in an exception that can be handled (and easily logged & debugged) rather than a hard crash. Hard crashes suck for users (because all data in memory is lost) and developers (because you need to load up a debugger to even figure out what happened).

      Human time is way more valuable than CPU time at this point - a performance hit to make debugging easier is almost always a good deal.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    44. Re:Theory Vs. Practice by jelle · · Score: 1

      "You are making two incorrect assumptions. First you assume that operating systems with no buggy drivers are a realistic expectation - they aren't."

      I'm not expecting drivers with no bugs.

      My 'assumption' is not what you call an 'expectation' but my experience.

      It is realistic to expect that certain drivers are rock-solid in a monolythic kernel, meaning: they never cause any crashes or downtime during the lifetime of the hardware. Many drivers in Linux are like that.

      It would be foolish to slow those drivers down, and a microkernel slows everything down, including those drivers.

      That is what is a bad idea about a microkernel, it's not discriminatory.

      "it allows a stupid mistake to result in an exception that can be handled (and easily logged & debugged) rather than a hard crash."

      In real life that means that the logfiles will mostly be ignored and you'll end-up with a system with buggy drivers that sorta seems to work, but a bit slower and sometimes it's busy reloading stuff.

      Sounds like the 'windows' approach to me. I prefer rock-solid and fast over stumbling and hickups.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
  16. Re:Feh. by Anonymous Coward · · Score: 1, Interesting

    YEAH!

    Why doesn't Tannenbaum write his OWN O/S following his examples, THEN we can talk! Minix DOESN'T COUNT! Frankly, Linux has been amazingly stable through most of its life, as have other UNIX variants/versions. I didn't see that with Minix.

    The industry has better and more important things to worry about.

  17. Have you hurd? by Anonymous Coward · · Score: 0

    I Hurd on the grape vine that this guy isnt talking crap.

  18. Re:Feh. by AKAImBatman · · Score: 5, Interesting

    It holds no more true in practice today than it did when he started.

    WRONG.

    Tanenbaum's research is correct, in that a Microkernel architecture is more secure, easier to maintain, and just all around better. The problem is that early Microkernel architectures killed the concept back when most of the OSes we use today were being developed.

    What was the key problem with these kernels? Performance. Mach (one of the more popular research OSes) incurred a huge cost in message passing as every message was checked for validity as it was sent. This wouldn't have been *so* bad, but it ended up worse because a variety of flaws in the Mach implementation. There was some attempt to address this in Mach 3, but the project eventually tappered off. Oddly, NeXT (and later Apple) picked up the Mach kernel and used it in their products. Performance was fixed partly through a series of hacks, and partly through raw horsepower.

    Beyond that, you might want to read the rest of TFA. Tanenbaum goes over several other concepts that are hot at the moment, include Virtual Machines, Virtualization, and driver protection.

  19. A compromise needs to be made. by Ayanami+Rei · · Score: 5, Interesting

    Most drivers don't need to run in kernel mode (read: any USB device driver)... or at least they don't need to run in response to system calls.
    The hardware manipulating parts kernel should stick to providing higher-level APIs for most bus and system protocols and provide async-io for kernel and user space. If most kernel mode drivers that power your typical /dev/dsp and /dev/input/mouse and such could be rewritten as kernel-threads that dispatch requests to and from other kernel threads servicing physical hardware in the system you can provide fault-isolation and state reconstruction in the face of crashes without incurring much overhead. Plus user processes could also drive these interfaces directly so user space programs could talk to hardware without needing to load in dangerous, untrusted kernel modules (esp. from closed-source hardware vendors).

    Or am I just crazy?

    Yeah but microkernels seems like taking things to an extreme that can be accomplished with other means.

    --
    THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
    1. Re:A compromise needs to be made. by Big+Jojo · · Score: 1
      Most drivers don't need to run in kernel mode (read: any USB device driver)

      Clue: don't forget to look at the _upper_ levels like the network and TTY stacks, to which those drivers connect. The cases where Linux-USB user mode drivers are OK are those where the upper level is essentially a userspace application ... never those cases where the upper level is a complex kernel framework. And most USB drivers fit into the latter category.

      The traditional reason why microkernels suck is because every layer crossing switches from something that costs one procedure call into something about 50x more expensive ... and there are a LOT of layer crossings in a driver stack.

      Or am I just crazy?

      Certainly about "any USB driver".

    2. Re:A compromise needs to be made. by Anonymous Coward · · Score: 0

      ZOMG TEH REI

    3. Re:A compromise needs to be made. by SillyNickName4me · · Score: 1

      Plus user processes could also drive these interfaces directly so user space programs could talk to hardware without needing to load in dangerous, untrusted kernel modules (esp. from closed-source hardware vendors).

      The problem with this all is that when you provide enough hardware access to such programs to actually do something, they can also do most of that stuff that makes untrusted kernel modules potentially dangerous.

      Unless of course you introduce all kinds of validation... (does that program really own the memory it wants the disk to dma data into?) which will also introduce noticable overhead....

      (this is an old and well known problem, it is part of what causes poor performance with traditional miucrokernels)

    4. Re:A compromise needs to be made. by Ayanami+Rei · · Score: 3, Interesting

      This is true.
      It doesn't necessarily make it less crash prone. But it does make it instrumentable if it proves to be unstable (you could easily trace, debug, intercept, or otherwise validate the requests the blob made if so needed).

      Furthermore, the kernel mode portion would merely be relaying commands to trusted memory-mapped regions and IO space requested by the process initially (limited by configuration files, perhaps). Most kernel crashes are the cause of errors (pointer mistakes, buf overflow, race condition, etc.) in the complex driver code which "trap" the system in kernel space. The user space portion would likely instead SIG11 and die... if it left the hardware in a weird state it could be fixed by simply restarting the driver program which would, at its outset, send RESET type commands to the device putting it in a known state.

      The largest problem I see is that it isn't possible to easily recast a userspace driver program into a device node without a mechanism like FUSE. It only works if the hardware target in question is nearly always accessed behind a userspace library (OpenGL, libalsa/libjack/OpenAL, libusb).

      --
      THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
    5. Re:A compromise needs to be made. by TheLink · · Score: 1

      Could things be improved if CPUs were different? Special features to make message passing more efficient?

      --
    6. Re:A compromise needs to be made. by budgenator · · Score: 1

      I'm working on one right now, I just need to learn a bit more Ada first.
      Sorry I couldn't resist that one, it just seems all of the timing, sequential vs. concurrent, etc issues of a microkernal sounds very difficult and similar to issues that Ada was designed to be strong in. Syncronization would be a nightmare.

      --
      Apocalypse Cancelled, Sorry, No Ticket Refunds
    7. Re:A compromise needs to be made. by Pseudonym · · Score: 1

      Things could be improved by not using IA32 chips.

      On the IA32, messing with address spaces is expensive. (This is part of Linus' complaint about COW.) Switching address spaces, for example, causes a complete TLB flush. Sure, the PTEs are likely to be in cache, but still, for a small IPC interaction (client -> server -> client), it's a noticable hit. More modern architectures make it much cheaper to mess with address spaces.

      Having said that, L4 had an interesting approach which helped quite a bit. To understand how it works, you need to know a bit about the Intel architecture. Basically, there's a flat 32-bit virtual address space. On top of that, you have segment selectors, which address some region of that flat space.

      Now consider an artificial but not unrealistic macrokernel operating system for a 32-bit architecture. You have 4Gb of address space. Let's divide this up into 3Gb of "user space" and 1Gb of "kernel space". Entering the kernel is fairly cheap because you don't need to swap address spaces.

      Now consider and artifical but not unrealistic microkernel operating system. The kernel footprint is much smaller. Exactly how much smaller depends on things like how much dynamic memory it needs, but let's say it only takes 0.5Gb. You could keep the same memory map, and reserve the other 0.5Gb for servers which have a small memory footprint, such as device drivers. All "large" address spaces have the same "small" address spaces as part of their map. Then you can creatively use the IA32 segment registers to multiplex on top of the flat address space. Context switching from client to server to client will not actually change address spaces if the server is "small", making it almost as cheap as a system call in a monolithic kernel.

      Amusingly, 64 bit architectures make this trick even more elegant, because you can devote even more of the address space to "small" servers, which don't even need to be that small.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  20. Proof is in the pudding by Hacksaw · · Score: 4, Interesting

    I won't claim that Professor T is wrong, but the proof is in the pudding. If he could produce a kernel set up with all the bells and whistles of Linux, which is the same speed and demonstrably more secure, I'd use it.

    But most design is about tradoffs, and it seems like the tradeoff with microkernels is compartmentalism vs. speed. Frankly, most people would rather have speed, unless the security situation is just untenable. So far it's been acceptable to a lot of people using Linux.

    Notably, if security is of higher import than speed, people don't reach for micro-kernels, they reach for things like OpenBSD, itself a monolithic kernel.

    --

    All the technology in the world won't hide your lack of vision, talent, or understanding.

    1. Re:Proof is in the pudding by WindBourne · · Score: 3, Insightful

      OpenBSD's security strength has NOTHING to do with the kernel. It has to do with the fact that mulitple trained eyes are looking over code. The other thing that you will note is that they do not include new code in it. It is almost all older code that has been proven on other systems (read netbsd, apple, linux, etc). IOW, by being back several revs, they are gaining the advantage of everybody else as well as their own.

      --
      I prefer the "u" in honour as it seems to be missing these days.
    2. Re:Proof is in the pudding by Anonymous Coward · · Score: 0

      You mean "the proof of the pudding is in the eating"

    3. Re:Proof is in the pudding by Karma+Farmer · · Score: 1

      You mean "you can't eat your pudding and still have it."

    4. Re:Proof is in the pudding by Anonymous Coward · · Score: 0

      Exactly. OpenBSD is in fact very old BSD4 code from the 80s that was never designed for security in the first place. It has just been picked over by fine-toothed comb to the point where it is now finally debugged.

    5. Re:Proof is in the pudding by Anonymous Coward · · Score: 2, Informative

      A minor nitpick, but you'll learn something for the future:

      "The proof is in the pudding" is actually an INCORRECT usage of the actual saying. If you think about it, it makes no sense -- what proof is in the pudding (and what pudding?!)?

      Instead, the actual, proper phrase is: "The proof of the pudding is in the eating."

    6. Re:Proof is in the pudding by Duncan3 · · Score: 2, Insightful

      Actually, it's been proven over and over that microkernel designs dont HAVE to be slow. Read the Liedtke paper on IPC in L3 from 1993 as one example.

      The problem is the hardware is optimized for something else now. Also, modern programmers that only know Java can't code ASM and understand the hardware worth a damn. I should know, I have to try and teach them.

      And yes, all people care about is speed, becasue you cannot benchmark securrity, and benchmarks are all marketing people understand, and gamers need something to brag about.

      --
      - Adam L. Beberg - The Cosm Project - http://www.mithral.com/
    7. Re:Proof is in the pudding by polemistes · · Score: 4, Funny

      You mean: "If you don't eat your meat, you can't have any pudding. How can you have any pudding if you don't eat your meat?"

    8. Re:Proof is in the pudding by Hacksaw · · Score: 1

      So you are saying that for microkernels to be fast, you need different hardware? What would the difference be?

      --

      All the technology in the world won't hide your lack of vision, talent, or understanding.

    9. Re:Proof is in the pudding by MasterC · · Score: 1

      If [Tanenbaum] could produce a kernel set up with all the bells and whistles of Linux, which is the same speed and demonstrably more secure, I'd use it.

      The irony here is that Tanenbaum wrong Minix and Linus wrote Linux because Tanenbaum wouldn't add features to Minix. The option you seek was a choice to Tanenbaum over 15 years ago and he chose not to follow it. He can always take the other path at the fork in the road, but Linux has made some serious grooves and it's anyone's guess if Tanenbaum (or anyone) could take it on successfully. Impossible? Certainly not.

      --
      :wq
    10. Re:Proof is in the pudding by booch · · Score: 1

      We thought the same thing about CPUs until recently. We all thought that CPU speed would continue to be the main goal of Intel and AMD. But look at what Intel is working towards now -- CPU power per watt. And the new Core CPUs are nowhere near the MHz speed of the Pentium 4.

      I suspect we'll be doing the same thing with software in the next few years. Instead of features and speed, developers will concentrate on security. In many ways, they already are. (And they're often more concerned with development speed than execution speed already.) System administrators have been concentrating on security for quite some time now. I think the current best solution for compartmentalization is virtual machines. (The VMware type, moreso than the Java type.) I think that adds complexity though, causing the sysadmins to have to manage many more systems. So I expect things to move into the kernel more. The OpenVZ method seems to be more manageable.

      --
      Software sucks. Open Source sucks less.
    11. Re:Proof is in the pudding by Eli+Gottlieb · · Score: 1

      Well for instance, hardware optimized for speedy context switches would make microkernels something like an order of magnitude faster.

    12. Re:Proof is in the pudding by klaun · · Score: 1, Insightful
      proven on other systems (read netbsd, apple, linux, etc). IOW, by being back several revs, they are gaining the advantage of

      How can they be including code from Apple and Linux? Wouldn't that produce licensing incompatibilities?

    13. Re:Proof is in the pudding by Elastri · · Score: 2, Informative

      I actually saw Tanenbaum giving a talk above Minix a few weeks ago. He brought up the speed issue, saying that in modern (and future) hardware the performance hit from the microkernel will be less and less relevant. Even my current computer is probably more power than I need almost all the time, and I need a lot more computing power than a casual user. Tanenbaum firmly believes that the stability and modularity will be prefered over a slight speed increase. After he showed all of the benefits of the Minix architecture, I was inclined to agree.

      One thing which hasn't really been touched on in this thread yet is exactly what the modularity means for end users. It isn't just that the kernel is simplified. When the drivers and other subsystems are external to the kernel, their failure can become a non-issue. This *does not* just mean that they won't take the whole system down. Minix has a process called the ressurection server. It monitors all of the various drivers and subsystems and, if one of them fails, will attempt to get it running again. Professor Tanenbaum showed us data where the hard disk controller was failing a rediculous number of times per second, but the system was still maintaining about 90% of the speed that it would have if it wasn't failing at all. The OS design can actually make up for poorly designed drivers.

    14. Re:Proof is in the pudding by Lord+Ender · · Score: 2, Insightful

      Wrong. OpenBSDs strength is partially because of their testing and code review policy, but ALSO because of design issues (like kernel memory management).

      Certain types of security flaws are much harder to exploit when the OS addresses memory in unpredictable ways.

      Other design principles, which encourage access log review, aid to the security of the system without having anything to do with code review.

      --
      A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
    15. Re:Proof is in the pudding by winse · · Score: 1

      stand still laddie

      --
      this sig is deprecated
    16. Re:Proof is in the pudding by isj · · Score: 1

      I am one of the silly people who would gladly trade in 10% of the performance for increased reliability on my desktop.

      The OS? Linux. And for more than a year I still haven't found the cause for partial hangs. (Could be the X server. Could be the SMP code. Could be something entirely different)

    17. Re:Proof is in the pudding by Anonymous Coward · · Score: 0

      Minix was an OS designed for teaching. Hence the choices that Tanenbaum made. He would probably have made other choices if he had wanted to create a serious OS.

    18. Re:Proof is in the pudding by dook43 · · Score: 1

      Everyone... except any type of gamer that is.

      --
      This comment was randomly generated by a school of piranhas chewing on the PCB of a Microsoft Natural Keyboard.
    19. Re:Proof is in the pudding by Duncan3 · · Score: 1

      they are optimized to make one single threaded app go very fast, becasue that's what they benchmark.

      Lets call it oh... a video game because that's the crowd that cant get a GF and thus cares about such bullshit numbers and spends $1000 on a bleeding edge processor.

      So, context switching and message passing is sloooooooooooooooow... becasue it's caching everything and the memeory structure is 5 layers of indirection and 3 caches deep.

      --
      - Adam L. Beberg - The Cosm Project - http://www.mithral.com/
    20. Re:Proof is in the pudding by TheLink · · Score: 1

      If most people would rather have speed, why are those flashy GUI animations on by default on many popular systems, and why do most people keep them on?

      If you want speed, why should you have to wait for HUNDREDS of milliseconds for menus or submenus to be displayed (and its not because the system isn't fast enough to display it immediately).

      Just look at the recent silly eyecandy stuff. 40 years after Doug Englebart invented the mouse and tons of other stuff, 20 years after Apple popularized the GUI, 10 years after MS windows spread it, and this is all we get as a GUI improvement?

      More eye-candy, and nothing that makes things substantially easier or faster to do things. In fact its probably slower in most cases.

      --
    21. Re:Proof is in the pudding by Anonymous Coward · · Score: 0

      Considering that games spend an insignificant amount of time in the kernel I don't see what you think you're saying. The only thing of significance is network latency (multiplayer only) and audio/video command latency. The audio and video latency can be real-time and the IPC overhead would be trivial.

    22. Re:Proof is in the pudding by 0xABADC0DA · · Score: 1

      It could also be memory errors. Even good memory can flip bits when overheated or in the presence of some radiation source. There was a paper not too long ago about bypassing Java's type system using memory errors, like half the time the os would crash and the other half they would get access to what was supposed to be protected by the type system. So if you have normal PC memory with no or weak error correction try cleaning the case fan and moving away from other equipment.

    23. Re:Proof is in the pudding by Kr3m3Puff · · Score: 1

      OSX and Mach... Feature rich and robust enough for you?

      --
      D.O.U.O.S.V.A.V.V.M.
    24. Re:Proof is in the pudding by Dis*abstraction · · Score: 1

      That's even worse than "could care less" Nazism.

    25. Re:Proof is in the pudding by Jeremi · · Score: 1
      if most people would rather have speed, why are those flashy GUI animations on by default


      Because the software developers are running on the latest and fastest machines (so that they can compile as quickly as possible) and therefore don't notice any slowdown when the eye-candy is enabled. They and marketing think it looks cool, and they don't experience any downside, so they make it the default.


      and why do most people keep them on?


      For the same reasons many people leave their web browser defaulting to the factory-preset page: they don't know it's possible to change the setting, they don't know how to change the setting, or they don't realize that they would get better performance if they changed the setting.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    26. Re:Proof is in the pudding by Anonymous Coward · · Score: 0

      Nope. Most old 80s bsd code was removed during the bsd 4.4 lite time peroid.. remember there was a lawsuit. In fact, that was released AFTER THE FIRST LINUX KERNEL. So most of the code is younger than the first linux kernel in modern BSD systems. Thats why bsd isn't dying; its a spring pup compared to linux. The exception to this is OSX since apple inherited a unix license from NeXT and they used the old Mach 2.5/NeXT code. It was upgraded before 10.0 server to Mach 3 with netbsd and freebsd code imported though.

      OpenBSD forked from NetBSD which theo was a founder of i believe. NetBSD was based on 386bsd just like FreeBSD was.

    27. Re:Proof is in the pudding by laffer1 · · Score: 1

      Yes it would cause problems. Also, theo hates GPL code.

      Please someone correct me if i'm wrong, but introducing GPL code into the kernel would downgrade the code to GPL wouldn't it? (downgrade in the sense code reuse is no longer free for everyone)

    28. Re:Proof is in the pudding by Hacksaw · · Score: 1

      Maybe it's a different thing, but my understanding is that every non-inlined function call is a context switch. So wouldn't fast context switching make everything faster? (Well, except for code that strenuously avoids it, I guess.)

      --

      All the technology in the world won't hide your lack of vision, talent, or understanding.

    29. Re:Proof is in the pudding by Hacksaw · · Score: 1

      Thanks for reminding me.

      When I think about it, though, it could be taken as a poetic way of saying the proof of the pudding is in the eating.

      It's not an external proof. There is no pudding certification, no pudding board passing out papers decreeing the acceptability of the quality. The proof of the quality of the pudding is in the pudding.

      In fact, I'd go as far as to say that my newer phrase is more general! After all, perhaps I'm using my pudding for spackle, or bicycle lubrication. :-)

      --

      All the technology in the world won't hide your lack of vision, talent, or understanding.

    30. Re:Proof is in the pudding by Chandon+Seldon · · Score: 1

      Minix needed to be simple enough that it was useful to Tanenbaum. Going through the whole Linux kernel with students in a reasonable number of semesters would be pretty much impossible.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    31. Re:Proof is in the pudding by Anonymous Coward · · Score: 0

      You know what i am sick of this freakin open BSD is better crap it just sucks cus it aint

    32. Re:Proof is in the pudding by Anonymous Coward · · Score: 0

      That's not really correct. Berkeley was slowly removing the AT&T code for years, and 4.4Lite was just the final act in that.

      Regardless, most OpenBSD code was written in a day when security was less important and the original OS certainly wasn't designed for security. That's all work done after the fact.

    33. Re:Proof is in the pudding by isj · · Score: 1

      It's ECC memmory, but thanks for the suggestion anyway.

      The funny thing is that when it locks up, xinetd still works, but presumably cannot spawn child processes or somesuch. No log at all.

      The hangs mostly (but not always) happen when there is some light graphic acticity (firefox/openoffice). It cannot be reproduced on demand. Weeks can go by with no hangs, then 4 hangs in a day.

      So 10% performance hit would be cheap for avoiding problems like this or at least getting a way of pinpoiting the culprit.

      And I think that is A. Tanenbaum's point.

    34. Re:Proof is in the pudding by skeldoy · · Score: 1

      I won't claim that Professor T is wrong

      Let me share some other insights from the professor:
      "... 5 years from now everyone will be running free GNU on their 200 MIPS, 64M SPARCstation-5."
      ---- Andy T - 1992

      "My point is that writing a new operating system [Linux] that is closely tied to any particular piece of hardware, especially a weird one like the Intel line, is basically wrong. An OS itself should be easily portable to new hardware platforms."
      ---- Andy T - 1992

      Well.. In 1997 I for sure didnt want to shell out the money for a Sparcstation... I owned, the much cheaper, "weird" Intel line. And I am pretty sure that Linux is the most ported OS in existence. Maybe the microkernel is the way to go, but coming from this guy........ I wouldnt be so sure :P

    35. Re:Proof is in the pudding by SnowZero · · Score: 1

      Considering that games spend an insignificant amount of time in the kernel

      Yeah, it's not as though games need to send data to the video display driver or anything...

    36. Re:Proof is in the pudding by Anonymous Coward · · Score: 0

      > Maybe it's a different thing, but my understanding is that every non-inlined function call is a context switch.

      Pushing and restoring the registers is the generally accepted definition of a context switch.

    37. Re:Proof is in the pudding by TheLink · · Score: 1

      "Because the software developers are running on the latest and fastest machines"

      "therefore don't notice any slowdown when the eye-candy is enabled."

      Uh many of the slowdowns are a fixed hundreds of milliseconds. For example: the pause between your cursor hovering over a submenu item and the submenu item displaying. On those GUIs by default no matter how fast your machine is, it will pause say 400 milliseconds before displaying the stuff. Try it yourself on KDE or Windows.

      Same for the stupid animations - once the machine is fast enough to play the animations properly - it still will play the entire thing at the preset rate for the preset time. For the poorer designs you actually have to wait for the animations to finish before you can interact meaningfully with the relevant objects involved.

      I think it's just sad that after all these decades most of the proposed GUI "advances" are not much better than "interstitial adverts". No imagination? No useful ideas?

      The kernel improvements are fine for servers since the GUI is not really used for most servers.

      But for desktop users if the GUI incurs a fixed latency on each mouse-click/human interaction, it really starts to add up.

      --
    38. Re:Proof is in the pudding by Anonymous Coward · · Score: 0

      Commands are sent to the video server in batches and can, as stated, be given real-time guarantees. Commands are sent asynchronously and require an insignificant time in the kernel. But it's not like you know what you're talking about, because you've never written anything more complicated than a half-finished program for a sophomore-level CS class.

    39. Re:Proof is in the pudding by Hacksaw · · Score: 1

      >And I am pretty sure that Linux is the most ported OS in existence.

      Actually, I think that honor might go to NetBSD.

      But your point is taken. Certainly by that time the Intel platform was well entrenched, though clearly not as well as today. Gateway was a power, as was Dell and Compaq. The Intel platform was wonky, but spreading rapidly. Apple was in the middle of being both great and stupid, and various workstation vendors were falling over due to an inability to compete with Sun and SGI.

      At the time it seemed like Sun and SGI were going to divide up the workstation market, Apple was going to hold artsy stuff, and Intel was going to be all about Windoze and the office.

      But this was also the time of the rise of Linux, and the BSD's, all of which worked well on intel. And NetBSD was clear proof that an OS could be portable and good.

      --

      All the technology in the world won't hide your lack of vision, talent, or understanding.

    40. Re:Proof is in the pudding by Anonymous Coward · · Score: 0

      If it's only firefox and openoffice maybe Java is causing it. Sun's Java uses opengl by default to accelerate the graphics, so if you have a bad opengl driver for your card maybe that's the cause. Just FYI b/c I agree with your point.

  21. My Kernel by Anonymous Coward · · Score: 0

    Just stopped in from the near future.

    My computer has nothing but microkernels.

    There is a small kernal running on each on my 32K processors.

    Each processor handles on a very very small amount of the
    work of my "Operating System" (we don't call it that anymore).

    My computer has about 1K processors devoted to video, about
    1K processors devoted to my hyperlink (Internet sucessor), and many, many other processors devoted to every service and program I run.
    Presently my meter shows that I have 15K processors at "System Idle".

    Just giving you a peek into the not so far future.
     
    Future Boy.

  22. Re:Feh. by Anonymous Coward · · Score: 0

    Tannenbaum has been spouting that business for the last twenty years. It holds no more just as much truth in practice today than as it did when he started.

    Fixed it for you.

  23. Tanenbaum confirms it! by zensonic · · Score: 1

    ... Hurd lives!

    --
    Thomas S. Iversen
    1. Re:Tanenbaum confirms it! by ultranova · · Score: 1

      ... Hurd lives!

      Since all the source commits this year, according to commit-hurd mailing list archive, have come from a single person, it seems to me that even BSD is in better health than Hurd...

      As I see it, microkernels have a single problem, almost impossible to get accross: latency.

      When a program does a system call in Linux, its execution continues in the kernel mode, using the programs timeslice; when the call is done, the program returns back to user mode. In the best case, the whole call can conclude without a single task switch between entry and exit, but in any case, the kernel starts to execute the system call immediately.

      Now think of what happens when a program makes a system call in Hurd. It sends a message to the appropriate server program and then waits for an answer. In the best case, that server program is free to begin executing the requested action immediately when it's next scheduled (whenever that will be); in the worst case, it already has several other requests queued. Worst of all, the other requests may be from lower-priority programs, which may thus block a high-priority program from executing for a long time. Or suppose that a high-priority (perhaps even realtime) task makes a system call; in a monolithic kernel, the thread keeps its priority during the system call, but in a microkernel, the server might be running at a much lower priority, causing stalling of the RT task.

      Sure, you can make the servers multithreaded. So how many threads should you have waiting ? 2 ? 10 ? 100 ? A monolithic kernel automatically has a thread for each program executing a system call simultaneously: the programs own thread. A microkernel won't. If you have a multi-processor machine, the difference is going to be even more noticeable.

      There are ways around this, but they aren't simple. One possibility is to make it possible for a program to set a message port in such a mode that any incoming messages will automatically spawn a new thread (if none is currently polling for messages) to handle it. This, however, won't solve the "RT task waiting for a non-RT server to do something" problem described above. For that you'd need to build a task dependency tree and make the server inherit the priority of tasks waiting for it, and that's not without problems either (suppose there are plenty of other requests queued from low-priority tasks before the one from RT tasks; should those other requests also be handled at higher priority ?).

      Microkernel sounds good on paper, but trying to implement it quickly runs into a swamp of problems - just like any other software project, really. It is not a silver bullet; and even if it was, that still wouldn't mean that you couldn't shoot yourself in the foot with it.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

  24. Microkernels are useless on modern hardware by Anonymous Coward · · Score: 0

    Microkernels might seem like a great idea at first, but on modern hardware they are as good as useless.
    One problem is, when a driver crashes the hardware is in an unkown state, some hardware might be resetable, most hardware is not, so how are you going to resume the driver?
    And then there is the even bigger problem of DMA capable hardware. There is basically no way to limit the fysical memory access for DMA devices such as PCI cards. You can DMA main memory to the PCI cards buffer (think of videocards etc.) and then read it from there.

    Perhapse this will be addressed in future hardware, but until then microkernels are definitly not worth the extra overhead they impose.

  25. personally.. by DoctorDyna · · Score: 1
    I would like to see a kernel that is completely compartmentalized, maybe even with some "at install time" configuration options. Break it down into a tree that you can pick and choose parts from. Maybe this is a bit off topic, but it would be nice to not have to install, then get kernel sources, strip, reconfigure, recompile, install, hope it works...

    Doesn't this compartment thing mean some sort of "plugin" style?

    --
    Windows has more viruses because linux has more virus coders.
    1. Re:personally.. by ajlitt · · Score: 1

      Like... Like kernel modules?

    2. Re:personally.. by Tweekster · · Score: 1

      Yeah, if only a kernel had some sort of interface for this....http://www.tldp.org/HOWTO/Module-HOWTO/

      --
      The phrase "more better" is acceptable English. suck it grammar Nazis
  26. Minix3 by wysiwia · · Score: 2, Interesting

    A paper might show the concept but only a real working sample will provide answers. Just wait until Minix3 (http://www.minix3.org/) is finished and then lets see if it's slower or not and if it's saver or not.

    O. Wyss

    --
    See http://wyoguide.sf.net/papers/Cross-platform.html
    1. Re:Minix3 by teacher_dude · · Score: 1

      Yeah, but the Minix3 website still says it's "a new" open source opsys. Did they start over from scratch? And keep looking at the page, it comes with 400! Yes, I say 400 unix programs! What a bargain, clearly better than the competitors.

      --
      What if the hokey-pokey is what it's all about?
  27. Didn't he give us Minix? by Anonymous Coward · · Score: 1, Funny

    cat tongue >/dev/null

  28. Not entirely accurate by WindBourne · · Score: 3, Insightful

    Back in the 80's and 90's, the argument for monolithic was performance. Considering that CPUs were so small, it made sense. If Linux had been on a micro kernel design, it would have been slower than MS. IOW, it would never have gotten off the ground.
     
      The 2'nd approach(paravirtualization) could actually be used WRT linux as a means of not only separating the usermode from the device drivers, but it would also allow for some nice networking capabilities. After all, the average systems does not really need all the capabilities that is has. If a simple server(s) can be set up for the house and then multiple desktops without driver is set up, it simplifies life.

    --
    I prefer the "u" in honour as it seems to be missing these days.
    1. Re:Not entirely accurate by alsuren · · Score: 1

      "Back in the 80's and 90's, the argument for monolithic was performance. Considering that CPUs were so small, it made sense. If Linux had been on a micro kernel design, it would have been slower than MS. IOW, it would never have gotten off the ground."

      Was the Linux kernel comparing itself with MS back at its conception? I thought it was just designed as a nice new Unix kernel (and only got GNUified out of chance).

      I'd only be comfortable comparing Unix with Unix, and letting the handful of Other Systems go play Minesweeper or whatever they use them for these days.

  29. We will see.. by Anonymous Coward · · Score: 0

    I want to see some benchmarks to compare Linux vs (insert the microkernel that Tanembaum talks about). Uh.. there are no benchmarks? There are no Tanembaum's microkernel to try? Sorry.. I will continue using Linux then.
    http://www.servicerules.com.ar/

  30. "Bus/Kernel" by bigattichouse · · Score: 1

    Always kinda wondered when microkernels would be abstracted out as a bus where processor/code modules literally plug into...

    --
    meh
  31. Re:Feh. by Anonymous Coward · · Score: 1, Informative

    He has. It's called Amoeba. I haven't tried it myself though.

  32. Sheesh.... by Anonymous Coward · · Score: 0

    The Linux Kernel has modules.

    End of Story.

  33. Lessons on evolutionary theory for Andy... by csoto · · Score: 2, Insightful

    Dearest Andy, please take some University courses on evolutionary biology. Perhaps you will take away a meaningful sense of the differences between "optimal" and "sufficient." I agree 100% with what you say. "Microkernels are better." That being said, this does nothing to diminish the viability of Linux, or any other monolithic system. Evolution only requires that a species retain sufficient qualities to ensure survivability (and therefore reproduction) in a given environment. "Perfection" never enters the equation (not even qualifiers such as "best" or "better" - just "good enough").

    So, let's all agree with Andy, then go on using the best tools for our purposes. If that happens to be Linux (or even Windoze), then so be it...

    --
    There exists no way of exchanging information without making judgments. --Bene Gesserit Axiom
    1. Re:Lessons on evolutionary theory for Andy... by DoofusOfDeath · · Score: 1

      This parent is way off base.

      First, if you have two variations of species (i.e. macro-kernel vs. micro-kernel Linux), it doesn't matter if both are sufficient. What matters is, will one take off more than the other. So if Tannenbaum is right that the macro-kernel is better, and someone can be bothered to actually implement it, then evolutionary biology theory WOULD indicate that the micro-kernel would win.

      Second, you're basically saying that if one variation (macro-kernel) is good enough, then we won't see the creation of any better variations (micro-kernel). There's nothing in evolutionary biology that says the existing of one species that can survive implies no new species will come into existence. In fact, if that were true, evolutionary biology would have stopped with the very first species.

    2. Re:Lessons on evolutionary theory for Andy... by hotdiggitydawg · · Score: 1



      You're aiming too far in the other direction. Actually achieving perfection may never enter the equation, but continuous improvement is required to ensure survivability against your competitors. Otherwise we'd all still be hammering nails in with large rocks (hell, they're not perfect, but they are sufficient and easier to make than a proper hammer... until the 0.001% of the time they break in half, or bend the nail and jam it through your finger, etc.)

      </bad analogy warning>

      Hey, don't blame me for the bad analogy, TFA started it...

    3. Re:Lessons on evolutionary theory for Andy... by BalkanBoy · · Score: 1

      somewhere I read - perfection is only achieved on the point of collapse. I suppose you can interpret that various ways - you become God, thus you're perfect.... or you become dead, meet God, and then you are 'perfect'? :) Looking for perfection can be a huge cockblocking activity actually... (in just about anything you do, including the pursuit of women ;) ).

      --
      'A lie if repeated often enough, becomes the truth.' - Goebbels
    4. Re:Lessons on evolutionary theory for Andy... by csoto · · Score: 1

      So there are no more apes, then, right?

      "Improvement" isn't even a consideration. By what standard? "Didn't die off" is all you can hope for.

      --
      There exists no way of exchanging information without making judgments. --Bene Gesserit Axiom
    5. Re:Lessons on evolutionary theory for Andy... by csoto · · Score: 1

      Don't tell me what I'm saying. I'm saying that the "greatness" of Mach has no bearing on the suitability of Linux, and therefore it's survival.

      LOTS of great operating systems have been developed, just as Smalltalk is the best programming language ever created...

      --
      There exists no way of exchanging information without making judgments. --Bene Gesserit Axiom
  34. Already Done by Anonymous Coward · · Score: 1, Funny

    I think this has already been done in the past. It was called MS-DOS ;-)

    1. Re:Already Done by morgan_greywolf · · Score: 1

      You make the assumption that MS-DOS was an operating system. MS-DOS was a program loader. Operating systems actually handle things like memory and process management, task scheduling, handling devices, etc.

    2. Re:Already Done by pablodiazgutierrez · · Score: 1

      Actually, MSDOS took the other approach: Everything runs in kernel space.

  35. Hindsight is 20/20 by youknowmewell · · Score: 3, Insightful

    From the link to the Linus vs. Tanenbaum arguement:

    "The limitations of MINIX relate at least partly to my being a professor: An explicit design goal was to make it run on cheap hardware so students could afford it. In particular, for years it ran on a regular 4.77 MHZ PC with no hard disk. You could do everything here including modify and recompile the system. Just for the record, as of about 1 year ago, there were two versions, one for the PC (360K diskettes) and one for the 286/386 (1.2M). The PC version was outselling the 286/386 version by 2 to 1. I don't have figures, but my guess is that the fraction of the 60 million existing PCs that are 386/486 machines as opposed to 8088/286/680x0 etc is small. Among students it is even smaller. Making software free, but only for folks with enough money to buy first class hardware is an interesting concept. Of course 5 years from now that will be different, but 5 years from now everyone will be running free GNU on their 200 MIPS, 64M SPARCstation-5."

    1. Re:Hindsight is 20/20 by Ohreally_factor · · Score: 2, Funny

      I think Prof. T misspelled "running OS X on their G5 Powermac".

      Oops!

      I misspelled "Duo Core Intel Mac"!

      --
      It's not offtopic, dumbass. It's orthogonal.
    2. Re:Hindsight is 20/20 by NutscrapeSucks · · Score: 1

      Well, Tanenbaum was wrong about Sparc and GNU, but PCs shipping in 1996 did usually have 64MB and roughly 200 "VAX MIPS". So pretty good guess, I say.

      http://homepage.virgin.net/roy.longbottom/whetston e.htm

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    3. Re:Hindsight is 20/20 by carlislematthew · · Score: 1
      And don't forget the subject line of his original post: "Linux is obselete".

      I mean, the guy is clever n' all, and he's written some great books, and I bet he's an awesome teacher. BUT his *practical* and *pragmatic* thinking is just way off. That discussion with Linux and ChristmasTree really highlights some fundamental errors in judgement on ChristmasTree's part:

      -Linux is obsolete (even in 1992 it was obvious to many that Linux had potential. How much, who knew). -Linux would be difficult to port (maybe true, but hardly stopped it happening) -Everyone will be running GNU on their SPARCstations (running WTF on their Huh?) -"I think it is a gross error to design an OS for any specific architecture, since that is not going to be around all that long."

    4. Re:Hindsight is 20/20 by johansalk · · Score: 1

      So what? It's obviously a figurative statement, meant to demonstrate a point, not make a concrete prediction. You know, it's a sign of mental thickness to take figurative statements literally.

    5. Re:Hindsight is 20/20 by Anonymous Coward · · Score: 0

      I think you misunderstood "everyone" to mean "extraordinarily small niche group"

    6. Re:Hindsight is 20/20 by Anonymous Coward · · Score: 0

      there were two versions, one for the PC (360K diskettes) and one for the 286/386 (1.2M). The PC version was outselling the 286/386 version by 2 to 1.

      My God! 360,000 diskettes for the PC version? 1,200,000 diskettes for the 286/386 version? That is incredible bloat.

      No wonder Windows won out. I think my Windows 3.11 had 20 diskettes. Hell, I'd still be trying to install the 386 version!

    7. Re:Hindsight is 20/20 by mcvos · · Score: 1
      I mean, the guy is clever n' all, and he's written some great books, and I bet he's an awesome teacher.

      He's written great books, at least. His classes are basically just him reciting his books from memory. Pretty impressive in itself, but every joke you'll hear in class is also in the book.

      Linux is obsolete (even in 1992 it was obvious to many that Linux had potential. How much, who knew).

      Minix had exactly the same potential. The real difference is that Tanenbaum didn't want to release control of minix and let everybody turn it into a heavy weight OS, because it had to remain simple and understandable for students. He wrote minix for academic purposes, while Linus wrote Linux first and foremost to be used, and to be turned into a full-fledged OS with all the bells and whistles.

    8. Re:Hindsight is 20/20 by Curate · · Score: 1
      The PC version was outselling the 286/386 version by 2 to 1.

      I'm impressed. He sold two copies of the PC version as well as one copy of the 286/386 version.

    9. Re:Hindsight is 20/20 by carlislematthew · · Score: 1

      I guess that's what I meant by Linux having potential. It was precisely *because* it was freely available, and changes were welcome, that it's potential was huge. The fact that it wasn't technically perfect and sublimely designed were of relatively minor consideration, at least at first.

    10. Re:Hindsight is 20/20 by drew · · Score: 1

      I think you misread "five years". Those emails were written in 1992. Five years later most people were running the original Pentium, or maybe the Pentium MMX.

      Of course, by "free GNU" I'm pretty sure he was referring to GNU/Hurd, which we are still waiting for...

      --
      If I don't put anything here, will anyone recognize me anymore?
    11. Re:Hindsight is 20/20 by Anonymous Coward · · Score: 0

      In 1992 Linux was a piece of shit. Linux is simply fortunate to not have fallen to the same fate as every other principally single-developer Internet operating system project. And if it wasn't for the AT&T trial it wouldn't have been that fortunate at all because hordes of programmers would have been developing BSD instead. Linus would be a nobody and you wouldn't be talking smack about Andy in order to suck Linus off. Yes, Andy underestimated the market position Intel would be able to obtain because at the time there was still this thing called platform diversity, and in academia a PC was considered a piece of crap. Because it performed like a piece of crap.

    12. Re:Hindsight is 20/20 by Ohreally_factor · · Score: 1

      I think you misunderstood "everyone" to mean "extraordinarily small niche group"

      Again, Prof. T made an error by forgetting to type the qualifying phrase "who is intelligent" as a modifier of "everyone".

      Don't blame me if Andrew Tannenbaum is a sloppy writer. =)

      --
      It's not offtopic, dumbass. It's orthogonal.
    13. Re:Hindsight is 20/20 by Ohreally_factor · · Score: 1

      Andrew Tannenbaum is clearly a man ahead of his time, so we can't fault him if his prediction of OS X on Intel hardware was nine years early. =)

      --
      It's not offtopic, dumbass. It's orthogonal.
    14. Re:Hindsight is 20/20 by Arandir · · Score: 1

      OS X doesn't have a microkernel. Just because it uses Mach doesn't mean it's a microkernel.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    15. Re:Hindsight is 20/20 by Anonymous Coward · · Score: 0

      Heh, I think you missed the joke. The point was, even back then it was obvious that GNU/HERD was going to be a *lot* more than 5 years away ;-)

    16. Re:Hindsight is 20/20 by Slithe · · Score: 1

      What about GNU/Linux?

      --
      ---- "XML is like violence. If it doesn't fix the problem, you aren't using enough."
  36. Screenshot of GNU Hurd by njchick · · Score: 2, Funny

    $ ls /dev
    Computer bought the farm

  37. We can dream. by Jerk+City+Troll · · Score: 1
    1. Re:We can dream. by spun · · Score: 2, Funny

      Yes, good, good, you got it! You got the joke! Good job! Haha! Who's laughing now? You sure showed all those folks who called you "slow" or "differently abled," didn't you? No one can spot a joke like you, that's for sure.

      --
      - None can love freedom heartily, but good men; the rest love not freedom, but license. -- John Milton
    2. Re:We can dream. by Anonymous Coward · · Score: 0

      Heh, you sound like Stewie from Family Guy.

  38. Linux kernels is unstable? How about the BSDs? by The_Isle_of_Mark · · Score: 0

    I don't profess to know everything about kernels, but I believe modularized kernels address this, right? Last I checked my kernel supports modules. Hmmm

    Perhaps my kernel is the only one like this?

    1. Re:Linux kernels is unstable? How about the BSDs? by Anonymous Coward · · Score: 0

      I don't profess to know anything about kernels, but I believe modularized kernels address this, right? Last I checked my kernel supports modules.

      Fixed that for you. Modular != "loads modules" in this case. Read the second link in the story.

    2. Re:Linux kernels is unstable? How about the BSDs? by The_Isle_of_Mark · · Score: 1

      Hey thanks! I knew it needed to be fix somehow, I just couldn't put my finger on it. When you're right you're right.

  39. A false dichotomy by The+Conductor · · Score: 5, Insightful
    I seem to find this microkernel vs. monolithic argument a bit a of a false dichotomy. Micorkernels are just at one end of a modularity vs. $other_goal trade-off. There are a thousand steps in-between. So we see implementations (like the Amiga for example) that are almost microkernels, at which the purists shout objections (the Amiga permits interrupt handlers that bypass the OS-supplied services, for example). We also see utter kludges (Windows for example) improve their modularity as backwards compatibility and monopolizing marketing tactics permit (not much, but you have to say things have improved since Win3.1).

    When viewed as a Platonic Ideal, a microkernel architechture is a useful way to think about an OS, but most real-world applications will have to make compromises for compatibility, performance, quirky hardware, schedule, marketing glitz, and so on. That's just the way it is.

    In other words, I'd rather have a microkernel than a monolithic kernel, but I would rather have a monolithic kernel that does what I need (runs my software, runs on my hardware, runs fast) that a micokernel that sits in a lab. It is more realistic to ask for a kernel that is more microkernel-like, but still does what I need.

    1. Re:A false dichotomy by owlstead · · Score: 1

      Doesn't Windows Vista do this as well? I know this is not a popular note amongst many, but I believe that this was a feature of Vista as well. Problem with MS today is that it is still rather evil (non-open, at least) but they do seem to be leading on some fronts.

    2. Re:A false dichotomy by Watson+Ladd · · Score: 1

      Mach. Darwin and hence Mac OS X are built on top of it. It works very well. An app can be frozen due to a bottleneck and iTunes won't miss a beat in the background due to some clever engineering.

      --
      Inventions have long since reached their limit, and I see no hope for further development.-- Frontinus, 1st cent. AD
  40. won't work in practice... by Anonymous Coward · · Score: 0

    Using the car analogy, this would be akin to saying "This car is fault tolerant! Even if the steering wheel breaks, the engine will still be running!" Well, in theory, that is. In practice, you'll have to repair the car before you put it on the road again.

    Same for microkernels.
    What happens if there was a bug in the filesystem code? Sure, you could restart the "compartment" responsible for the filesystem, but then all programs that depends on files in that partition will have to be restarted. If the affected fs is the root "/" directory, probably all applications will have to be restarted.

    And how is this different from a reboot?

    Of course, there would be _some_ benefit to using microkernels, especially for less vital components such as the sound driver. But is it worth the trouble?

    Besides, the inherent difficulty in real OS's is the number of possible hardware configurations. Some manufacturers produce buggy hardware. The OS / drivers have to work around those hardware bugs. So the code eventually becomes unmanagable due to the large number of workarounds, and then bugs will appear.

    (Disclaimer: I know nothing about operating systems or hardware, I'm only relying on common sense. Correct me if I am wrong here.)

    1. Re:won't work in practice... by mcvos · · Score: 1
      Of course, there would be _some_ benefit to using microkernels, especially for less vital components such as the sound driver. But is it worth the trouble?
      The main reason why my Windows machine crashes, is because some game doesn't like my graphics card or vice versa. It would be really nice if a graphics card failure didn't bring down the entire system but just the game and the card, after which the OS would hopefully simply reset the card, and I wouldn't lose any of my other programs I had in the background.
  41. Interesting corollation by youknowmewell · · Score: 2, Interesting

    The same arguements for using monolithic kernels vs. microkernels is the same sort of arguement for using C/C++ over languages like Lisp, Java, Python, Ruby, etc. I think maybe we're at a point that microkernels are now practical, same as with those high-level languages. I'm no kernel designer, but it seems reasonable that a monolithic kernel could be refactored into a microkernel.

    1. Re:Interesting corollation by slashdot_commentator · · Score: 1
      The same arguements for using monolithic kernels vs. microkernels is the same sort of arguement for using C/C++ over languages like Lisp, Java, Python, Ruby, etc.

      Not really. Mono-kernels vs u-kernels is a "great taste, less filling" debate. People who care more about slowing down are going to pick the "lite" beer. People who care more about theoretical considerations are going to go for "great taste".

      I have been working too long with computers to really give a damn about language debates. Languages are designed to emphasis certain philosophic tenets. By their nature, preference will be individualized and value can only be determined subjectively. By logical corrollary, because people think differently; there will never be a universally ideal language.

      I should be happy to see new "languages" being birthed every few years, but in truth, I've become disgusted with them all. Evangelists all try to claim their language to be the acme of programming technology, but they all have strengths and weakness. My disgust stems from my belief a new language should only exist if they REALLY make a significant difference in programming metrics. There just isn't a point to keep learning a few new languages every few years just to find out they don't provide a significant advantage. It irritates me that php became the web language of choice over perl. And python? WHO CARES? Smalltalk is probably a better language if you care about being generic and "clean". Python is not going blow away all other languages in execution speed or development ease. Java was an interesting case of frankenstein design, and I'm betting it will probably die on the vine due to its lack of selling points, and because Sun is too control obsessive to hand the language over to a standards committee. Microsoft's C# was probably a slightly better implementation of java's ideas, but ironically, if it becomes prevalent, it will only be because mono made it cross-platform. I'm old school; for me, its ASM, C, C++, bash/perl for scripting, shoutouts to smalltalk/lisp/FORTH (but nothing for practical use), and java's only worth learning if you want to increase your pool of programming jobs.
      I think maybe we're at a point that microkernels are now practical, same as with those high-level languages.

      They were practical in the early '90's. There were many u-kernel systems put out (QNX comes to mind). The question is whether you want to take the kernel messaging performance hit (for some other yet-to-be-perceived advantage), and more important, can you convince enough people to give up "less filling" for "great taste". (I don't see that happening.)

      I'm no kernel designer, but it seems reasonable that a monolithic kernel could be refactored into a microkernel.

      Its already been done, mklinux and l4linux. I like the taste of u-kernels enough to wish Torvalds & Co. would migrate to it, but its not going to happen. Torvalds routinely rejects kernel changes made purely for aethetic reasons, and unless the body of linux application code was rewritten to exploit u-kernel advantages, you will not see a single benefit, and a 10-15% hit in performance. The "next-great-thing" will be VM features, and that works in well with u-kernels. Its sad really. Someone is going to have to fork the linux kernel, implement an entire distribution, and convince people its better, before there is a chance in hell of people changing to a u-kernel. C'est la vie.

      --
      There is no America. There is no democracy. There is only IBM and AT&T and DuPont, Dow, General Electric, and Exxon
  42. exactly. -nt by maynard · · Score: 1

    . ..

  43. Some old info on this! by Anonymous Coward · · Score: 0

    If you'd like to see some old Linus vs Tanenbaum flames, check out here:

    http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.htm l#linus1

    I'm gonna post this anonmymously so I don't get modded up or modded down, I just thought some of you would find this interesting. There is a link that leads to another mirror of this in another post, but it was slashdotted (or something else) and I couldn't get to it. Check this out, it's an interesting read! (please don't mod this offtopic, it's a great read on the subject at hand)

  44. I've hurd it all before by Anonymous Coward · · Score: 0

    These theoretical ramblings are pointless. Show me a microkernel that lets me do everything I can do on Linux now and I will listen.

  45. friendly conversation by audi100quattro · · Score: 3, Insightful

    That friendly conversation is hilarious. "Linus: ...linux still beats the pants of minix in almost all areas"

    "Andy: ...I still maintain the point that designing a monolithic kernel in 1991 is a fundamental error. Be thankful you are not my student. You would not get a high grade for such a design :-)"

    The most interesting part: "Linus: The very /idea/ of an operating system is to use the hardware features, and hide them behind a layer of high-level calls. That is exactly what linux does: it just uses a bigger subset of the 386 features than other kernels seem to do. Of course this makes the kernel proper unportable, but it also makes for a /much/ simpler design. An acceptable trade-off, and one that made linux possible in the first place."

    1. Re:friendly conversation by Anonymous Coward · · Score: 0

      This was my favorite quote:

      ". In the meantime, RISC chips happened, and some of them are running at over 100 MIPS. Speeds of 200 MIPS and more are likely in the coming years. These things are not going to suddenly vanish. What is going to happen is that they will gradually take over from the 80x86 line. They will run old MS-DOS programs by interpreting the 80386 in software. (I even wrote my own IBM PC simulator in C, which you can get by FTP from ftp.cs.vu.nl = 192.31.231.42 in dir minix/simulator.) I think it is a gross error to design an OS for any specific architecture, since that is not going to be around all that long."

      I'm writing this comment on my MacBook Pro with the new Intel Core RISC....wait a minute.

    2. Re:friendly conversation by Eli+Gottlieb · · Score: 1

      Ah. Simplicity of implementation over doing the Right Thing. Where've we heard this before?

    3. Re:friendly conversation by audi100quattro · · Score: 1

      Except, nobody stil seems to agree on what the "Right Thing" is. One could still argue that linux with selinux is still better than anything in the microkernel world.

      Andy says insecure and unreliable? I think not. I don't think implementation is the problem here.

  46. When will they learn? by Ginger+Unicorn · · Score: 1

    Why didn't they build it with 6001 hulls!?!!

    --
    (1.21 gigawatts) / (88 miles per hour) = 30 757 874 newtons
  47. Agreed with tanenbaum by orbitalia · · Score: 1

    The only thing a kernel should do is scheduling and message passing, all other services should be separate objects that utilise the message passing (via the kernel) to other objects in userspace.

    I don't buy the lack of performance argument, QNX seems to work just fine performance wise (the CRS1 Cisco top of the line router uses QNX as the basis of its router software). The 'Q' in QNX does stand for Quick after all ;)

    There are alot of benefits not only to stability and possibly security that you get from microkernels, one great thing is that the applications can also be written along the same lines (using the ineherent message passing) and large applications therefore tend to be truely object oriented with well defined interfaces if written correctly. It is a quite nice benefit to be able to patch part of a running program without restarting it (high availbility benefits here). A badly written driver should not be able to take down a kernel. Also with the advent of multicore, microkernel systems make alot more sense and are much much easier to scale up with extra cores. (Speaking from years of experience coding on microkernel systems here).

    Microkernels also provide really small install images, it is really easy to cut away all unnecessary drivers and subsystems in a microkernel system.

    There are lots of benefits and I agree that with the current state in hardware the kernel should be looked at again.

  48. Hurd and one linux kernel question by Anonymous Coward · · Score: 0

    What would it take to get that project kick started into wider acceptance and development? Or is it a steaming pile and not worth it, or what? I don't know much of anything about kernel innards at all, but if someone who does could run a quick synopsis over what is right or wrong (politics aside) with the Hurd I would appreciate it.

    OK, second question to any maths gurus here. Extrapolate the size of the linux kernel ten years hence, based on original size and size of the major release numbers. Seems like a simple two axis graph could do it, but all we need is a raw number, graphs being rather hard to reproduce on a ./ post. X-million lines today, what will it be in ten years?

    1. Re:Hurd and one linux kernel question by antrik · · Score: 1

      > What would it take to get that project kick started into wider acceptance and development? Or is it a steaming pile and not worth it, or what? I don't know much of anything about kernel innards at all, but if someone who does could run a quick synopsis over what is right or wrong (politics aside) with the Hurd I would appreciate it.

      There are a number of technical problems -- most notably the choice of Mach for microkernel turned out to be a bad one -- but I won't go into this. Personally, I believe the main reasons for Hurd's missing success are organisational.

      For one, as our favourite flamer ESR has pointed out, the project was badly managed from the beginning. While the situation changed quite a lot over the years, it was never a good one. Recently we got a new de-facto maintainer though, and things seem to get on track a litte. Let's see what will come of it.

      The second problem is focus. While a number of people are working on improving various parts of the system, work almost exclusively focuses on catching up with established systems in performance, stability, compatibility etc. -- which, with the little manpower the project has, is hopeless. There is hardly any work on making better use of the possibilities the Hurd architecture provides, which would be necessary to show that the Hurd actually can offer vast practical advantages, not only a theoretically superior design.

      --
      All my comments get moderated +-0, spotless.
  49. Re:Feh. by Anonymous Coward · · Score: 3, Informative

    Performance was fixed partly through a series of hacks, and partly through raw horsepower.

    O RLY

  50. Re:Feh. by panthro · · Score: 2, Insightful

    The industry has better and more important things to worry about.

    Like what? Reliability and security ought to be paramount. The IT industry (relating to multipurpose computers, anyway) is currently a joke in that area - compare to virtually any other industry.

    --
    If you're not part of the solution, you're part of the precipitate.
  51. OS X - First make it work, then make it fast by alispguru · · Score: 5, Insightful

    How many times have we all heard that the proper way to develop software is:

    First make it work, then make it fast

    Specifically:

    Write it as simply and cleanly as you can,

    THEN check performance,

    THEN optimize, but ONLY where measurement tells you to.

    Judging by the performance improvements over time, this is what the OS X team has been doing. Their stuff has been getting bigger, with more functionality, AND faster on the same hardware, with each release. If anyone else has been doing that, I haven't heard of it.

    --

    To a Lisp hacker, XML is S-expressions in drag.
    1. Re:OS X - First make it work, then make it fast by UnknownSoldier · · Score: 1

      > Judging by the performance improvements over time, this is what the OS X team has been doing. Their stuff has been getting bigger, with more functionality, AND faster on the same hardware, with each release. If anyone else has been doing that, I haven't heard of it.

      BeOS was the first one to do this back ~ 2000. Each release would get faster (partially due to better compiler support.) But since it was only popular among geeks, I'm not surprised you haven't heard of it.

      But yeah, it's nice to that OS X performance is getting better. It allows the user to run more (widgets), etc.

    2. Re:OS X - First make it work, then make it fast by pavon · · Score: 2, Insightful

      You left out the first step:

      FIRST design the system, and make sure the algorithms and architecture are sufficiently straightforward and efficient.

      No amount of optimizing will save you if your system is slow by design, and there is no place where this was more true than in the early microkernals. That is why the microkernel architecture was rejected by linux and windows kernel developers.

      The Mach kernal has some fundamental effeciency issues, and while it has been improved since it's introduction, there are limits to how fast it can get. As such, Darwin is slower at many things compared to some monolithic kernels, and will continue to be slower unless they do some major revamping (ie redesign and rewrite the kernel) under the hood, not just tweeking.

      In the end it is about trade-offs. The "make it right, then make it fast" approach depends on your idea of right. If you really want an example of "doing it right" with regards to security and stability, look to QNX or OpenBSD. None of the desktop OSes compare to those, because they all made compromises. Windows NT and Linux both decided that the loss of efficency was not worth the gains in stability / security that you get from having a microkernel. And honestly, this particular decision hasn't greatly harmed the stability / security of those systems as a whole.

    3. Re:OS X - First make it work, then make it fast by cytg.net · · Score: 1

      indeed.. and many times i've seen such 'acedemic' correct code brutalized with hacks to make it perform. if you're saying the optimization part should be a complete rewrite, then we're on the same page... but not looking towards performance in your initial design is an error in my book as well. often you'll(i'll) find that its a design concept thats horribly performance broken, and as such if it should be made to perform, the hacks aint gonna be pretty, but we can get em going fairly fast.

    4. Re:OS X - First make it work, then make it fast by hazah · · Score: 1

      Very OT, but... Jimmy M. Lives! :)

    5. Re:OS X - First make it work, then make it fast by Lord+Ender · · Score: 1

      This is key to component-based software design. At Ohio State, the software engineering classes are taught using a langugage/methodology called RESOLVE, in which each component of the software (function, object, whatever) is defined mathematically (completely and precisely). Multiple components are created in different ways that all do the exact same thing, but in different ways.

      This allows you to, in an automated way, substitute in and out components while testing, so you can find exactly what works fastest on the data you will be working with.

      The first versions of all components are usually the slowest, but they allow you to get a prototype at least running with short development time, and optimization and testing is really easy.

      It is a great philosophy, as far as engineering goes. Too bad it hasn't caught on yet.

      --
      A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
    6. Re:OS X - First make it work, then make it fast by rbarreira · · Score: 1

      That's true in some cases, but it should always be said that performance often can't be just an afterthought. The same is true for many other desirable software characteristics.

      --

      The AACS key is NOT 0xF606EEFD628B1CA427BEA93A9CA9773F
    7. Re:OS X - First make it work, then make it fast by hackstraw · · Score: 1


      Premature optimization is the root of all evil (or at least most of it) in programming.

      -- Donald Knuth

    8. Re:OS X - First make it work, then make it fast by abradsn · · Score: 1

      Funny that you mention design. I've never seen a project except for the ones that I develop from a spec that I wrote myself, even come close to meeting spec.

    9. Re:OS X - First make it work, then make it fast by JulesLt · · Score: 2, Insightful

      We've heard it many times, but I do sometimes wonder what the consequences of Knuth's piece of advise are.

      While it stops developers tweaking every possible piece of code to be an unreadable high-performance mess, I've also seen it used as an excuse to 'not think about performance now' at design time. Even when you are showing them evidence that they are repeating a known performance problem - and some performance problems require major restructuring - i.e. the stuff you can't fix by tuning the code inside a class, but because some dimwit designer is working at such an abstract level, they can't see that calling a web-service located in China, once per object, for thousands of objects, was NEVER going to work.

      'Premature optimisation' is a usefully vague phrase - you can only know it was premature with hindsight. Rant over.

      (But yes, it's nice that Apple improve performance with each release, although with Tiger it looks like that has been at the cost of needing more memory).

      --
      'Capitalists of the world, unite! Oh ... you have' (League Against Tedium)
    10. Re:OS X - First make it work, then make it fast by nuzak · · Score: 1

      > 'Premature optimisation' is a usefully vague phrase - you can only know it was premature with hindsight. Rant over.

      Knuth is an algorithms guy. To be selecting the right algorithms for the problem, based on analysis of best, average, and worst case is just something he assumes you'd do, always. "Optimization" to Knuth therefore consists of those weird hacks like stalls and cache line alignments. And prematurely doing that is indeed insane.

      Frankly I hardly consider it the root of much evil at all, as most people even capable of doing such micro-optimization usually have the chops to write actually good code. I'd say cost-cutting and downright incompetence lead to much more evil.

      --
      Done with slashdot, done with nerds, getting a life.
    11. Re:OS X - First make it work, then make it fast by pablodiazgutierrez · · Score: 1
      ...this is what the OS X team has been doing. Their stuff has been getting bigger, with more functionality, AND faster on the same hardware, with each release. If anyone else has been doing that, I haven't heard of it.

      KDE comes to mind.

    12. Re:OS X - First make it work, then make it fast by dfries · · Score: 1

      That sounds like Rober Cringely's theory of Apple's direction. That is to speed up OS X, drop the microkernel. Pulpit, Native Speaker

    13. Re:OS X - First make it work, then make it fast by Anonymous Coward · · Score: 0

      Let me introduce you to Linux then. With each sub-release of the kernel, bugs are squashed, but also performance increases. When the 2.6.0 kernel first came out, it was benchmarked (independently) against Solaris, and won handily. But the 2.6.17 kernel is much faster. Indeed, there is a reason why more than 360 of the 500 fastest supercomputers in the world are running Linux. Please confirm my assertion by going over to www.top500.org (select database, operating system family, generate). For the people running top performance hardware usually costing millions of dollars, the OS is Linux. The problem with microkernels is that message passing becomes a burden and a hinderance to system performance. Macrokernels are like parallel communication connections. Microkernels are like serial ones. Isolation of faults may be easier with microkernels, but it can still be achieved (and to the same degree of isolation) with macrokernels.

    14. Re:OS X - First make it work, then make it fast by JulesLt · · Score: 1

      Yup. I guess the point is 'don't misapply advise across domains'.

      The most annoying recent occurrence I've seen was in Ken Pugh's 'Prefactoring' which again repeated it as a general principle - i.e. at the design level.
      I think perhaps the best way to explain it to modern OO developers is 'don't optimise the inside of your classes - always optimise the structure of your classes'. (And always think that any external resource takes 30 seconds to access).

      --
      'Capitalists of the world, unite! Oh ... you have' (League Against Tedium)
    15. Re:OS X - First make it work, then make it fast by Anonymous Coward · · Score: 0

      The whole point here is *designing* the system to be fast - not optimizing it.

      Badly performing applications these days generally fall into two categories: ones that are badly designed, or ones that use unscalable/slow algorithms. Changing the latter is called optimizing, changing the former is called revamping/rewriting.

  52. Collect the garbage, Andy by polymorpheus · · Score: 1

    I saw this guy give a talk maybe 7-10 years ago about some system they'd built. They hadn't even take the time to install a proper garbage collector and Andy claimed the memory leak was a feature -- "our data is persistent" (even when it's become inaccessible).

    What a joker.

    Polymorph

  53. Titanic by PIPBoy3000 · · Score: 3, Insightful

    I think the real question is what risks computers are facing these days. The Titanic had multiple compartments (up to a point), but the ice berg tore along the side, ripping off rivets and letting water pour in multiple compartments at once.

    How is kernel compartmentalization going to protect against users installing spyware and doing things they're already authorized to do?

  54. This has always bugged me about this argument by joshv · · Score: 3, Insightful

    I never really understood why buggy drivers constantly restarting is a desirable state. Say what you will about the monolithic kernel, but the fact that one bad driver can crash the whole works tends to make people work much harder to create solid drivers that don't crash.

    In Andrew Tanenbaum's world, a driver developer can write a driver, and not even realize the thing is being restarted every 5 minutes because of some bug. This sort of thing could even get into a shipping product, with who knows what security and performance implications.

    1. Re:This has always bugged me about this argument by voodoo_bluesman · · Score: 3, Insightful

      Certainly there would be a logging facility to capture that sort of event. Yeah, it might not blow up the machine, but a bouncing driver *should* make a lot of noise.

    2. Re:This has always bugged me about this argument by porneL · · Score: 1

      And OSes should come without memory protection, garbage collection and all that stuff that makes programmers lazy! They should work much much harder to create solid programs that don't crash! Ever!

      To hell with Andrew Tanenbaum's world! We want to reboot machine everytime we encounter a bug!

    3. Re:This has always bugged me about this argument by armb · · Score: 1

      Still missing the Amiga's flat memory space where one bad user-space application could trash everything else? I heard similar arguments about how virtual memory just encouraged lazy programming back then.

      --
      rant
    4. Re:This has always bugged me about this argument by Anonymous Coward · · Score: 0

      I'm also confused about this whole "oh you can just restart the driver" argument to justify microkernel vs monolithic kernel design. How does a microkernel protect you from a buggy driver that can cause a serious hardware fault (think of a driver that causes a hardware device to spew a constant stream of junk to the bus) that would freeze up a system?

    5. Re:This has always bugged me about this argument by Millennium · · Score: 1

      People made the same argument against adding memory protection to Mac OS 9 and its predecessors. I'm rather ashamed to admit that I used to do it myself. I came to my senses about that some time ago, though. Is the driver situation really any different?

    6. Re:This has always bugged me about this argument by joshv · · Score: 1

      Huh, even with memory protection programs are more than able to generate a GPF (and the equivalent in Linux) and crash. Apps don't violate memory protection and just restart themselves where they left of. Memory protection merely stops an app from crashing other apps, it doesn't make an app transparently immune to it's own crashes.

      I am merely stating that a driver that silently and successfully restarts (which is what AST is promoting here) is more than a little dangerous from the 'lazy driver programmer' perspective. Even if the developer is aware of the restarts, they might be tempted to just let the error go if the restarts are infrequent, and recovery transparent. Whereas, if the driver crashes without restart, or takes down the whole system with a kernel panic or BSOD they have to fix the program.

    7. Re:This has always bugged me about this argument by e4g4 · · Score: 1

      You make a valid point, but I would argue that it is not necessarily a wise decision to trust third party developers to get it right.

      If you're building a server OS, you can be reasonably certain that your users (read: server admins) will not be installing unverified and untested drivers and software. Now, if you're building a desktop/joe schmoe OS, you can make absolutely no assumptions about the intelligence/education of your users or, for that matter, the people developing hardware and software for your platform.

      The best assumption you can make, at least as far as your users are concerned, is that the OS is operating in a very hostile environment (both in terms of the stuff going on inside and what's going on at the lan and wan level). The reason this is the best for your users is because, generally speaking, they like their computer to work consistently (even people with little to no real computer skills these days are becoming increasingly dependent upon their computers), and if, perchance, you're offering this product commercially (gasp!), you probably want your users to pay for that next upgrade. I am by no means advocating the perpetuation of ignorance, but I do know that your average user is not going to blame the faulty driver for that BSOD - i've heard the phrases "F***ing Microsoft!" and "F***ing Windows!" far too many times to believe that.

      --
      The secret to creativity is knowing how to hide your sources. - Albert Einstein
    8. Re:This has always bugged me about this argument by m50d · · Score: 1
      Say what you will about the monolithic kernel, but the fact that one bad driver can crash the whole works tends to make people work much harder to create solid drivers that don't crash.

      And they fail. What do you think of the statement "Say what you will about C, but the fact that one missing () can give attackers root tends to make people work much harder to create solid code that doesn't have holes."

      In Andrew Tanenbaum's world, a driver developer can write a driver, and not even realize the thing is being restarted every 5 minutes because of some bug. This sort of thing could even get into a shipping product, with who knows what security and performance implications.

      I don't think it's any more or less likely to have a security issue if it has a particular bug. As for performance, if you don't notice the problem, then it isn't a problem.

      --
      I am trolling
    9. Re:This has always bugged me about this argument by Anonymous Coward · · Score: 0

      Say what you will about being allergic to bee stings, but it's a fine encouragement for staying away from them. Or, you could be like sane people and avoid things with bad reprocusions in the first place.

      And to be fair, you kinda got the answer right: "with who knows what security and performance implications." just in the wrong paragraph. Because if we tie more resources together, they'll have a greater chance of failing (obscure bugs happen with monolithic kernels, they are still the scary ones). And think about it from a user's perspective, they'd much rather take the performance hit, than have their machine (or device) crash.

      If you are writing a driver, you should be checking the state of it while testing anyway (through logs and such). If you don't realize that garbage is being spit out at a high frequency, then you aren't testing well enough. And I'd bet, probably shouldn't be writing drivers.

    10. Re:This has always bugged me about this argument by evilviper · · Score: 1
      but the fact that one bad driver can crash the whole works tends to make people work much harder to create solid drivers that don't crash.

      So your solution is... everyone should write code without any bugs, then microkernels won't provide any advantage?

      The idea has been tried over and over again, and nobody has been able to write perfect code for anything of more than trivial complexity.

      Look at something like OpenSSH, which was written by the most security-paranoid people out there (the OpenBSD team), but still ended up with a remote-root exploit. The solution is to write good code, AND to have it executing with the least ammount of privlidge possible. The two aren't mutually exclusive (OpenSSH has priv-sep now, and it hasn't instantly turned into a mess).

      --
      Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
    11. Re:This has always bugged me about this argument by indil · · Score: 1
      Because when the network driver craps out you won't lose that 20-page report you just finished and haven't saved yet. It's not the perfect solution (which would be eliminating driver bugs altogether), but it's better than letting a single driver crash the entire system.

      Restarting drivers does just that: restarts drivers. A software solution. If hardware starts doing something that corrupts the whole system, not much can be done at that point. So no, a microkernel probably wouldn't recover from your hardware failure senario, but then again what OS could recover?

  55. The L4 Project by Kobun · · Score: 1

    The L4 project, and the Wikipedia article on the L4 Microkernel, are both important to mention in a discussion of a modern Microkernel. It has potential - and belongs alongside Mach in such a discussion.

    http://en.wikipedia.org/wiki/L4_kernel
    http://www.l4hq.org/

  56. Re:Feh. by ObsessiveMathsFreak · · Score: 1

    Tanenbaum's research is correct, in that a Microkernel architecture is more secure, easier to maintain, and just all around better.

    I'm very skeptical of this. It would seem to me, at a fundamental level, that a microkernel architecture is simply a heavily reduced kernel with most accepted kernel functions now delegated to external "programs", and a high level of trust is now placed in each and every one of these programs. I can't see how this is good for security.

    In a sense, most OSes are "microkerneled" anyway. Most functionality is implemented by programs running on top of the kernel, which pass messages back and forth between themselves and the kernel. Perhaps my view on this is a little naive, but I don't see too much of a difference between a microkernel module and any other process on the machine.

    --
    May the Maths Be with you!
  57. QNX ! by alexhs · · Score: 4, Informative

    I have yet to see a "proper" non-academic microkernel which lets one part fail while the rest remain.

    QNX, but it isn't open source.

    VxWorks and a few other would also fit.

    --
    I have discovered a truly marvelous proof of killer sig, which this margin is too narrow to contain.
    1. Re:QNX ! by macemoneta · · Score: 1

      I can't speak to QNX, but I tested VxWorks-based network equipment implementations for a few years (1998-2001). Even then, Linux was more stable. Of course, that could be the fault of the specific implementation by the vendor (and likely was).

      The point is that using a product like VxWorks is no guarantee of stability or immunity to bugs. If I remember correctly, Wind River has been moving towards Linux for the last few years...

      --

      Can You Say Linux? I Knew That You Could.

    2. Re:QNX ! by PetiePooo · · Score: 1

      If I remember correctly, Wind River has been moving towards Linux for the last few years...

      "Moving towards" is perhaps a bit of an exageration. They've been dragged kicking and screaming by consumer demand. If they didn't support Linux, many customers would simply pass them by. By "supporting" Linux, they can get a toe in the door and start doing everything they can to convince their potential customer that Linux isn't a stable choice, and they should buy VxWorks instead.

      Not that I can blame them, entirely. VxWorks is a different class of O/S, as Linux has a much larger footprint, and isn't hard real time unless you add to that footprint with the real-time extensions (which could be described as a mini-O/S embedded within the Linux kernel).

      Not better or worse; just different. Pick the right tool for the right job, and all...

    3. Re:QNX ! by Kristoph · · Score: 3, Insightful

      The QNX Neutrino kernel is a very good microkernel implementation (albeit not as purist as, say the Ka micro-kernel line, but the fact that it is not open makes it unusable.

      The sheduler, for example, is real time only so for non-real time applications is questionable at best. A simple problem to address in the open source world but, apparently "not a high priority" for the manufacturer of this fine technology.

      -rant-

      I fail to understand the point of closed source kernel implementations. The kernel is now a commodity.

      -/rant-

      ]{

    4. Re:QNX ! by coleridge78 · · Score: 1

      QNX is exceedingly stable. It's the primary OS used for realtime applications, such as vehicle autopiloting. That is, applications that have lives depending on them.

    5. Re:QNX ! by ArghBlarg · · Score: 1

      I have worked with VxWorks quite a bit, and I would never call it a micro-kernel. For deployment everything is typically linked statically with the VxWorks kernel (kernel, drivers, user apps, everything). It's very scalable, but not really that modular; code dependencies tend to leak from one component to affect many others (as in, component A needs constants defined in component B, and an API change in component C means you have to futz with the source for component D, etc.). VxWorks does allow one to load .o and .a files at runtime from a filesystem, but it's really just a dynamic linker. I guess in the sense of scalability it is a micro-kernel, but in terms of isolating dependencies between different systems, not so much (as in, "configuration hell"). Just like Linux 'modules' by the way.. they're no better.

      I'd say OS-9 fits the definition more, if one wants to talk about commercial micro-kernels. The nearly object-oriented module system allows great scalability as well as greater isolation between components. The only thing the kernel does is handle memory allocation, IPC and support for loading/unloading device drivers, filesystems etc. All of these can be replaced by user-written modules, and the device drivers and filesystem managers have a stable, opaque API which insulates internal changes from the rest of the system.

      That's just from my (limited) experience of course..

      --
      ERROR 144 - REBOOT ?
    6. Re:QNX ! by Anonymous Coward · · Score: 0

      The sheduler, for example, is real time only so for non-real time applications is questionable at best. A simple problem to address in the open source world but, apparently "not a high priority" for the manufacturer of this fine technology.


      Ahhh, exactly how do you draw the conclusion that a real-time scheduler is not appropriate for non real-time (the reverse is definately true)?

      With QNX for instance, you can use Adaptive Partitioning (AP) http://www.qnx.com/innovation/adaptive_partitionin g to provide non real-time applications with guaranteed access to a percentage of the CPU.
  58. Mklinux by barutanseijin · · Score: 3, Informative

    Mklinux, one of the first versions of linux-for-ppc, had a microkernel architecture. So it's been done, at least for ppc. Mklinux will run on a 10yr old mac. I don't know about newer ppc machines.

  59. The Titanic was compartmentalized by Anonymous Coward · · Score: 0

    There are places where reliability is the prime concern. An rtos for a jet fighter comes to mind. On the other hand, Linux systems can stay up for many years without crashing or needing a reboot. In that light, it sounds like the paper is describing a solution in search of a problem.

    The paper mentions research being done at Microsoft. I wonder if this has anything to do with the fact that VISTA is beginning to resemble a certain game that will remain nameless (it's always coming next year).

  60. Just recode Linux.... by axonxorz · · Score: 1

    spend all that time making it a microkernel and just call it linux-2.8.1-titanic-r3

  61. What are you going to do with a dead SCSI driver? by ink · · Score: 1
    I know that compartmentalization sounds like a good idea, but in kernel-land there are very few "subsystems" that can die without taking everything else down with them. Even if something apparently benign (like the sound driver) goes south the operating system is still non-functional from the users's perspective. Bad AGP drivers can stomp all over memory, regardless the presense of a sandbox. Taking the time to pass messages may buy the system some stability in certain situations, but the cost of doing so is quite expensive.

    I think history will be the judge. So far, microkernels are on the losing end; but if the claim "Nooks can catch 99 percent of the fatal driver errors and 55 percent of the nonfatal ones" is true, then maybe we'll see more uKernel designs in the future.

    --
    The wheel is turning, but the hamster is dead.
  62. QNX for teh win :) by WinPimp2K · · Score: 4, Informative

    Not only does the "Q" stand for "Quick", but when Quantum Software Systems Ltd (now know as QNX) first released their "microkernal", 'message passing", "real time" OS for the 8086 processor in the early 80's they called it "QUNIX". After a brief discussion with AT&T's legal staff, they determined that the vowels were way too expensive and renamed it to "QNX". The microkernal took up less than 64K.

    Unlike certain other OS's, QNX is used in control applications with life and death implications. (nuclear reactors and medical equipment for example)

    QNX has been through a lot of changes since then. And I have not kept up with most of them. I do know that as of a few years ago they did make a "free for personal use" release that included their development system. And a few years before that, they had a 1.44meg demo disk that had their entire OS, GUI and web browser on it.

    But don't take my word for it go check out their website.

    --

    You either believe in rational thought or you don't
    1. Re:QNX for teh win :) by Jecel+Assumpcao+Jr · · Score: 1

      I am pretty sure the QNX microkernel took up less than 1KB unless you counted the interrupt table and stubs. But I am thinking of the pre 2.X versions which didn't include networking and distributed computing. Even with these extensions my guess is that the microkernel was still less than 3KB.

      It would be interesting to know what the size of recent versions is.

    2. Re:QNX for teh win :) by WinPimp2K · · Score: 1

      QNX is not entirely immune to code bloat, so I doubt they manage the 3K you are thinking of. But back in the day when the on-board cache of certain Intel processors was only 64K, they were claiming that their entire microkernal would fit in that with room left over. Of course back in the mid 80's I came to QNX (8086 version) from a mainframe environment. The first time I ran "tsk" I said "Damn, this is just like a real computer". (Something about being able to change the priority of a task, or just kill it as compared to DOS was truly impressive especially for a complete OS that fit on a single 1.44 meg floppy)

      I wonder if they still have the "tsk tsk" easter egg in there as well as the "find and fix bugs" command in the debugger.

      --

      You either believe in rational thought or you don't
  63. True by Belial6 · · Score: 1

    I have had Linux in this state many times. The keyboard/mouse would not respond, but I could ping the system from another computer. I just had to reboot.

    I have to wonder though, if microkernels were more common, would it encourage hardware manufactureres to produce more hot swapable parts?

    1. Re:True by jandrese · · Score: 1

      Usually that's the case because X crashed. Technically, X is a userland application, so it's no surprise that you can still ping the box when it's crashed. In practice, X tends to mess around with kernelspace memory a bit and sometimes it's better to just reboot anyway when it goes down. This is especially true when it whacks your consoles so bad that they're basically unusuable.

      --

      I read the internet for the articles.
    2. Re:True by simeonbeta2 · · Score: 1

      OT, but if you can ping it, you can probably log in (I keep putty.exe on the desktop of the wife's windows box just for this purpose). Kill the X11 process (probably what's crashed) and spare yourself the reboot...

  64. That would be Windows by maynard · · Score: 1

    Feel free, kick away.

  65. Monolithic processors... by Potatomasher · · Score: 1

    Could it be that the main issue is that today's processors lend themselves more towards monolithic kernels ?
    Couldn't the performance gap of micro vs. monolithic be solved through a new paradigm in microprocessor design ?

    Seems like the trend towards multi-core CPUs would lend itself more to a micro-kernel, which in itself is more "distributed" by nature, then the single-core monolithic solution of today. Anybody have any ideas on how this could be leveraged ?

    --
    A million monkeys and this is the best sig they could come up with...
  66. Weren't MicroKernels proven with L4? by Anonymous Coward · · Score: 0

    I thought L4 proved microkernels could provide the same performance as large kernels? Read here:

    http://en.wikipedia.org/wiki/L4_microkernel_family / and here http://os.inf.tu-dresden.de/L4/overview.html/

    What am I missing? It seems the performance problem has been addressed. The other benefits listed in the article are well known it seems. I don't understand the criticism of microkernels in this context. Certainly you can just prefer to do thing monolithically, or some hybrid, but that doesn't imply the micro-kernel is wrong.

  67. Less a comeback than hardware has caught up by Junks+Jerzey · · Score: 3, Interesting
    Lots of big ideas in programming get pooh-poohed for being too resource intensive (a.k.a. big and slow), but eventually we look back and think how silly we were to be worried about such details, and that of course we should go with the cleaner, more reliable option. Some examples:

    zbuffering - go back to any book from the 1970s, and it sounds like a pipe dream (more memory needed for a high-res zbuffer than in entire computer systems of the time)

    Lisp, Prolog, and other high-level languages on home computers - these are fast and safe options, but were comically bloated on typical hardware of 20 years ago.

    Operating systems not written in assembly language - lots of people never expected to see the day.

  68. Re:Feh. by diegocgteleline.es · · Score: 1

    Tanenbaum's research is correct

    Tanembaum's research is wrong in some ways - specifically when it comes to analyzing monolithic's kernel problems.

    I see people hitting YEARS of uptime with Linux/BSD/Solaris and hell, even win2k machines. Sure, microkernels will come back the day monolithic kernels can't be stable and secure. As for today, I'd say that monolithic kernels are IMPROVING when it comes about reliability and security. Compare Windows 9x and XP, for instance, and Vista is getting even better.

    easier to maintain

    I don't see how. You know, microkernels don't have better code design than monolithic kernels, neither the other way around. Software design is something that does not depends in using message passing or not. It's perfectly possible to write crappy microkernels and it's possible to write modular and mainteinable monolithic kernels (which is what Torvalds has been saying for years)

    Guess why people uses Linux and Solaris? Unlike it happens in microkernels, people has wasted many millons of dollars and hours making it mainteinable and modular - take a look at Linux's block layer, where you can switch to different I/O schedulers at runtime (echo foobar > /sys/block/hda/queue/scheduler); and then you can insmod and rmmod ioschedulers at runtime aswell. Now. that's what I call modularity

    One of the reasons microkernels were born is because people though that monolithic kernels wouldn't be able to cope with future hardware because it'd be too complex, they though that you couldn't write modular and mainteinable monolithic kernels. See, the hardware complexity increased, and monolithic kernels are still there. Which is one of the reason why microkernels didn't suceed, IMO - they ignored the fact that you can make monolithic kernels modular and mainteinable. The fact that still today we use them proves they were wrong.

  69. Hurd by Enquest · · Score: 1

    What is GNU/HURD finaly the right answer to all or problems. Will that kernel take over the world

  70. Let's let the users sort it out... by Valar · · Score: 1

    Oh wait, they already did.

    Seriously, I know microkernels are great in theory. That's what Professor T is always reminding us of. However, those of us in the real world realize that in theory, theory and reality are the same, while in reality, theory and reality aren't.

    1. Re:Let's let the users sort it out... by Cheapy · · Score: 2

      [i]Let's let the users sort it out...[/i] ...and they chose the Windows kernel.

      --
      Would you kindly mod me +1 insightful?
    2. Re:Let's let the users sort it out... by Cheapy · · Score: 1

      And there kids is a prime example of why you should preview all your posts before you submit them.

      You might get the tags wrong.

      --
      Would you kindly mod me +1 insightful?
  71. Re:Feh. by The+Conductor · · Score: 1
    But is it really fair to write-off Mach's problems as implementation? After all, we we could write-off Windows' poor security as implementation, insofar as each security hole can be attributed to a buffer overflow, too much trust of user data, or some such. I would say the the lesson from Windows is that it is unrealistic to expect the required level of code quality, even from legions of top-notch talent, if the architecture is as bad as Windows'.

    In a similar vein, maybe a divinely inspired programmer can spec out the perfect message passaging schema from God, but until mere mortal CS PhD's actually do it, the rest of us are doubting Thomases.

    At the risk of overworking my Christian metaphors, perhaps microkernels are an example of creationism. How do you spec out the required message passing until you have experience with the implentation? How do you revise the message passing to fix problems without breaking the implementation?

  72. Re:Feh. by Anonymous Coward · · Score: 0

    No you're WRONG.

    The original poster was right. Tanenbaum's statement _is_ no more true in practice today than it was when he started. Since you probably don't believe that Tanenbaum's conclusions have changed since his original pronouncements on the subject you'd have to agree that the truth of his statement hasn't changed.

    Perhaps you'd prefer the wording,

    "It holds no _less_ true in practice today than it did when he started."

  73. Why do we give credence to these nutjobs? by The+Spoonman · · Score: 1

    He created Minix. Great. When was that? What's he done for me lately? He's a researcher, he doesn't understand "practical". All of his ideas are great...in theory. In practice, however, non-microkernels work best. How do we know? None of the prevailing OSes use microkernels. These OSes are designed by thousands of engineers who work day-in and day-out solving REAL WORLD problems, not cooking up thought experiments. If there were true benefit to microkernels, at least one of the prevailing open source OSes would be using it, but there's not. Enough already.

    --
    Which is more painful? Going to work or gouging your eye out with a spoon? Find out!
    http://www.workorspoon.com
    1. Re:Why do we give credence to these nutjobs? by Anonymous Coward · · Score: 0

      He created Minix. Great. When was that?

      1987

      What's he done for me lately?

      Inspired the microkernal architectures of Cisco's most powerful core routers as well as the operating systems found in nearly every new car on the planet (QNX variants in both cases).

      He's a researcher, he doesn't understand "practical".

      Yea, nothing "practical" about on board automotive computers. Useless that.

      All of his ideas are great...in theory. In practice, however, non-microkernels work best. How do we know? None of the prevailing OSes use microkernels.

      Except QNX and OS X whose install bases dwarf anything but Windows.

      These OSes are designed by thousands of engineers who work day-in and day-out solving REAL WORLD problems, not cooking up thought experiments.

      Next time I fail emmissions I'll tell 'em my OBDII system is just a "thought experiment".

      If there were true benefit to microkernels, at least one of the prevailing open source OSes would be using it, but there's not. Enough already.

      Finally, a condition that makes your statements correct... if you don't consider Darwin open source.

    2. Re:Why do we give credence to these nutjobs? by voodoo_bluesman · · Score: 1

      I believe this paper is trying to address a real world problem: security in a monolithic kernel environment.

      Isn't OS X using a hybrid? This has to at least give some weight to the argument.

    3. Re:Why do we give credence to these nutjobs? by The+Spoonman · · Score: 1

      Inspired the microkernal architectures of Cisco's most powerful core routers as well as the operating systems found in nearly every new car on the planet (QNX variants in both cases).

      Okay, fanboy, two questions: "inspired" or designed? Big difference there. And, are we discussing general computing and/or desktop environments, or embedded? Another big difference.

      --
      Which is more painful? Going to work or gouging your eye out with a spoon? Find out!
      http://www.workorspoon.com
  74. Does the Multi-Core world change things? by cpu_fusion · · Score: 1

    It would seem to me that the future of kernel design has to take into account that we are shifting from advances in clock-rate to the parallelization of multi-core CPUs. I realize that parallel processing has existed for decades, particularly at the high end of hardware, but I'm talking about the average personal computer and multiple cores on a single chip.

    I'm curious to the kernel hackers out there whether a 100-core CPU will see an advantage in either the micro-kernel vs. monolithic approach?

    Also, I'm curious if more portions of a micro-kernel/message-passing could be implemented somehow in hardware or in a programmable gate array to try to kill the speed issue?

    1. Re:Does the Multi-Core world change things? by Wesley+Felter · · Score: 1

      I'm curious to the kernel hackers out there whether a 100-core CPU will see an advantage in either the micro-kernel vs. monolithic approach?

      The K42 team certainly thinks that large multiprocessor systems benefit from a different OS stucture and one of their ingredients is a microkernel.

  75. Virtualization by jefu · · Score: 5, Insightful
    I suspect that virtualization may well signal the rise of the microkernel (exokernel?) again.

    It seems reasonable to think that a tiny microkernel built for virtualization and able to support multiple virtual os's with minimal overhead is really going to be a very attractive platform. If we then get minimal, very application specific kernels to run on top of it for specific needs, we could get an environment in which various applications (http servers, databases, network servers of other sorts, browsers) could run in secure environments which could leverage multi-processor architectures, provide for increased user security, make inter-os communications work nicely and generally be a Good Thing. Certainly that would not prohibit running complete unix/MS/??? systems from running as well. (Granting, of course, that OS vendors go along with the idea, which some of the big players may find economically threatening.)

    Could be very fun stuff and make viable setups that are currently difficult or impossible to manage well.

    1. Re:Virtualization by Znork · · Score: 2, Interesting

      "It seems reasonable to think that a tiny microkernel built for virtualization"

      The article (bad me, dont read linked articles, I know) actually mentions hypervisors as sort-of microkernels, so yes. Xen and VmWare ESX fits rather well into such a mapping, as they both have their own 'kernel', and where the controller domain is merely another virtual machine.

      "If we then get minimal, very application specific kernels to run on top of it for specific needs"

      You can accomplish a similar setup by just fudging your definitions a bit again. For example, a bare stripped linux kernel capable of running only on top of the Xen hypervisor isnt all that huge. Combine that with simple single-purpose OS installs doing, for example, fileserving, security services, etc, and communicate over the network for everything, and you more or less have a serverized 'microkernel' architecture. The server is the network is the server is the OS. So to speak. Postmodernistic computing.

      "Granting, of course, that OS vendors go along with the idea,"

      Yes, well, they can go along with it or we can run free software. Yet another indication of the advantages of adaptability.

    2. Re:Virtualization by OrangeTide · · Score: 1

      I wouldn't really say a microkernel is the same as a hypervisor.

      Generally a microkernel provides a majority of system services through user space servers. Where a hypervisor a way to manage slices of a machine as several (usually full-sized) virtual machines. An exokernel is almost halfway between a microkernel and hypervisor. Where you can provide several modified kernels as a user space service.

      In the end, I feel that it's more about how well applications handle faults than it is about how well kernels isolate faults. A lot of problems that happen in applications are not something the kernel can handle or fix. And you don't need a very sophisticated kernel to kill programs when misbehave, Linux can do this already.

      --
      “Common sense is not so common.” — Voltaire
  76. Isn't Tannenbaum the one who said... by macz · · Score: 1
    "I still maintain the point that designing a monolithic kernel in 1991 is a fundamental error. Be thankful you are not my student. You would not get a high grade for such a design :-)"

    (Rather akin to Fred Smith getting a "C" on his paper first describing FedEX where the Teacher commented "To recieve a higher grade, the project must be feasible")

    I think it is clear that Linux won that argument. But even Linus admited that microkernels were more elegant designs. Processor cache sizes seem to favor monolithic designs though.

    --
    ...But I digress. TREMBLE PUNY HUMANS!ONE DAY MY SPECIES WILL DESTROY YOU ALL!
    1. Re:Isn't Tannenbaum the one who said... by antientropic · · Score: 2, Insightful

      I think it is clear that Linux won that argument.

      This is not at all clear. By what metric do you claim that Linux won that argument? Popularity? Then surely the Windows kernel wins even more.

      Truth is, just because one technology is superior to another (in terms of, say, stability, maintainability, whatever) doesn't mean that it will immediately win in the marketplace. I think that Linux became a success because of other factors, such as that it was easy for people to contribute, and because it conservatively copied a 1970s design which everybody who wanted to contribute already understood.

      The performance argument is of course rapidly declining in importance. I would gladly spend a little bit of performance for increased stability. In the 60s some people claimed that high-level languages would never fly - too slow. Turns out that there are more important things than CPU cycles.

  77. it's been here for 15 years by DrSkwid · · Score: 1

    The twentieth century called, said would you like its idea now

    http://plan9.bell-labs.com/plan9/

    --
    There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
  78. Re:Practice != Theory by Anonymous Coward · · Score: 2, Insightful

    His research is no more PRACTICAL than it was 20 years ago. Sure, in theory it is great that you can isolate faults and restart servers. In practice, what good does it do when restarting a crashed filesystem server process means that all the real user programs crash because their file descriptors have become invalid?

    To use his metaphor, what good does sealing off the one leaking compartment do if crew can not survive without it? Sure the ship may still float, and you can replace the crew, but they are still just as dead as if the ship had sunk.

  79. Macs by minus_273 · · Score: 1

    Given the number 1 and number 2 OSes are XP and OSX, I wonder why he didn't mention the huge bloated kernel in OSX and jumped straight to linux. Oh right.

    I once had to explain to a linux kid that i didn't care about having the "freedom" of recompiling my kernel and optimizing modules on OSX. He didn't seem to understand. The original argument for monolitic kernels was basically that you would have better performance as a result of fewer context stwitches (1/2 that of a micro kernel) going from kernel level to user level. I think OSX has shown that micro kernels are possible today.

    Oh wait, Xnu is not a true micro kernel and neither is linux a true monolithic kernel. before people get into flame wars about mono vs monolithic, I think it is a good idea to realize that both thechnologies have their advantages and disadvantages. there is a reason why a hybrid kernel is used. be thankful that you can use modules in linux without recompiling all the time

    --
    The war with islam is a war on the beast
    The war on terror is a war for peace
    1. Re:Macs by Anonymous Coward · · Score: 0

      Hate to break it to you kid, but the #1 and #2 OS's by overall market share are Windows and Linux. OS X is #2 on the desktop, perhaps (although this too is debateable) but there are millions of Linux servers out there, as well as tens of millions of embedded Linux devices like routers, Tivo's, etc.

  80. GNU to the rescue!! by mshiltonj · · Score: 1

    Switch to HURD!!

  81. Re:Feh. by AKAImBatman · · Score: 3, Interesting

    Look a few posts up at the fellow who mentioned the L4 kernel. While the L4 was really too little, too late (all the OSes we use today were written by that time), it managed to prove that Microkernels *can* be speed demons. What they require, however, is a radically different architecture. If you simply attempt to shoehorn a microkernel into existing Unix systems - precisely what Mach did - you're going to run into trouble.

    On the other hand, if you architect the system so that it is impossible to pass a bad message, you may find that performance can actually be *increased*. My own preference has always been an OS based on a VM like Java where it is literally impossible to write code that can cross memory barriers. The result would be that the hardware protection of an MMU would be unnecessary, as would the firewall between the kernel and usermode. Performance would increase substantially due to a lack of kernel mode (i.e. Ring 0) interrupts or jumps.

  82. ... and DragonFly BSD by mu22le · · Score: 1

    While DragonFly is not meant to be a pure microkernel (its aim is to get the best of both worlds, a la Amiga) I think it deserves a mention too.

    DF has a different approach on _developing_ a microkernel. Instaead of writing it from scratch (working on an unusable product for years) they started modifying the FreeBSD 4.0 kernel towards a modular architecture, but every release is stable enough to be used in a lot of pratical cases (if not as stable as a tipical BSD release).

    I am not a developer and I do not use DF a lot, but I think it will pay to keep an eye on them, they have the potential to take a many of the concepts behind the microkernel design and itroduce them to a lager audience.

  83. Re:Feh. by Anonymous Coward · · Score: 0

    What exactly is your point? He said that the problem was partly "solved" through raw horsepower. Why does it surprise you that MySQL is slower than on other systems?

    Of course, part of the problem with those benchmarks is MySQL, but that's another story...

  84. Re:Feh. by LWATCDR · · Score: 4, Interesting

    "I see people hitting YEARS of up-time with Linux/BSD/Solaris and hell, even win2k machines. "
    Are they not upgrading the kernel? I know that Win2K has had some critical updates in the last few years that required a reboot.
    Microkernels do have the potential to be easier to secure than monolithic kernels.
    In theory a secure system is a secure system. It is possible to make a monolithic kernel as secure as a microkernel, however it will be harder to make a monolithic kernel as secure as a microkernel.
    Just like everything else it is a trade off.
    Monolithic
    Easier to make a hi-performance kernel.
    Harder to secure and to test security.

    Microkernel.
    Easier to make secure and to test security.
    Harder to make hi-performance.

    There are secure monolithic systems OpenBSD, Linux, Solaris, and Z/OS jump to my mind.
    There are fast microkernels. QNX is a very nice system.

    I really like the idea of a microkernel OS. I will try out the first stable, useful OSS Microkernel OS that I find.

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
  85. Write one! We'd all like to see it! by radarsat1 · · Score: 0

    We can argue until earth's end about whether Micro- or Monolith-style kernels are superior. The fact is that they both have advantages. I'm sure that those who care more about stability and security over performance are going to go for the microkernel approach. The message here is that there's a right tool for the job.

    But here's the thing: We HAVE Linux. Back when Linus wrote it, he just wanted to see if he could write an operating system.. and he did it. So, I think it's a safe challenge to any advocates of the microkernel approach: DO IT. Make an open-source microkernel, and make it source-compatible with the GNU tools (POSIX, etc), and turn it into an operating system. Then we'll have a nice alternative to Linux for those that want it, AND you'll have proven your point. Everyone is happy.

    I realize it's a huge undertaking. Writing an OS is no easy feat. But it would be a tremendous learning opportunity. Universities, for instance, should encourage such large-scale projects. Make it so that undergrads have time to work on projects like this: Graduate students are too concerned with researching NEW technologies, that they don't have the time or inspiration to do the gruntwork of writing an OS from scratch, having to re-implement lots of already done ideas.

    With the right leadership, a group of undergrads could do this. I'm sure of it. And the world would benefit.

    Anyways I just think it's a little silly to constantly debate this when the whole argument could be resolved by simply having that microkernel, open source, out in the wild, turning it into a mature platform over time, and seeing which approach ends up being more reliable and useful.

    1. Re:Write one! We'd all like to see it! by BenjyD · · Score: 1

      GNU are trying to do that with HURD. Of course, they've been trying for decades and haven't really acheived anything. According to the Wikipedia page, it seems to have taken them 15 years to get Hello World running.

  86. Obligatory Ingo Molnar quote by AcidPenguin9873 · · Score: 1
    "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.

  87. Cue the peanut gallery. by Inoshiro · · Score: 5, Interesting

    Slashdot may be news for nerds, but it has a serious drawback when it comes to things such as this. The drawback is that what is accepted as "fact" by most people is never questioned.

    "Fact": Micorkernel systems perform poorly due to message passing overhead.

    Fact: Mach performs poorly due to message passing overhead. L3, L4, hybridized kernels (NT executive, XNU), K42, etc, do not.

    "Fact": Micorkernel systems perform poorly in general.

    Fact: OpenBSD (monolithic kernel) performs worse than MacOS X (microkernel) on comparable hardware! Go download lmbench and do some testing of the VFS layer.

    Within the size of L1 cache, your speed is determined by how quickly your cache will fill. Within L2, it's how effecient your algorithm is (do you invalidate too many cache lines?) -- smaller sections of kernel code are a win here, as much as good algorithms are a win here. Outside of L2 (anything over 512k on my Athlon64), throughput of common operations is limited by how fast the RAM is -- not IPC throughput. Most microkernel overhead is a constant value -- if your Linux kernel us O(n) or O(1), then it's possible to tune the microkernel to be O(n+k) or O(1+k) for the equivalent operations. The faster your hardware, the smaller this value of k since it's a constant value. L4Linux was 4-5% slower than "pure" Linux in 1997 (See L4Linux site for the PDF of the paper).

    But none of this is something the average slashdotter will do. No, I see lots of comments such as "micorkernels suck!" already at +4 and +5. Just because Mach set back microkernel research by about 20 years, doesn't mean that all micorkernels suck.

    --
    --
    Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
    1. Re:Cue the peanut gallery. by Kr3m3Puff · · Score: 1

      Are you surprised at the ignorance of the average slashdotter who doesn't realize that OSX is running on the Mach microkernel... All of this microkernal bashing and things like "If there was a decent microkernel out there I would use it" and there has been a modern OS that has been built on one. Amazing...

      --
      D.O.U.O.S.V.A.V.V.M.
    2. Re:Cue the peanut gallery. by Council · · Score: 1
      Are you surprised at the ignorance of the average slashdotter who doesn't realize that OSX is running on the Mach microkernel... All of this microkernal bashing and things like "If there was a decent microkernel out there I would use it" and there has been a modern OS that has been built on one. Amazing...

      From Wikipedia:

      For example, the Mac OS X kernel XNU, while based on the Mach 3.0 microkernel, includes code from the BSD kernel in the same address space in order to cut down on the latency incurred by the traditional microkernel design. Several modern operating systems today fall into this category, Microsoft Windows NT and successors being the most popular examples.
      --
      xkcd.com - a webcomic of mathematics, love, and language.
    3. Re:Cue the peanut gallery. by LWATCDR · · Score: 1

      Mac OS/X isn't a true microkernel OS. The BSD kernel runs in a single memory space.
      To be a true microkernel you would have many memory spaces each handling different services.
      OS/X is a very nice OS but it isn't a true microkernel OS.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    4. Re:Cue the peanut gallery. by galvanash · · Score: 5, Informative

      Do you actually want people to take you seriously when you post utter shit like this?

      Fact: Mach performs poorly due to message passing overhead. L3, L4, hybridized kernels (NT executive, XNU), K42, etc, do not.

      That is a veiled lie. Mach performed very poorly mostly because of message _validation_, not message passing (although it was pretty slow at that too). I.e. it spent alot of cycles making sure messages were correct. L3/L4 and K42 simple dont do any validation, they leave it up to the user code. In other words once you put back the validation in userland that Mach had in kernelspace, things are a bit more even. And for the love of god NT is NOT a microkernel. It never was a microkernel. And stop using the term "hybrid", all hybrid means is that the marketing dept. wanted people to think it was a microkernel...

      Now I will throw a few "facts" at you. It is possible with alot of clever trickery to simulate message passing using zero-copy shared memory (this is what L3/L4/K42/QNX/etc... any microkernel wanting to do message passing quickly). And if done correctly it CAN perform in the same league as monolithic code for many things where the paradigm is a good fit. But there are ALWAYS situations where it is going to be desirable for seperate parts of an OS to directly touch the same memory in a cooperative manner, and when this is the case a microkernel just gets in your damn way...

      Fact: OpenBSD (monolithic kernel) performs worse than MacOS X (microkernel) on comparable hardware! Go download lmbench and do some testing of the VFS layer.

      Ok... Two things. OpenBSD is pretty much the slowest of all BSD derivitives (which is fine, those guys are more concerned with other aspects of the system and its users are as well), so using it in this comparison shows an obvious bias on your part... Secondly, and please listen very closely because this bullshit needs to stop already, !!OSX IS NOT A MICROKERNEL!! It is a monolithic kernel. Yes it is based on Mach, just like mkLinux was (which also was not a microkernel). Lets get something straight here, being based on Mach doesnt make your kernel a microkernel, it just makes it slow. If you compile away the message passing and implement your drivers in kernel space, then you DO NOT have a microkernel anymore.

      So what you actually said in your post could be re-written like this:

      Fact: OSX is sooooo slow that the only thing it is faster than is OpenBSD. And you cant even blame its slowness on it being a microkernel. How pathetic... Wow, that says it all in my book :)

      And no, you dont have to believe me... Please read this before bothering to reply.

      --
      - sigs are stupid
    5. Re:Cue the peanut gallery. by PenGun · · Score: 1

      It is probably more accurate to call mach an interpreter for the freeBSD/OSX monolithic kernel.

            PenGun
          Do What Now ??? ... Standards and Practices !

    6. Re:Cue the peanut gallery. by Anonymous Coward · · Score: 0

      Fact: OpenBSD (monolithic kernel) performs worse than MacOS X (microkernel) on comparable hardware! Go download lmbench and do some testing of the VFS layer.

      This is basically the lmbench Special Olympics.

    7. Re:Cue the peanut gallery. by Pseudonym · · Score: 1
      It is possible with alot of clever trickery to simulate message passing using zero-copy shared memory (this is what L3/L4/K42/QNX/etc... any microkernel wanting to do message passing quickly). And if done correctly it CAN perform in the same league as monolithic code for many things where the paradigm is a good fit. But there are ALWAYS situations where it is going to be desirable for seperate parts of an OS to directly touch the same memory in a cooperative manner, and when this is the case a microkernel just gets in your damn way...

      I know a bit about the architecture of QNX, so let me just correct some things here.

      QNX does not do zero-copy page table magic for IPC. The kernel directly copies the memory between address spaces. If you compare this with Linux, where it copies memory from user to kernel space, you'll see that the overhead is pretty much identical.

      Having said that, there are areas where it's desirable for different "parts" of an OS to touch the same memory, but it's rare for those "parts" to be widely different. (I can't see, for example, why the POSIX message queue code will need to touch the same memory as a hard disk driver without passing through a user-space application first.) In such cases, QNX handles it by putting those parts in the same user-space server. In this setup, device drivers are shared objects which are loaded by user-space servers instead of the kernel.

      Now to be fair, QNX isn't focussed on security first and foremost, it's focussed on hard real-timeness. The reason why it uses a small microkernel is so that the amount of code that could possibly stuff up any real-time guarantees is minimised. (There are other advantages, see below.) But still, the point here is that not all microkernels are made equal, and it is possible to satisfy the same "copy as little as possible" requirements that a modern macrokernel tries to do.

      There is one advantage to modern microkernels (L4/QNX, not Mach) that hasn't been covered here yet, and that's that the kernels tend to be much simpler. You can leverage that to get more performance.

      In a macrokernel OS, a task logically has two call stacks: One for the "user" code and one for the "kernel" code. If you are inside a system call and your task needs to be suspended, the kernel simply switches "kernel" stacks. (Yes, this is a simplification. Bear with me.)

      Now consider a microkernel OS, where there is a limited number of simple system calls. If a task needs to be suspended during a system call, it can simply store the data that it needs to complete the system call in the thread state, and then return. When you wake up a thread, you first check in the thread state to see if a system call needs to be completed. If so, you do that before returning to the thread.

      Yes, this makes the thread state structure slightly bigger, but in return, you don't need to have a separate kernel stack per thread. One per CPU is enough.

      There are other tricks, of course, but this example illustrates the general idea: Microkernels can make system calls much cheaper, so you can afford to spend more time on things that in a macrokernel design would be classified as overhead. At the very least, it makes the analysis more complicated than merely saying "more copying == bad".

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    8. Re:Cue the peanut gallery. by Anonymous Coward · · Score: 0

      Typing nazi: you typoed "microkernel" as "micorkernel" at least three times. (too lazy to read the rest)

  88. Re:Feh. by shaitand · · Score: 1

    "Tanenbaum's research is correct, in that a Microkernel architecture is more secure, easier to maintain, and just all around better."

    No they have a serious problem that takes them from being 'all around better' to being 'a poor selection'. You yourself name it. And, even the greater reliability and security are only theoretical.

    "What was the key problem with these kernels? Performance."

    You got it. Previously in one of his public statements on this topic Tanenbaum said that the THIRTY PERCENT performance loss was an acceptable tradeoff. Of course this is not true! Now, when the greatest advocate of this architecture is willing to call it a 30% performance loss then I'll wager that to be a conservative estimate and most would NOT find a 30% performance loss in trade for theoretical benefits to resolve things that aren't really a problem now in practical macrokernel implementations (kernel maintainence is pretty streamlined, kernel vulnerabilities are incredibly low, and the linux kernel is damn reliable).

  89. The lesson? by NotQuiteReal · · Score: 1
    There's probably a lesson here.

    I think you are saying I should keep my computers out of the bathtub, right?

    --
    This issue is a bit more complicated than you think.
    1. Re:The lesson? by Daniel+Dvorkin · · Score: 1

      Exactly!

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
  90. Some hurdles... by multimediavt · · Score: 2, Insightful

    After reading the paper and contemplating some issues, I do believe a microkernel-like approach is favorable for what Tanenbaum wants to focus on; reliability and security. I say "microkernel-like" because micro is a relative term when you think about the growing complexity of applications and devices a modern operating system has to deal with. I think his TV analogy falls flat on its face UNLESS you are willing to tailor individual operating system distributions to vertical markets. This is not at all practical in the open-source/FOSS space, and even less so in the commercial OS space. Who wants to write different kernels and services for every possible use a mixed set of hardware and software could be put to? His more reliable and secure consumer product examples are just that, embedded and highly specialized versions of an operating system. It can be done in the consumer electronics space because the cost of doing this is passed on to the customer and figured into the retail price. Since the OS and the hardware are removed from each other in all but a few cases, i.e. Apple and Mac OS, Sun and Solaris, and the now defunct SGI and IRIX, it is extraordinarily difficult (and costly) to achieve Tanenbaum's goals.

    So, to return to the microkernel-like statement, I think that modern OSes *ARE* trying to achieve the goals that Tanenbaum aspires to. The points he brings up *ARE* being addressed in Linux, Windows, and Mac OS X. The contention is that they will not happen overnight, and they will only happen faster as more negative feedback is fed into the mechanisms of change, i.e., the project development community or corporate entity doing the work. But, corporate entities in particular have to balance the equation. They can't just sacrifice performance and compatibility for the sole sake of reliability and security. I don't believe that Tanenbaum would disagree with that point. We are seeing more compartmentalization (modularization if you will) within the structure of most OS kernels. I think his wrapper idea for device drivers has merit. Personally, I'd rather see a common driver framework developed for categories of devices to help minimize the number of driver specific wrappers that would need to be created manually (455 seems like a tremendously large number). Virtualization is growing in popularity in the IT community at large. I think there are some huge benefits to this that will alter OS development in the future, the near future for some things. His two more holistic approaches are novel. I think the Multiserver approach may have more of a chance than the Laguage-Based approach, but time will tell which theory takes hold in practice, or if a new or hybrid approach may emerge.

    All-in-all a good read and definitely thought and discussion provoking.

  91. QNX by cachimaster · · Score: 1

    QNX is a example of a fast, stable microkernel OS. Also it's used widely in industrial machinery where Linux is simply not trusted. QNX is based on unix, and some versions are free. Take a look at it. (I'm not a QNX employee, just a user)

  92. Re:Titanic by shaitand · · Score: 1

    The better question is how are we going to prevent Microsoft from further perpetuating the myth that the problems with spyware and viruses rest with the user instead of the flawed applications they ship that allow flaws to install themselves via the browser.

    Test it, load up SP2 and browse a few porn sites with IE using the default settings.

  93. TWO great tastes that go together! by Thud457 · · Score: 1

    Notice the similarity there? Two academic-rooted projects -- both that have accomplished exactly nothing in twenty years. "Those who teach... somthing something.... won't be fooled again"

    --

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

  94. driver banishment by bperkins · · Score: 3, Interesting

    What I'd like to see is a compromise.

    There are quite a few drivers out there to support weird hardware (like webcams and such) that are just not fully stable. It would be nice to be able to choose that a driver be run in kernel mode, at full speed, or in a sort of DMZ with reduced performance. This could also make it easier to reverse engineer non-GPL kernel drivers, as well facilitate driver development.

    1. Re:driver banishment by BillyBlaze · · Score: 1

      You might want to check out RingCycle, a research project at my university. It probably won't end up portable beyond x86, but it provides protection against buggy drivers, with no changes (other than a recompile) necessary to those drivers, and only minimal performance impact.

  95. The Isolation can do only that much... by JollyFinn · · Score: 1

    From TFA.

    No single person understands everything about how an aircraft carrier works either, but the subsystems on an aircraft carrier are well isolated. A problem with a clogged toilet cannot affect the missile-launching subsystem.

    Not quite so, if clogged toiled prevents it's proper use it might cause a service man leak in wrong place and some electronics getting fried. Or simply clogged toiled might simply prevent missile operator using the facility for a while and that can lead missile operator malfunction.

    --
    Emacs is good operating system, but it has one flaw: Its text editor could be better.
  96. Re:Lessons on ID for csoto by Red+Flayer · · Score: 2, Insightful

    "So, let's all agree with Andy, then go on using the best tools for our purposes."

    That's looking at it from an end-user standpoint. The problem with that view is that the better method will never become viable.

    To extend your evolution metaphor, you're limiting yourself to a subset of the genepool. Sure, a species that has already been selected for / adapted to that particular niche would outcompete *now* in that niche; but that does not mean that another species allowed to adapt to that niche wouldn' out-compete the one that's already there -- especially should conditions change in that niche (as constantly happens with technology).

    To give a biological example, look at the large animals of the Americas. They evolved to fill niches in the absence of humans. Once humans came over, they were all killed off or died out most likely as a result of human interference -- they hadn't the traits to survive in the new niche (with the exception of the buffalo). Yet big animals in Africa survived alongside human hunters -- they would have been better suited to the 'new' American niche.

    My point is that just because something has the most developed tools for the job *now* doesn't mean that it's lineal successors would be the best tool for the job *later*. Who knows what we're missing if we limit ourselves to the current development lines?

    --
    "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
  97. Tanenbaum is wrong, and should know it by r00t · · Score: 4, Informative

    I'm more than a Linux hacker. I actually worked on a commercial microkernel OS.

    Kernels don't often crash for reasons related to lack of memory protection. It's quite silly to imagine that memory protection is some magic bullet. Kernel programmers rarely make beginner mistakes like buffer overflows.

    Kernels crash from race conditions and deadlocks. Microkernels only make these problems worse. The interaction between "simple" microkernel components gets horribly complex. It's truly mind-bending for microkernel designs that are more interesting than a toy OS like Minux.

    Kernels also crash from drivers causing the hardware to do Very Bad Things. The USB driver can DMA a mouse packet right over the scheduler code or page tables, and there isn't a damn thing that memory protection can do about it. CRASH, big time. A driver can put a device into some weird state where it locks up the PCI bus. Say bye-bye to all devices on the bus. A driver can cause a "screaming interrupt", which is where an interrupt is left demanding attention and never gets turned off. That eats 100% CPU. If the motherboard provides a way to stop this, great, but then any device sharing the same interrupt will be dead.

    I note that Tanenbaum is trying to sell books. Hmmm. He knows his audience well too: those who can't do, teach. In academia, cute theories win over the ugly truths of the real world.

    1. Re:Tanenbaum is wrong, and should know it by DrFalkyn · · Score: 1
      Kernels also crash from drivers causing the hardware to do Very Bad Things. The USB driver can DMA a mouse packet right over the scheduler code or page tables, and there isn't a damn thing that memory protection can do about it. CRASH, big time. A driver can put a device into some weird state where it locks up the PCI bus. Say bye-bye to all devices on the bus. A driver can cause a "screaming interrupt", which is where an interrupt is left demanding attention and never gets turned off. That eats 100% CPU. If the motherboard provides a way to stop this, great, but then any device sharing the same interrupt will be dead.

      Isn't this what a microkernel avoids, as most drivers are run in user mode?

    2. Re:Tanenbaum is wrong, and should know it by Chirs · · Score: 1

      All of the problems listed above are hardware issues. Whether the driver is run in user mode doesn't matter....you can't run the hardware in user mode.

    3. Re:Tanenbaum is wrong, and should know it by Anonymous Coward · · Score: 0

      You going to actually argue or just spew insults in the form deplorable English?

    4. Re:Tanenbaum is wrong, and should know it by OwnedByTwoCats · · Score: 4, Insightful
      Kernels also crash from drivers causing the hardware to do Very Bad Things. The USB driver can DMA a mouse packet right over the scheduler code or page tables, and there isn't a damn thing that memory protection can do about it. CRASH, big time. A driver can put a device into some weird state where it locks up the PCI bus. Say bye-bye
      What if the USB driver
      • couldn't
      DMA a mouse packet over scheduler code (which ought to be read-only at the MMU) or the MMU's page table.

      That is what Tannenbaum's research is asking. Can such a system be built? Does it perform? What are the tradeoffs? Does the end result offer enough benefits (reliability and security) to overcome the costs (performance)?

    5. Re:Tanenbaum is wrong, and should know it by Anonymous Coward · · Score: 0

      But they are caused by bad PeeCee _hardware_ design. A microkernel OS (using the definition "one with interdriver memory protection" rather than "small kernel") on decent hardware (there ARE computers that have inter-dma-device memory protection etc, they're called "Mainframes" with "Channels") is not just a good idea, it's the only way to do things for global-enterprise levels of reliability. There are good reasons people buy mainframes even today. PCs are toys, a microkernel OS on a PC is a castle built on sand.

    6. Re:Tanenbaum is wrong, and should know it by AKAImBatman · · Score: 3, Insightful

      Kernels don't often crash for reasons related to lack of memory protection.

      I do believe that Tanenbaum was addressing security in his article, not kmem protection. His point was that the segregation of the servers prevents a hole in these programs from opening an elevated privledge attack. Furthermore, he points out that the elevated permissions of the kernel are likely to be far more secure due to the miniscule size of the kernel itself.

      You make an interesting point about the stability of the kernel, but that wasn't his point in the slightest.

    7. Re:Tanenbaum is wrong, and should know it by Anonymous Coward · · Score: 0

      > Isn't this what a microkernel avoids, as most drivers are run in user mode?

      The kernel a hardware designer had in mind when designing the features on a pc-motherboard was something like windows or linux - if you are lucky, that is, it could also be DOS for legacy stuff ;-)

      The model for these OSes is like this :

      - User programs see a flat 32Bit (or 64Bit nowadays) address space
          Of this, they are told what portions they are allowed to access.
          If they are sneaky and try to explore the other portions, they are immediately terminated
          (Schwarzenegger-style) before they can do any harm. They usually only see Ram-memory, which is
          usually cached and virtualized

      - The kernel is the only entity that is allowed to access the all hardware registers, special
          purpose memory (e.g. fifos in NICs) memory and all the ram memory.

      This differentiation between "User space" and "Kernel space" is enforced by the MMU (Memory Managemnent Unit), a unit that translates a virtual address in a cpu register via a table to a physical address.

      For performance reasons, in modern desktop CPUs (since app. 80386/68030, introduced in the second half of the MMU is part of the CPU, so on the pins of the CPU and all Buses, you will only see physical adresses.

      So, if a user mode driver were allowed to access the DMA engine used for the USB-Bus-transfers (typically located outside the cpu, and thus using physical adresses), there is no way to prevent him from overwriting random physical adresses, and thus most sensitive kernel data structures.

      Therefore, a micro kernel would have to do a lot of stuff (such as DMA-programming) inside the (then-no-longer-really-)micro kernel that is very intricately interlocked with less sensitive stuff (e.g. programming the USB chip.

      This is more and more time-consuming as the hardware complexity grows and and the latency of hardware accesses and the penalty for locking between different cpu-cores grows.

        80ies),

    8. Re:Tanenbaum is wrong, and should know it by 0xABADC0DA · · Score: 1

      The real question though is if it is worth it to put in all this effort in all parts of the kernel to make them completely free of bugs that could eventually stomp memory (pretty much all bugs). For user space we say certainly not because the things done in user-space are "so complicated" that it's impractical. It gets in the way of doing it the best way that it has to also be 100% bug free. Even something as "complicated" as grep runs in user space on the offchance that regex goes bad and kills something. And yet parts of the kernel are much more complex than grep.

      I say no, it's not worth for the whole kernel to be able to kill the machine. Just look at the creative things done with user-space filesystems like FUSE. We finally get something in Linux that can mount a freakin' zip file as a filesystem. This would never happen if this also had to be 100% bug-free.

      I'm glad tannenbaum actually mention's Microsoft's singularity "safe kernel" project, only I wish he had given credit to Sun for their Self operating system or jxos for their Java one that was booting on vmware before singularity was even started. "Safe kernels" aka ones written in and running Java or C# are the future.

    9. Re:Tanenbaum is wrong, and should know it by Ulrich+Hobelmann · · Score: 1

      Agreed with the Very Bad Things.

      With communication things are different. Chances are that you did a lot of work using semaphores and condition variables, which are kind of hard to use. DragonflyBSD was created for just that reason: to build an OS not on top of locking, but on top of messaging.

      If you use messaging, there are tons of theories at your disposal to even *prove* the correctness (i.e. deadlockfreeness) of your code, such as Hoare's CSP, Milner's pi-calculus and others.

    10. Re:Tanenbaum is wrong, and should know it by Kristoph · · Score: 1

      Ok, well you say you are a Linux kernel hacker and you have worked with a microkernel OS but you have made numerous relatively questionable technical assertions which you have conveniently neglected to exemplify.

      Firstly, microkernel component interaction does not increase deadlocks and race conditions. Your experience may be related to real-time environments where priority inversion does cause problems but this is not something unique to microkernels. Please consider that your argument would imply that there is something inherently problematic with IPC and mutli-image applications which, given their predominance ( Oracle, SAP, JDEdwards ), appears not to be the case.

      Second, the goal of a microkernel is not to solve 100% of all hardware access problems. It is to isolate hardware access to specific components (which are as small as possible) so that the footprint of those components which can take down a kernel is significantly reduced. So, in your USB example, it is true that the DMA host controller driver in a microkernel can DMA over kernel memory but the point is that any other driver communicating with the DMA host controller does not require the hardware access privilege greatly reducing the likelihood of failure (from a faulty mouse driver, say).

      Finally, having said all that, I do not disagree that Tanenbaum is trying to sell books but his books do contain well considered and well research arguments. You might consider reading one of those books so that your future posts are a bit better considered.

      ]{

    11. Re:Tanenbaum is wrong, and should know it by Kristoph · · Score: 1

      The third paragraph should read ...

      Second, the goal of a microkernel is not to solve 100% of all hardware access problems. It is to isolate hardware access to specific components (which are as small as possible) so that the footprint of those components which can take down a kernel is significantly reduced. So, in your USB example, it is true that the DMA host controller driver in a microkernel can DMA over kernel memory but the point is that any other driver communicating with the USB host controller driver does not require the hardware access privilege greatly reducing the likelihood of failure (from a faulty mouse driver, say).

      ]{

    12. Re:Tanenbaum is wrong, and should know it by Yenya · · Score: 1
      What if the USB driver couldn't DMA a mouse packet over scheduler code

      I find it difficult even to imagine how could you acchieve this (not only for USB drivers, but for any generic device out there). Would your firmware loader verify the correctness of the device firmware (so that it does not allow DMA or verify the DMA address, and of course, so that it does not contain buffer overruns itself)? How your "magic OS" can fix up the hardware which is plain buggy? It would probably require the virtualization of every single HW component which is available on the target platform, at which point you are nowhere near a _micro_ kernel :-)

      It can be done when you also have the HW platform under your control, but not on a generic PC, where is no IOMMU (for most devices) to put the sanity checks on.

      --
      -Yenya
      --
      While Linux is larger than Emacs, at least Linux has the excuse that it has to be. --Linus
    13. Re:Tanenbaum is wrong, and should know it by Anonymous Coward · · Score: 0
      What if the USB driver couldn't DMA a mouse packet over scheduler code (which ought to be read-only at the MMU) or the MMU's page table.

      Hard to stop - it's Direct Memory Access - no MMU...

    14. Re:Tanenbaum is wrong, and should know it by r00t · · Score: 1

      Multi-image applications using IPC are quite rare actually. The ones you list (Oracle, SAP, JDEdwards) are all horribly expensive. To me, the great expense suggests that such code is difficult to write.

      Those apps are also simply NOT operating systems. (though Oracle is disturbingly close sometimes) Kernels must share lots of data over lots of code; you'll have to pass that around somehow if you want to do a microkernel.

      Your "DMA host controller driver" wording suggests a misunderstanding of modern hardware. The DMA controller of a PC is only used for old ISA devices, which are very rare these days. I think the floppy drive is the only one still in common use. Each PCI device is itself a DMA controller, without a standardized control mechanism. We call this "PCI busmastering". If you have a FoonetXP network card, you need a FoonetXP-specific driver to operate the DMA engine. You can not have a generic DMA driver because there is no generic (standardized) control mechanism. The FoonetXP driver will have full control over where the DMA goes.

      I have had the misfortune of reading a few of Tanenbaum's books. He does a good job of glossing over the problems with his ideas. Last I checked, he also liked to use really crufty old nasty examples of monolithic kernels.

    15. Re:Tanenbaum is wrong, and should know it by Anonymous Coward · · Score: 0

      An X server runs in user mode, but it has to be able to talk to the video card. A bug in the X server could allow a low-privilege client (on a remote machine) to send a request that causes a remote code execution exploit in the server. This exploit could cause the X server to direct the video card to use DMA to write over kmem.

      In other words, even a benign usermode server could allow the same attacks that a kernelmode driver could.

      dom

    16. Re:Tanenbaum is wrong, and should know it by Anonymous Coward · · Score: 0

      rawr rawr anonymous luser claims expertise
      that's what the internets are for it would seem

    17. Re:Tanenbaum is wrong, and should know it by Anonymous Coward · · Score: 0

      Yeah, because instead of trusting the kernel code, now were just trusting the compiler and language runtime system, and we all know those never have bugs...

    18. Re:Tanenbaum is wrong, and should know it by Anonymous Coward · · Score: 0

      With a microkernel there is less code running restricted so you trust the compiler less. a JVM (the part normally written in C) is far less code than the kernel, so again the same thing. Thus probably also fewer bugs. So what's your point again?

  98. Offtopic: Lusitania by Anonymous Coward · · Score: 1, Insightful

    Both would have survived the iceberg collision, which really does make one wonder what was in Lusitania's holds when those torpedoes hit her.

    A while back, I did a little bit of research into the Lusitania's sinking, and concluded there was ample evidence to lead one to believe she was carrying munitions. The original design of the ship had deck guns, and while I believe they were removed for extra speed, the Lusitania had indeed been used for smuggling munitions in the past using civilians as a cover. However, Google came up with this link containing some evidence that pointed to a coal dust explosion, and not munitions. But, the Germans probably would have sunk it regardless, since they knew of Lusitania's dual purpose.

  99. Why Software Is Bad by MOBE2001 · · Score: 0

    Current operating systems have two characteristics that make them unreliable and insecure: They are huge and they have very poor fault isolation.

    That is not the real reason. The reason that current OSes are bad is that software is based on the algorithm, a practice that is as old as Lady Lovelace and Charles Babbage. Switch to a signal-based, synchronous software model and the problem will disapear. This is the premise of Project COSA.

  100. Re:Feh. by Chris+Burke · · Score: 1

    What was the key problem with these kernels? Performance. Mach (one of the more popular research OSes) incurred a huge cost in message passing as every message was checked for validity as it was sent.

    I thought the performance problem with Mach was the six context switches necessary to pass a message from an application to a user-space service (like the Unix subsystem).

    --

    The enemies of Democracy are
  101. I've had it.... by MrCopilot · · Score: 1
    I'm switching to a macroKernel.

    diabolic kernel?

    paleoithic kernel?

    Forget it, Just move everything to userspace. Works for DOS. ...grin

    --
    OSGGFG - Open Source Gamers Guide to Free Games
  102. Re:Feh. by AKAImBatman · · Score: 1

    Whatever you will but please mod the parent up.

    If I may ask a question: Why?

    The AC didn't make any real point, he was just being a tool. What did he say that impressed you so much that you would want to be "whipped with a birch branch, tarred & feathered, debaged & raddished"?

  103. Re:Feh. by clydemaxwell · · Score: 1

    security is both easier and less important in other industries. People have a known amount of strength, and you can calculate against that (i.e. safes, armoured trucks, etc.)

    --
    Browsing with classic discussion, noscript, at -1 and nested
    no hidden comments and I only mod UP
  104. Settop Box by JonnyRocks · · Score: 1

    My set top box crashes all the time. Time Warner RULES!!!

  105. Hurd in Google's summer-of-code by Spy+der+Mann · · Score: 3, Informative
    I read their "what's new" and they're participating in Google's Summer of Code.


    27 April 2006

            The GNU Hurd project will participate in this year's Google Summer of Code, under the aegis of the GNU project.

            The following is a list of items you might want to work on. If you want to modify or extend these tasks or have your own ideas what to work on, please feel invited to contact us on the bug-hurd mailing list or the #hurd IRC channel.

                    * Make GNU Mach use more up to date device drivers.
                    * Work on GNU Mach's IPC / VM system.
                    * Design and implement a sound system.
                    * Transition the Hurd libraries and servers from cthreads to pthreads.
                    * Find and implement a reasonable way to make the Hurd servers use syslog.
                    * Design and implement libchannel, a library for streams.
                    * Rewrite pfinet, our interface to the IPv4 world.
                    * Implement and make the Hurd properly use extended attributes.
                    * Design / implement / enhance support for the...
                                o Andrew File System (AFS);
                                o NFS client and NFSd;
                                o EXT3 file system;
                                o Logical Volume Manager (LVM).

            Please see the page GNU guidelines for Summer of Code projects about how to make an application and Summer of Code project ideas list for a list of tasks for various GNU projects and information about about how to submit your own ideas for tasks.
    1. Re:Hurd in Google's summer-of-code by Abcd1234 · · Score: 1

      Make GNU Mach use more up to date device drivers.

      WTF... I thought HURD switched over to the L4 microkernel. What gives?

    2. Re:Hurd in Google's summer-of-code by Spy+der+Mann · · Score: 1

      WTF... I thought HURD switched over to the L4 microkernel. What gives?

      No, it's a separate project, and it's not released yet.
      http://www.gnu.org/software/hurd/hurd-l4.html

    3. Re:Hurd in Google's summer-of-code by J.R.+Random · · Score: 1

      According to their change log (http://cvs.savannah.gnu.org/viewcvs/hurd/hurd-l4/ ChangeLog?rev=1.26&view=log) no updates have been made to the L4 microkernel version of Hurd for over a year.

      The project is dead.

    4. Re:Hurd in Google's summer-of-code by sleepingsquirrel · · Score: 1
      I thought HURD switched over to the L4 microkernel. What gives?
      They're abandoning L4 and moving to Coyotos.
    5. Re:Hurd in Google's summer-of-code by slashdot_commentator · · Score: 1

      Oh man, I laughed so hard when I read the Wikipedia entry. Who would think that an ad-hoc committee could be even less efficient than a gov't bureaucracy? Is there a website that provides running commentary on the executive decisions made by the HURD committee? I have to believe there are at least a few L4 developers that are ticked off, but its not worth it to subscribe to the mailing list.

      --
      There is no America. There is no democracy. There is only IBM and AT&T and DuPont, Dow, General Electric, and Exxon
    6. Re:Hurd in Google's summer-of-code by antrik · · Score: 1

      Hurd/L4 was an experimental port, developed in parallel to the existing implementation on Mach.

      It turned out not to be feasible to build a system like the Hurd on top of the existing L4. (In fact, other projects realized that before, but sadly we learned about that only after the fact :-( )

      While upcoming new L4 variants (L4ng and L4.sec) are meant to address the issues, during reexamination of possible microkernels, the original Hurd/L4 designers decided to build quite a different architecture instead. It probably will be called ngHurd, will use many concepts from Jonathan Shapiro's EROS/Coyotos systems, and most likely build on the Coyotos kernel.

      Note that ngHurd will be even more experimental than Hurd/L4 was; and being quite a different system, it can't really be considered a direct successor of the existing Hurd implementation.

      --
      All my comments get moderated +-0, spotless.
    7. Re:Hurd in Google's summer-of-code by nuzak · · Score: 1

      > it probably will be called ngHurd

      Pronounced Nerd?

      Hey, it's still a better name than HURD ... once you try to explain the whole "mutually recursive acronym" bit of hurd, that is. Just say it's a play on GNU (which it is) and it's the last name of one of the developers -- that is, lie. It really is better than that drecksome recursive acronym thing.

      --
      Done with slashdot, done with nerds, getting a life.
    8. Re:Hurd in Google's summer-of-code by antrik · · Score: 1

      Some call it ngHurd, some call it HurdNG, and neither is official. Maybe it will get some completely different name.

      Regarding the Hurd acronym, some seem actually to like it, but personally I don't. I usually just point out the wordplay (GNU Hurd pronounced as GNU Herd); at most a single recursive acronym (Hurd of UNIX Replacing Daemons). The double recursive acronym is really silly.

      --
      All my comments get moderated +-0, spotless.
  106. Has anyone tried? by Spazmania · · Score: 2, Insightful

    Why are TV sets, DVD recorders, MP3 players, cell phones, and other software-laden electronic devices reliable and secure but computers are not?

    Well, the nice thing about software in rom is that you can't write to it. If you can't inject your own code and unplugging and replugging the device does a full reset back to the factory code then there is a very limited about of damage a hacker can do.

    Then too, sets capable of receiving a sophisticated digital signal (HDTV) have only recently come in to wide-spread use. To what extent has anyone even tried to gain control of a TV set's computer by sending malformed data?

    --
    Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    1. Re:Has anyone tried? by hackstraw · · Score: 1

      To what extent has anyone even tried to gain control of a TV set's computer by sending malformed data?

      Late night, Comedy Central, and Girls Gone Wild is a good example.

      If I had a patent on it, I'd be rich!

  107. What, like VM boundaries are the only way? by jthill · · Score: 4, Insightful
    Microkernels are just one way to compartmentalize. Compartmentalization is good, yadda yadda momncherrypie yadda. We've known this for what, 20 years? 30? 40? Nobody suspects it's a fad anymore. The kinds of faults VM isolation guards against aren't the kinds of faults that worry people so much today. Panics and bluescreens aren't solved, but they're down in the background noise. Experience and diligence and increasingly good tools have been enough to put them there and will remain enough to keep them there, because the tools are getting better by leaps and bounds.

    "In the 1980s, performance counted for everything, and reliability and security were not yet on the radar" is remarkable. Not on whose radar? MVS wasn't and z/OS isn't a microkernel either, and the NCSC didn't give out B1 ratings lightly.

    One thing I found interesting is the notion of running a parallel virtual machine solely to sandbox drivers you don't trust.

    --
    As always, all IMO. Insert "I think" everywhere grammatically possible.
    1. Re:What, like VM boundaries are the only way? by owlstead · · Score: 1

      The only blue screen that can be in the background noise is my TV switched to a channel that is not available. I don't see this change in the near future, although new TV's sometimes don't let to switch to channels that have no signal.

  108. The conclusion of article in last paragraph. by JollyFinn · · Score: 1

    Nevertheless, it is interesting to note that microkernels--long discarded as unacceptable because of their lower performance compared with monolithic kernels--might be making a comeback due to their potentially higher reliability, which many people now regard as more important than performance.

    --
    Emacs is good operating system, but it has one flaw: Its text editor could be better.
  109. well, that's interesting by maynard · · Score: 1

    I don't have any experience with QNX, so I can't debate the performance of that OS.

    1. Re:well, that's interesting by Xiaran · · Score: 1

      OK thats fair enough. My point was tho that QNX uses a send-receive-reply mechanism to control message passing. The control on the CPU is passed to the receive, bypassing the schedular. THis not only allows for fast message parsing it also allows it to be a hard real-time operating system and timing can predicted.

    2. Re:well, that's interesting by TheLink · · Score: 1

      Would a different designed CPU be better for microkernels?

      BTW I've always found it weird that in many systems parameters are passed on the same stack that's used to hold return addresses. This is practically mixing code and data - which makes it more vulnerable to security and reliability issues.

      Whereas I'm thinking that if there were separate stacks for code and data that would make things more robust (not sure whether performance would be better or slower), however how many modern CPUs have support for that?

      --
    3. Re:well, that's interesting by slamb · · Score: 1
      Maynard said:

      > I see that micorkernel systems are terribly slow and not significantly more stable than monolithic systems.

      > I don't have any experience with QNX, so I can't debate the performance of that OS.

      Might I ask what microkernels you are familiar with? If they are all research systems, then the lack of stability you observed doesn't surprise me. Research systems don't get the many eyes of a system like Linux. If their VM system is faulty, they'll still fail. But using a microkernel design is a fool-proof way of preventing the NFS driver from corrupting memory throughout the kernel, so there are obviously ways in which it improves stability. A system which had both of these aspects would be more stable than one that has only one or neither.

    4. Re:well, that's interesting by maynard · · Score: 1

      Good question.

      Years ago I fiddled a bunch with Tanenbaum's Minix. I've played with Hurd, as well as Darwin on a Mac. I've not been impressed with any of them from a performance perspective. Compare that to Irix or Solaris on large multicpu systems (which I do have experience with) and I would say that the monolithic -- with loadable modules -- design appears to scale better. And yet the microkernel folks would make the arguement that message passing ought to scale better in a large SMP environment.

      It doesn't appear to be the case. Though I admit, I've only used microkernel based system that were toys in comparison to the professional stuff.

    5. Re:well, that's interesting by magetoo · · Score: 1
      Would a different designed CPU be better for microkernels?
      It seems plausible that they would, at least. CPUs already have lots of optimization for function calls (and C-like code, putting arguments on the stack), but none that I know of for message passing. It'd be interesting to see.
      BTW I've always found it weird that in many systems parameters are passed on the same stack that's used to hold return addresses. [...]

      Whereas I'm thinking that if there were separate stacks for code and data that would make things more robust (not sure whether performance would be better or slower), however how many modern CPUs have support for that?

      Ask the FORTH people; they have been using two stacks for exactly this purpose for ages. Of course, I remember seeing this page that argued that switching to FORTH would give a 10x improvement in speed, size, and productivity, (over C) so keep the pinch of salt handy. :-)

      (And as far as I can see, you don't need any explicit support for the second stack. The 68000 did fine with "move" instructions for both purposes.)

    6. Re:well, that's interesting by Anonymous Coward · · Score: 0

      The FORTH people also use r> and >r to put data temporarily on the return stack, you might want to look those commands up.

  110. Re:Feh. by Halo1 · · Score: 1
    Oddly, NeXT (and later Apple) picked up the Mach kernel and used it in their products. Performance was fixed partly through a series of hacks, and partly through raw horsepower.
    No, Apple partly "fixed" it by making Mac OS X' kernel run in one big address space, and "message passing" in the kernel now consists of plain function calls.
    --
    Donate free food here
  111. Re:Feh. by Chris+Burke · · Score: 4, Informative

    I'm very skeptical of this. It would seem to me, at a fundamental level, that a microkernel architecture is simply a heavily reduced kernel with most accepted kernel functions now delegated to external "programs", and a high level of trust is now placed in each and every one of these programs. I can't see how this is good for security.

    Well, trust is placed in those user-land programs to perform the task for which they are responsible. Whereas in a monolithic kernel, trust is placed in each subsystem to not only perform the task it is responsible for, but also not to muck with the workings of every other subsystem in the kernel as they all reside in the same address space. Therefore in a microkernel you can have a bug in your network stack without compromising your file system driver or authentication module, while this isn't necessarily true in a macrokernel. Compartmentalization is very good for security.

    Which is just one of the reasons Mach is so popular as a research OS, despite never seeing any success in the real world. Compartmentalization also makes the OS easier to maintain, easier to understand, and easier to make modifications for. Plus it's very easy to port to new hardware, if that's required.

    In a sense, most OSes are "microkerneled" anyway. Most functionality is implemented by programs running on top of the kernel, which pass messages back and forth between themselves and the kernel. Perhaps my view on this is a little naive, but I don't see too much of a difference between a microkernel module and any other process on the machine.

    I think you underestimate the things that are handled by the kernel? Unix uses many user-land services, but also has many services integrated into the kernel. Take the concept of moving functionality into user space to the limit, and you have a microkernel. Your last observation isn't naive, it's correct: a microkernel module isn't necessarily any different than any other process on your machine.

    --

    The enemies of Democracy are
  112. Re:Titanic by Anonymous Coward · · Score: 0

    I don't know if you're aware of this, but the Titanic was an ocean-going ship, and Linux is a computer operating system.

  113. Tannenbaum emboldened by amightywind · · Score: 1

    Tanenbaum's research is correct, in that a Microkernel architecture is more secure, easier to maintain, and just all around better. The problem is that early Microkernel architectures killed the concept back when most of the OSes we use today were being developed.

    Your words ring hollow considering there is no real microkernel alternative. Nothing is pretty secure and maintainable! In the 20 years the AT has been blathering on about them he is still flogging Minix, a childs immitation of an OS. One would have hoped that in that the profundity of his ideas would have inspired some some group to develop a suitable one.

    One can only wonder why AT suddenly feels emboldened. Perhaps it is the perceived bugginess of the 2.6 kernel. Nothing a bug fixing cycle or 2 won't cure.

    --
    an ill wind that blows no good
    1. Re:Tannenbaum emboldened by Anonymous Coward · · Score: 0
      I haven't done the research to cite the specifics, but for many years now the QNX RTOS has been running on a lot of equipment where stability is absolutely crucial such as medical equipment where error can cause death or serious injury. I first heard about this system over 15 years ago so this isn't any kind of new development or hype---it's tried and true. QNX states their system is a true microkernel. Microsoft also takes these guys seriously but haven't been able to provide a stable enough RTOS to have them replaced. Nor has embedded Linux been a serious contender to this OS.

      Furthermore, Richard Stallman still seems to take the microkernel seriously. Although Mach has fallen out of favor, the answer isn't to claim that Mach is all there is or could be to a microkernel and declare the concept an abject failure. RMS is moving on to greener pastures with L4. A bad implementation doesn't mean something is a bad idea.

  114. What a novel idea by MacBoy · · Score: 1

    What a novel idea, to build a more secure O/S by implementing it upon a small, solid, secure microkernel. Not all that novel though, because Mac OS X is built upon a microkernel based architechture (Mach). No, Mac OS's security is not merely an illusion; this is just another of the many good reasons that it really is a more secure O/S.

    1. Re:What a novel idea by digitalhermit · · Score: 1

      "No, Mac OS's security is not merely an illusion;"

      Completely agreed. Mac OSX security is not only an illusion, but a dangerous one at that.

      Don't mean to be facetious, but the micro-kernel has very little to do with the security of the OS.

  115. Re:Feh. by AKAImBatman · · Score: 1

    You don't think that's a hack? Interesting.

    I'm not saying that Apple was wrong to do what they did, but it was still a hack of the Mach kernel.

  116. kernel is not the issue by jilles · · Score: 1

    Of the 50 million+ lines of code that make up windows, relatively few are in the kernel. Also most security bugs that are being found have no direct relation to kernel level code (e.g. many viruses do not even require admin rights to propagate and do their damage). Similarly, linux and unix security bugs are mostly found in user mode stuff like bind or openssh. Microkernels do little or nothing for such security related matters. As far as stability is concerned, both windows and linux tend to be quite stable these days except for the occasional crappy driver. Hardware stability is a much bigger issue (e.g. overheating components). The benefits of microkernels do exist but they solve only a small part of the stability and security issues experienced by users.

    Rather than replacing current OS kernels by microkernels (which would take years if not decades), the soltution is to simply keep refactoring them. Both the linux kernel and the windows kernel are evolving and both include facilities for protecting memory; loading some drivers in user space; etc. I'm sure kernel developers have not yet run out of tricks to improve them further.

    --

    Jilles
  117. Re:Feh. by Greyfox · · Score: 1
    Throwing horsepower at the problem may make the kernel run acceptably quickly, but the monolithic kernel will still run faster on the same hardware. And for all the talk of how great microkernels are, I still managed to make my shiny new OSX G4 powerbook kernel fault a couple times in the first 4 hours after I got it home. Still don't know exactly what I was doing that caused it but it's been stable since then.

    Don't get me wrong, I like the microkernel concept. It looks great on paper. But I think Tanenbaum's off base here. Kernel code is usually pretty tight and major problems are usually only caused by third party drivers. I'm not sure I've even seen a windows (Well... Win32 anyway) problem in the last few years that could be attributed to Microsoft. And I know that the only thing that's killed my Linux kernel in the last 5 or 6 years has been ATI's proprietary video driver. Admittedly if it were a microkernel those driver shouldn't be able to cause the system to crash...

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  118. Re:Feh. by Halo1 · · Score: 1

    You don't think that's a hack? Interesting.

    I don't consider it a "hack to make a micro kernel faster", because the thing no longer is a micro kernel. They made something different out of it, so it's not an example of how someone made a micro kernel faster.
    --
    Donate free food here
  119. Performance may be better by kbob88 · · Score: 2, Insightful

    Performance may be better in the long run with a microkernel. Sure, there is bound to be a performance penalty in message passing (and checking) with a modularized architecture. But since the developers would (hopefully) spend a lots less time tracking down bugs through a massive kernel, perhaps they could devote a lot more time to perfomance improvement work in the code? I have to imagine that kernels like Linux, OSX, and XP have lots of old, nightmare code that is horribly inefficient; the developers probably just haven't gotten around to improving it because they're too busy tracking down bugs and security breaches, or implementing drivers for the latest gadget.

  120. It's all theory until we have a working example. by Richard+Steiner · · Score: 1, Insightful

    And I'm not talking a MINIX-style example which is only good for classroom study -- I'm talking about a production-level operating system which can handle real-world task loads.

    Until such a thing exists for mainstream use, his comments are intellectually interesting but not really of much practical use.

    --
    Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
    The Theorem Theorem: If If, Then Then.
  121. Re:A Good example? by buckhead_buddy · · Score: 2, Informative
    misleb wrote:
    What true microkernel are/were there? ... OS X? Ok, I guess, but it is slow and no more stable or secure than any other Unix. In fact, I've had OS X machines crash far more than any Linux or FreeBSD systems I've used.
    Mac OS X is not a true microkernel architecture. Apple has a kernel plug-in architecture and allows drivers to run in kernel space which goes against true microkernel design principles.

    How can the average user see this? When "Software Update" runs, almost any update to the system (not updates to an Apple application like iTunes) will require a restart of the whole machine. In a true Microkernel design you might need to relaunch the Finder or restart the communications architecture, but unless something changes kernel space code you wouldn't need to restart the whole computer.

    The uptime command would give Apple proponents much more to brag about if it were a true microkernel, but beyond hardware abstraction I don't think Apple has the same needs for a microkernel architecture as others. Since that's the case, I don't think it's fair to hold it up as an example of the fatal sins of microkernels in general. Nor do I think dragging in your personal valuations of speed and stability are rigorous indictments of Mac OS X's performance either.

  122. Re:Tanenbaum is wrong, .... "Screaming Interrupt" by davidsyes · · Score: 1

    My first thought was... "windoze"... Maybe Linux needs to do more screaming... get more attention...

    (heheh... slash image word: "harmony"... LOL!!!)

    --
    Previously: "Linux... Toward the Sunrise..." Now: "Linux... Toward the-- No, now, part of Every Sunrise"
  123. Re:Feh. by AKAImBatman · · Score: 1

    I don't consider it a "hack to make a micro kernel faster", because the thing no longer is a micro kernel.

    I agree. I was merely pointing out that it was interesting how Apple picked up the kernel despite it's well known (and publicized) problems. I am neither saying it was a good choice or a bad choice. Merely that it was an odd choice.

    Mach was a research kernel that attempted to make Unix systems into microkernels. What it proved was that this was a poor path to take, and that microkernels need a very different style of architecture to operate well. A few years later, the L4 kernel started making headway into the type of microkernel architecture that *could* work. The result is that many of the Embedded OSes today are either microkernel in design or very similar to a microkernel architecture.

  124. Re:Feh. by Anonymous Coward · · Score: 0

    Impossible to pass bad messages, and then something doesn't go as expected and you have problems. You ALWAYS have to assume something is bad until you attempt to verify it. If not i would not consider it secure.

  125. Minix by Espectr0 · · Score: 2, Informative

    I have a friend who is getting his doctorate in amsterdam, and he has tanenbaum next door.

    Guess what he told me. A revamped version of minix is coming.

    1. Re:Minix by jpetts · · Score: 1

      Yes, but does it run on Linux?

      --
      Call me old fashioned, but I like a dump to be as memorable as it is devastating - Bender
  126. Re:Feh. by aristotle-dude · · Score: 4, Informative
    Yeah really. These tests were already debunked pretty much on the net already. I'm surprised people keep on quoting their "tests" for trolling purposes.

    There were several flaws in their tests:
    1. They used GCC 3.x compiler instead of GCC 4.x compiler shipping with Tiger because the linux distros they were comparing against had not updated to 4.x of GCC yet.
    2. They did not include the OS X specific patches to alter the threading mechanism. This caused a significant performance hit as MySQL was written for the linux threading model rather than a Mach one or more generic model.
    3. Binary builds with OS X specific patches were available for download via links from the official sites. There was no need to compile a crippled version.
    4. They should have also tested the free/evaluation versions of Oracle as there are optimized version available for both linux and OS X. Assuming this was not a test of only OSS but rather performance as a "server", I do not see why they did not include it.

    --
    Jesus was a compassionate social conservative who called individuals to sin no more.
  127. Re:Feh. by Anonymous Coward · · Score: 1, Insightful
    There was some attempt to address this in Mach 3

    Let me guess. They added more blades.

  128. Flaimbait??? by misleb · · Score: 1

    Why in the world is this modded flaimbait? It is a totally sincere and valid inquiry! I'm seriously looking for real world examples here.

    -matthew

    --
    "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    1. Re:Flaimbait??? by stinerman · · Score: 1

      If I had modpoints I'd mod you down for misspelling "Flamebait" twice in your post even though your original post clearly spells out the word for you.

  129. Mixing metaphors by PIPBoy3000 · · Score: 1

    Mixing metaphors, like oil and water, computer systems and ships, or Windows and Linux, should only be done by the fool-hearty.

  130. Re:Feh. by kurzweilfreak · · Score: 1
    Hey man, if you're into that kind of thing...

    Mmmm, birch...

    --

    kurzweil_freak

    5th Kyu Genbukan Ninpo/KJJR student

    Be the darkness that allows the light to shine.

  131. Re:Lessons on ID for csoto by hazah · · Score: 1
    So, basically, you just said the same thing he did. You're making the comparison between now and later, but see, when later becomes now the outcompeting species is still just "good enough" rather than "best". They just happened to be better than the others.

    Cheers

  132. Well done boys by packetmill · · Score: 0

    The "conversation site" site has been downed.

  133. Analogies are like... something. by Pfhorrest · · Score: 3, Insightful

    Yeah, you got to be careful with analogies.

    When it comes to security, imagine aliens trying to take over your ship...


    This has got to be the best juxtaposition of two sentences ever found on Slashdot.

    --
    -Forrest Cameranesi, Geek of all Trades
    "I am Sam. Sam I am. I do not like trolls, flames, or spam."
    1. Re:Analogies are like... something. by univgeek · · Score: 1

      You got to think of it from the perspective of the invasion ship's IT guy who has to prevent a four-limbed creature who's trying to infect his infrastructure with a Mac. :-)

      --
      All bow to his Noodliness!! His Noodle Appendage has touched me!
  134. Re:Feh. by JollyFinn · · Score: 1

    Compare that to a modern microkernel which can do same thing on itanium2 in 36 cycles, with warmed up caches.

    --
    Emacs is good operating system, but it has one flaw: Its text editor could be better.
  135. Re:Practice != Theory by OwnedByTwoCats · · Score: 1

    sealing off the compartments only to discover that water can overflow the top of one compartment and fill up the next.

    Wasn't there a ship that had this flaw? "Unsinkable", because of the compartments, but it sank, because the compartments weren't isolated from each other enough.

  136. Hah! Shows You What They Know... by eno2001 · · Score: 0, Flamebait
    What consumers expect from a computer is what they expect from a TV set: You buy it, you plug it in, and it works perfectly for the next 10 years. As IT professionals, we need to take up this challenge and make computers as reliable and secure as TV sets.

    This comment had me rolling on the floor laughing for hours. The days when you could buy a TV set, plug it in and it works perfectly for 10 years are long gone. And it's only going to get worse. EVERYTHING is being driven by the user these days which is why so many devices are disposable. Who keeps a cell phone for ten years? Could you even expect a ten year old cell phone to have a network to connect to? And now with the advent of HDTV BEHIND us (as in the 90s) we had HD sets that WON'T be compatible with future streams. So all those people who bought HD sets in the late 90s won't be able to use them ten years later. Not to mention that it's very likely that people buying HD sets today won't be able to use them ten years from now because the standards and industry requirements are shifting. How many of you out there bought HD sets that won't meet Windows Vista's security requirments and will have to settle for lower quality or NO output from "premium content" like HD-DVDs?

    Much like the consumer electronics industry, the software/OS industry is user driven. Possibly moreso. As long as the users are being made to *think* they need the latest features, security and reliability will ALWAYS take a backseat to performance. A lot of the "lastest features" rely on performance to pull off their magic. The day may come when there is enough horsepower to provide what people expect out of an OS with a Microkernel, but it's not here now and I really don't think it will be for quite some time.

    --
    -"...bad old ideas look confusingly fresh when they are packaged as technology" - Jaron Lanier (Digital Maoism on Edge.o
  137. If we are talking compartmentialization by plopez · · Score: 1

    Then the disucssion should also look at total vitualization, like on a mainframe. As the joke goes "the 70's called, they wanted their OS concepts back".

    If you are uncomfortable with mainframes, think VMWare running on a big piece of tin (multi way AMD64 box with lots of memory and a fast drive array) running several OSs hosting web servers, DB servers etc. If one virtual machine crashes, it is isolated so that it does not take down other OSs.

    Microkernal is not the only solution, or possibly the best for all applications. Other concepts are not only available but have been in large scale use for 30+ years.

    --
    putting the 'B' in LGBTQ+
  138. Re:Feh. by Anonymous Coward · · Score: 0

    "Therefore in a microkernel you can have a bug in your network stack without compromising your file system driver or authentication module, while this isn't necessarily true in a macrokernel."
    That's the problem right there. You can have bugs. Microkernels bring in a higher acceptance for bugs, which is something users don't want.

    I'm all for things like user-space drivers, because yes I'd rather not see my kernel crash over some badly written driver. But I'd even more prefer to see the driver written correctly to start with!

    It's getting harder as the kernel gets bigger. And maybe there are some lessons to be learned from microkernels now. But for today, kernel failures are unacceptable no matter their result.

  139. DragonFly BSD by mu22le · · Score: 1

    I think DragonFly BSD developers would agree with you.

    DF is not meant to be a pure microkernel (its aim is to get the best of both worlds, a la Amiga) and instaead of writing it from scratch (working on an unusable product for years) they started modifying the FreeBSD 4.0 kernel towards a modular architecture, but every release is stable enough to be used in a lot of pratical cases (if not as stable as a tipical BSD release).

    It's note really ready but you can take a look at it.

  140. Re:A Good example? by misleb · · Score: 1

    How can the average user see this? When "Software Update" runs, almost any update to the system (not updates to an Apple application like iTunes) will require a restart of the whole machine. In a true Microkernel design you might need to relaunch the Finder or restart the communications architecture, but unless something changes kernel space code you wouldn't need to restart the whole computer.

    The uptime command would give Apple proponents much more to brag about if it were a true microkernel,


    Well, that is very much oversimplified. Just because Apple requires a reboot doesn't mean that they necessarily updated active kernel space code. It is just that it is safer and easier to reboot the machine than to try to restart just the htings that were updated and hope everything goes OK. Perhaps if Apple was really all that concerned about uptime, they would do that. When I update my Linux box, on the other hand, I rarely require a reboot because the kernel is not updated very often and Debian is pretty good about restarting updated services. And if it doesn't, I can do it. I can even reload kernel modules if I have to. So why would I want to run a microkernel?

    but beyond hardware abstraction I don't think Apple has the same needs for a microkernel architecture as others. Since that's the case, I don't think it's fair to hold it up as an example of the fatal sins of microkernels in general.

    I'm not holding up OS X as an example of the fatal sins of microkernel, I'm trying to get at the real (not theoretical) advantages and some good examples. So far it is mostly theory.

    Nor do I think dragging in your personal valuations of speed and stability are rigorous indictments of Mac OS X's performance either.

    It is hardly a secret that OS X lags behind in various server oriented benchmarks.

    -matthew

    --
    "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
  141. Re:Feh. by Hugo+Graffiti · · Score: 1
    Oddly, NeXT (and later Apple) picked up the Mach kernel and used it in their products. Performance was fixed partly through a series of hacks, and partly through raw horsepower.

    No, Apple partly "fixed" it by making Mac OS X' kernel run in one big address space, and "message passing" in the kernel now consists of plain function calls.

    Not quite true. Apple inherited the monolithic Mach kernel from NeXT. NeXT in turn used the 2.5 version of Mach which was already monolithic (ie Mach and BSD were all munged together in the same kernel). More details on the history here.

  142. Re:Lessons on ID for csoto by Red+Flayer · · Score: 1

    No, the point is that without intervention into the system (say, by developing a currently unsuited species) the evolution concept doesn't work to maximum benefit.

    My point was that without development of unsuited species now, then they won't be there later. The entire dev line, gone, because the past iterations were unsuitable to the market at that time -- we've lost a lot of potential.

    It's a little different with biological evolution, since extinction doesn't truly exist in tech development. But by ignoring other dev branches because we fail to appreciate their potential, as in the OP in this thread, may mean that we end up with fewer viable alternatives, and therefore the JGE solution may not be as good as if we had full-fledged competitors from different dev lines.

    --
    "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
  143. Security, monoliths, compartments and Chernobyl by PavelP · · Score: 1

    RBMK reactor in Chernobyl did have separate compartments (called "channels") that were supposed to localize security problems. Guess what? Didn't help. Rather, building a huge monolithic containment structure is the method of choice for modern reactors.
    Both a microkernel "driver process" and Linux "driver module" can take down the whole system if the interfaces are not designed properly, or they can both contain the problem without major losses. Saying that "message passing" interface is much more secure by definition than any other one sounds too preachy.

  144. Re:Feh. by homer_ca · · Score: 3, Interesting
    You just described the fourth idea in TFA:
    The most radical approach comes from an unexpected source--Microsoft Research. In effect, the Microsoft approach discards the concept of an operating system as a single program running in kernel mode plus some collection of user processes running in user mode, and replaces it with a system written in new type-safe languages that do not have all the pointer and other problems associated with C and C++.
  145. Re:Feh. by moro_666 · · Score: 2, Interesting

    i have to agree on the rebooting thing.

    a microkernel can indeed be secure enough so that the system doesn't have to reboot for years, with a monolithic kernel and over a million lines of code, this is just a wet dream.

    infact, the microkernel if written well enough, can take a lot of updates, including updates to disk drivers or graphics drivers and stuff without restarting the whole system, so far the monolithic kernels have run flat on this feature.

    i would give away a few percentages of performance if the system will become more stable and will need less reboots. even bsd and linux boxes need to reboot every once in a while when some kind of new security thing is brought up or a critical fix has been issued, not all drivers can be reloaded even if they are only as modules (probably some hooks go way to deep in the kernel).

    however, until we have a nice usable microkernel system around, i'll stick with linux and freebsd, we can't just run our servers and desktops on hurd or minix out of the blue :)

    --

    I'd tell you the chances of this story being a dupe, but you wouldn't like it.
  146. Re:Practice != Theory by Anonymous Coward · · Score: 0

    Thank you thank you thank you. It is about time someone stated the obvious.

  147. Re:Feh. by Ulrich+Hobelmann · · Score: 1

    Oddly enough, modern microkernels (not the bloated beast Mach) like L4 can run Linux (L4-linux) with only 10% speed penalty.

    That's not really a reason to go monolithic kernel.

  148. Re:Feh. by jeremyp · · Score: 1

    "And for all the talk of how great microkernels are, I still managed to make my shiny new OSX G4 powerbook kernel fault a couple times in the first 4 hours after I got it home"

    The OS X kernel is not a microkernel. The Mach, BSD and device driver subsystems all share the same address space. OS X is exactly as monolithic as Linux and Windows.

    --
    All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
  149. Re:Feh. by aristotle-dude · · Score: 1

    Uh, NT is a microkernel.

    --
    Jesus was a compassionate social conservative who called individuals to sin no more.
  150. Re:Feh. by LWATCDR · · Score: 1

    "a microkernel can indeed be secure enough so that the system doesn't have to reboot for years, with a monolithic kernel and over a million lines of code, this is just a wet dream."

    I don't know about that. Are VMS and Z/OS both monolithic kernels?

    What I really don't like is this argument. It didn't work before so it can't work now, or ever.
    Back in 1983 if you suggested running Unix on a home pc they would have thought you where nuts. The idea of storing you digital copies of your movies on your computer insane! Run a network in your home? Why would you want that?
    With all this interest in virtualization who knows? Maybe a microkernel will be the way to go in the future. I just hope we keep looking at new ideas for OSs and UIs and not just settle for what is now good enough.

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
  151. Re:Feh. by diegocgteleline.es · · Score: 2, Informative

    NT is not a microkernel. Microkernels are supposed to mve things like drivers, filesystems, network stacks, etc, to userspace.

    Where does NT implements all that? In kernel space. A NULL pointer in that code brings the system down.

    Just because it was STARTED from a microkernel (like mac os x) doesn't means it's a REAL microkernel. How can you call "microkernel" to something that implements the filesystem in kernelspace?

  152. If only QNX had marketing by Animats · · Score: 1
    QNX has most of the technical problems of microkernels solved. We used it for our DARPA Grand Challenge vehicle, and we had a number of desktop machines running it for development, so I'm quite familiar with it. I wrote a FireWire camera driver for it (Manual Source code), entirely in user space. Pumping 640x480x30fps video at 30FPS through uses about 3-4% of a 1.5GHZ x86 CPU, despite all the "message passing overhead".

    The problem with QNX is its marketing. There's no good entry level option. A development seat costs several thousand dollars, and there's not even an posted price for it. You have to talk to sales reps. Once you've bought a development seat, you can crank out vast numbers of embedded devices using QNX, so it's priced for the volume manufacturer. So few people learn QNX unless they have to.

    Most Linux and QNX command line stuff has been ported to QNX. GCC is the main compiler. All the GNU command line tools work. You can even run Samba and Apache. X-Windows can be run, although it's not QNX's native graphics system. So conversion isn't that hard.

    For a brief period of two years, QNX tried to open up and get more users. There was an "Open QNX" effort, a "No Charge" version for noncommercial use, and a reasonable level of interest from the open source community. Mozilla was ported to QNX. Then, with no real announcement, QNX cut that program off. You can still get a 30 day free evaluation version, but you have to ask. After 30 days it will still run, but the development environment (Eclipse) turns off.

    Then QNX was acquired by Harmon International, the parent company of a range of audio companies. This resulted in 1) a focus on QNX for automotive "infotainment", and 2) abandonment of QNX by Harmon's competitors. Embedded users couldn't figure out where QNX was going, and many gave up. Lately, QNX seems to be making a modest comeback, but it's hard to tell.

    To be fair, QNX has survived in a tough market. They've been selling a proprietary OS that can run on x86 desktops for two decades, against Microsoft. Nobody else has stayed in business doing that. Microsoft attempted to acquire QNX at one point, to use it as "Windows CE", but was turned down.

    So it's a good technology, but the company drives you nuts.

    1. Re:If only QNX had marketing by Sloppy · · Score: 1
      So it's a good technology, but the company drives you nuts.
      Ah, that (in addition to the performance) must be why Amiga refugees found it so attractive. ;-)
      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
  153. Microkernels, snore by mlwmohawk · · Score: 1

    Seriously, this debate is so early 1990s. I've been developing software for close to 30 years, including a lot of embedded software and kernel drivers. The Microkernel debate is interesting, and the ideals it proposes are also good. The problem with Microkernels is that it puts up artificial barriers to functionality. It doesn't merely try to wrap functionality in a neat and clean and easy to use API. It attempts to force your development into an abstract model that has little to actually do with the way real computers work. Because of this, the slope is sufficiently steep and slippery for those "exceptions" to creep in quickly. This is, in fact, what happend to Windows NT. When it was first released, NT 3.1 was an attempt at a microkernel, but not only was it slow, but the mechanisms to manage shared subsystems were at best complex. Soon, people were working around the microkernel. By NT 4.0, the microkernel approach had been abandoned. This brings up a second point, a Microkernel depends on people coding to spec, which they will abandon quickly if the microkernel gets in the way. Andrew T is a great CompSi teacher, I'm sure, but as for practical matters, I think a clean modular kernel, while theoretically less reliable, in pactice show to be just as reliable. The think that kills most systems, Windows not included, is device driver failures, I don't care what you think, a Microkernel still has to access hardware, and as long as hardware is not perfect, the software that interfaces to it can not be either.

  154. Re:Feh. by AnalystX · · Score: 1

    XP and Server 2003 do utilize microkernel concepts which place them in the hybrid kernel category, but in no way is it a monolithic kernel.

  155. Restarting drivers by Sits · · Score: 4, Informative

    I'm going to weigh in over here mainly becuase my quiet slumber in the minix newsgroup has been disturbed by a call to arms from ast to correct some of the FUD here on Slashdot.

    Drivers have measurably more bugs in them than other parts of the kernel. This has been shown by many studies (see the third reference in the article). This can also been shown empirically - modern versions of Windows are often fine until a buggy driver gets on to them and destablises things. Drivers are so bad that XP even warns you about drivers that haven't been through checks. Saying people should be careful just doesn't cut it and is akin to saying people were more careful in the days of multitasking without protected memory. Maybe they were but some program errors slipped through anyway, bringing down the whole OS when I used AmigaOS (or Windows 95). These days, if my my web browser misbehaves at least it doesn't take my word processor with it, losing the web browser is pain enough.

    In all probability you would know that a driver had to be restarted because there's a good chance its previous state had to be wiped away. However a driver that can be safely restarted is better than a driver that locks up everything that touches it (ever had an unkillable process stuck in the D state? That's probably due to a driver getting stuck). You might be even able to do a safe shutdown and lose less work. From a debugging point of view I prefer not having to reboot the machine to restart the entire kernel when driver goes south - it makes inspection of the problem easier.

    (Just to prove that I do use Minix though I shall say that killing the network driver results in a kernel panic which is a bit of a shame. Apparently the state is too complex to recover from but perhaps this will be corrected in the future).

    At the end of the day it would be better if people didn't make mistakes but since they do it is wise to take steps to mitigate the damage.

    1. Re:Restarting drivers by FireFury03 · · Score: 2, Informative
      Drivers are so bad that XP even warns you about drivers that haven't been through checks.

      However, the driver certification program is to some extent a waste of time anyway:
      • When MS sign the driver they cannot test all execution paths - there are known cases where the driver manufacturers have put the drivers into a safe (read: slow) mode for the certification and then switched to a completely different (fast) execution path in real life - this makes the driver no more stable than an uncertified driver
      • Many driver writers don't want the time and expense of getting MS to certify each release of their driver, so they release uncertified drivers - a large chunk of drivers are uncertified and so will pop up the warning upon installation
      • Windows gives the users so many pop up messages anyway (made worse by the previous point) that the users just ok the message without reading it - an unread warning is worse than no warning at all since the user is no better off and you just annoyed them by making them click yet another box.


      I think a big part of the problem is that it really isn't worth the driver writer's development costs to make the drivers stable. There is often a rapid turnover of hardware so they need to keep revising the driver and so long as it's stable enough that the average user doesn't realise it's that driver that's to blame before the product is end-of-lifed then what benefit is it to the manufacturer to spend the extra cash to make the driver stable?

      However a driver that can be safely restarted is better than a driver that locks up everything that touches it (ever had an unkillable process stuck in the D state? That's probably due to a driver getting stuck).

      The D state _is_ a bug, and in many cases an example of lazy coding. It's the "oops something went wrong but we don't want to complicate our code by catching the error and cleaning up so lets put the machine into an unrecoverable state".

      For example, if you pull a USB mass storage device while it's mounted (a very silly thing to do, but it really shouldn't break the machine) then all the processes that try to access it will probably drop into the D state. There is no good reason for this - the filesystem driver has asked the USB block device driver to read or write some data and the USB block device driver _knows_ full well that the device has gone away so it should return a failure which the filesystem driver and catch and (after cleaning up locks, etc.) can return to userland as a failed operation. Unfortunately, rather than catching this error gracefully, either the block driver or the filesystem driver just gives up and goes to sleep waiting for an i/o operation that will never complete.

      In this case, the D state is no better than a user's application bombing out on an ASSERT() failure - something went wrong, we can't be bothered to even save the user's work to a recovery file, lets bomb out losing the lot - if that's not a bug I don't know what is. (Yes, I'm aware that data integrity can't be guaranteed in many cases but you should at least dump out the (potentially corrupt) data to a recovery file).

      At the end of the day it would be better if people didn't make mistakes but since they do it is wise to take steps to mitigate the damage.

      I think there is some truth in the "less risk increases lazyness" idea, but I do agree that mitigating the damage is more important than scaring coders away from lazyness.
    2. Re:Restarting drivers by sjames · · Score: 1

      Some of the behaviour is a mis-feature, (not a bug since the code DOES perform as expected, it's just an ugly behaviour).

      The most annoying is the case of NFS. I could put up with current processes getting stuck, but it always really annoyed me that I couldn't at least unmount it far enough to keep it from becoming an ever expanding tarpit of unfortunate processes.

      In the case of HD failure it's a bit more understandable since it BETTER be a rare event, but I'd still like to be able to get the bad drive unmounted (It MIGHT be just a scratch space I can live without for a while).

    3. Re:Restarting drivers by Anonymous Coward · · Score: 0

      Soft mounts have been available on the client side for more than a decade.

      man mount_nfs

      Pay attention to "-s" (or -o soft), -x (or -o retrans=). Operations on soft-mounted NFS filesystems fail with an error after a configurable number of retransmits.

      Some clients allow a mount update that switches a hard mount into a soft one, which will feed errors to processes that are otherwise blocked on endlessly retrying NFS operations.

      Some will also allow different softness/hardness for the mount operation and other operations ("spongy mounts").

      Finally, some NFS implementations allow mount time selection of operation interruptability. If interrupts are allowed, signals will interrupt system calls stuck in the "NFS server not responding, still trying..." state.

  156. As opposed to: by hummassa · · Score: 0, Flamebait

    whoa, let's reboot the machine... oops, it encountered the same bug it did before; reboot again; oops; reboot again???

    (IOW: if the bug is that persistent, you're hosed anyway.)

    --
    It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
    1. Re:As opposed to: by Anonymous Coward · · Score: 0

      The problem is that the system is likely in some state that triggers the SCSI driver to crash.

      For example, let's say that the filesystem queues up too many requests. If you restart the SCSI driver and resend the requests, the queue will probably be even longer by now, causing it to crash again. Your system is now in an infinite loop of restarting the SCSI driver, while you hope that it's not corrupting the disk every time it gets automatically reset.

      Or more likely, the filesystem sent a bunch of requests to the SCSI driver, assuming they would be fulfilled. When the SCSI driver crashes, the filesystem has no idea which requests were completed or not, and has not kept track of which ones were outstanding. Now your filesystem is consistent in-memory but not on-disk. When you restart the SCSI driver it will continue corrupting the filesystem even further. The only way around this is to restart the filesystem on that disk too (I hope it was journaled), meaning that it would probably have to invalidate any open files. If this happened while writing or reading your VM paging file, the system is almost completely hosed.

      dom

  157. Nah, the ship analogy works well... by Anonymous Coward · · Score: 0

    In fact...

    Full speed a-HURD! *ducks*

  158. A false dichotomy-Merits of history. by Anonymous Coward · · Score: 0

    "In other words, I'd rather have a microkernel than a monolithic kernel, but I would rather have a monolithic kernel that does what I need (runs my software, runs on my hardware, runs fast) that a micokernel that sits in a lab. It is more realistic to ask for a kernel that is more microkernel-like, but still does what I need."

    By your criteria, your arguing more for the past, than the merits of micro vs monolithic. I suspect that treating the OS like a shim works well in theory, but difficult in practice, with little transparency.

  159. That's unfair by MrHanky · · Score: 1

    Everyone knows that Celine Dion was the one who sank the Titanic.

  160. analogy with govt? by bzipitidoo · · Score: 1
    A microkernel is like a herd of govt agencies, like the CIA, FBI, NSA, FEMA, and branches of the military. They have a reputation of communicating with one another poorly and slowly. In contrast, a monolithic kernel is like the Department of Homeland Security. Um.

    A few years ago, I gave some microkernels a try. I couldn't figure out how to assemble Fiasco. L4Linux installed, apparently, but halted on a kernel panic during boot. I twiddled with some kernel options, but never did get L4Linux to boot. I didn't have time to really dig in and figure things out, so I moved on. Is there a useable microkernel OS people can try? Darwin, perhaps? Is that personal use only QNX worth a look?

    And anyway, just how important is this whole issue? I run various Linux distros and don't have much trouble with bugs and malware, certainly not enough trouble to justify spending lots of time investigating alternatives like microkernels. There's SELinux, and I've fiddled with it briefly. If I used it, SELinux would just waste my time. I'd be wrestling with SELinux's miserable policies and pathetic tools for editing same. When setting up a device, it's quite enough work configuring kernels, drivers, users, group membership, basic rwx permissions, cron jobs, networking, and so on, and looking at log files, error messages, and Internet search results on same without having to wonder if in addition to all those other possible problems, SELinux permissions are a cause. I have yet to encounter a situation where SELinux would've helped. Granted, I'm not running a large secure network for multiple users. But I don't see a whole lot of adoption of security improvements such as SELinux, or reliability improvements such as microkernel architectures. I think security researchers, like pretty much any proponents of a basic philosophy, overestimate their value and underestimate their costs. Most of us on Slashdot feel the extra bother of Linux is worth it, compared to Windows. But most users, if you can get them to even try Linux, feel otherwise the instant they discover they can't just install some software they want to use-- usually because there isn't a Linux binary. We Linux users are always having to work around these problems. Want Macromedia Shockwave because your favorite website requires that? Sorry, there isn't a native Linux version of that. And, no, the performance hit of running the Windows version in WINE was too much on a lowly Pentium II. Tax software? Nope. Game software? Go directly to Windows, do not pass Go and do not collect $200. All these sorts of difficulties with relatively popular Linux would be orders of magnitude worse in some obscure microkernel based OS. Windows is to OSes as the x86 architecture is to microprocessors. They suck in many ways, but they have a lot to recommend them. Ask why OS/2 lost out to Windows.

    --
    Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
  161. Wikipedia link to Titanic by this+great+guy · · Score: 1

    Thanks for that link, I had never heard of "Titanic" before !

  162. ukernels are hard to code by Jon+Kay · · Score: 2, Insightful

    I played alot with AmigaDOS, a message-passing OS (it was a port of Tripos, an early research message-passing OS), as a teenager. That experience cured me of message-passing interest, because I found myself spending 75% of my time dealing with message-passing coding rather than dealing with the underlying hacks I was trying to perpetrate.

    Not only did one have to write more code to make an MP call (comm overhead code), but the bugs had a way of showing up in that snippet and being harder to debug. The tiniest change in a driver's interface meant an hour of coding, vs the ten minutes I saw later for BSD Unix. At that, I was lucky. If I'd been dealing much with nontrivial synchronization and threading, I expect I would've seen more like the factor of ten coding slowdown I've always seen dealing with threading problems (and to be fair, most ukernel code doesn't have to either, it's just that there are more threads, more sync points, and thus more potential for trouble).

    The basic problem is that modularization is a largely orthogonal problem from threading, address spaces, or messaging. If you split up modules into different threads, then now you don't just have to solve modularization, but you also have to solve threading, messaging, and address space problems, too. Now, address space separation seems like it might save some debugging troubles, and in fact, successful "monolithic" operating systems in fact deliver the simplest form of that. I've been a little surprised that attempts to push farther on that like Electric Fence or multi-address-space OS' with traditional system call architectures have gone nowhere. But they have, so the difficulties must exceed the return somehow.

    Thus, I haven't been surprised to see ukernel project after ukernel project fail. The idea is at least forty years old, and has seen many smart people try to take it on - if a ukernel was going to succeed broadly, it would've happened by now.

    If you like ukernel OS' even after reading this, I say go try one, and try hacking something in. Just watch how much time you spend actually writing code implementing the hack vs MPI / threading drudgery.

  163. Bad memory and bad hardware cause weird faults by Sits · · Score: 1

    I agree with the previous comment. Memory that has gone bad, memory being run at a speed it can't cope with, overclocked machines, undercooled machines, overstretched PSUs etc all cause weird and intermittent problems (see this Linux kernel developer's note on hardware that results in weird problems). If you are binary driver free and still having strange intermittent lockups I'd definitely test the memory for a day with Memtest and start swapping bits of hardware out.

  164. Re:Titanic by sirket · · Score: 1

    An even better question is why the fuck are you browsing the web with an account that has permissions to install software? You don't browse the web from your Linux box as root do you? No you don't but people happily browse the web as administrator on a Windows box and then wonder why things go south. If you let the average user onto a Linux box with root privileges I doubt it would last a week.

    Although I hate Microsoft- don't blame them for the incompetence of a stupid admin. I've worked with plenty of companies to set up Windows networks where no one has admin (or even poweruser privileges) and you don't find any spyware infestations.

    -sirket

  165. Exokernels are the solution by Anonymous Coward · · Score: 0

    Exokernels are far more secure than either microkernels or macrokernels, and they have better performance. Mainframes have used exokernels for a long time. I don't know why everybody in the PC world ignores the best solution to OS architecture.

  166. Re:Feh. by Andrew+Tanenbaum · · Score: 1

    It's obvious that the reason people resent Minix is that it came from outside of the free software community, rather than that it is in any way inferior to Linux (it isn't in any way, except for in polish). I'm tired of $lashdot's LINUX4EVER FUD.

    Even RMS can agree that microkernels are superior - the GNU operating system itself is using Mach in its Hurd microkernel.

  167. Is it a hardware problem? by obender · · Score: 1
    Could some hardware oriented slashdotters shed some light on this: why is there no further compartimentalisation done inside the kernel? Why should a driver be able to destroy memory areas that have no relevance to it? A fault in the driver should be signaled to the calling code rather than break everything.

    I see a similar thing with running processes. A bad library can bring down the whole process.

    Is is too expensive to associate a different set of privileges in hardware for every driver in the kernel?

    1. Re:Is it a hardware problem? by Sits · · Score: 1

      This is what microkernels try to do by forcing things through message passing (as much of a driver as possible runs in a different lower priviledged address). However to actually get at the hardware you HAVE to have the top level permission This seems to be just down to current architectures having various rings of security.

      Further, some drivers of hardware need access to bits of memory that overlap with the memory of other processes or the kernel itself thus providing room for stomping over someone else's stuff.

    2. Re:Is it a hardware problem? by Wesley+Felter · · Score: 1

      Mondrian memory protection (also see Mondrix) has been suggested as a hardware solution to this problem, but hardware tends to change very slowly.

  168. Security in microkernels - Symbian view by metal_priest · · Score: 1

    People keep mentioning QNX and VxWorks as if there are no other popular microkernels.
    There is another commercial microkernel, EKA2(derived from EKA morphed from EPOC) used as a base for Symbian in current/upcoming generations of Nokia and Sony Ericson smartphones. Given that the phones run on low power CPUs, symbian performance is pretty good. Since it is a microkernel the current EKA2 generation has an extensive(and simple) security model where every process is marked with a privilege such that security-crucial servers can easily ignore IPC from servers deemed to be less secure.
    This feature of isolating various processes in the system without serverely restricting the APIs would be very difficult to model in a monolithic kernel.

    Additionally because Symbian is based on a microkernel architecture, there is very little coupling between system components, so one can replace the filesystem, ip stack, etc, without recompiling the kernel avoiding the need for vendors to maintain giant patches and having to fix them with every new release as is done with linux.

  169. SELinux isn't really compartmentilisation by Sits · · Score: 1

    First up SELinux is really for userspace not the kernel (I'm fairly sure once loaded drivers aren't affected by SELinux). Secondly SELinux isn't so much a set of compartments but rather a set restrictions saying in a fine grained way what a program should and shouldn't be doing down to seemingly a syscall level, who it's allowed to talk to and so on. I'd argue it goes beyond mere isolation...

  170. The unsinkable Kernel-Just add water. by Anonymous Coward · · Score: 0

    "It also should be noted that for some insane reason, the Titanic crew didn't counterflood."

    Oh, gee. A large amount of water coming in. And someone suggesting, "Hey! Why don't we let even more water in?" Is your hat on too tight?

    1. Re:The unsinkable Kernel-Just add water. by tenchiken · · Score: 2, Interesting

      You miss the point. The problem was that the Titanic was overtopping the vertical dividers that were designed to keep areas os the ship isolated in case of a accident. If it were a issue with a total failure along the entire ship, then yes, counterflooding would be bad. The idea is to minimize when the tipping occurs to keep the ship slowly sinking, instead of rapidly sinking when the barriers were overtopped.

      Engineering estimates is that it might have added 3-5 hours onto titanics lifespan, enough to save lives, even if not enough to preserve the ship till help arrived.

    2. Re:The unsinkable Kernel-Just add water. by Anonymous Coward · · Score: 0

      "You miss the point"

      No I didn't. I mearly chose to look at the situation as the people on the Titanic would have seen it. The problem your "point" forgets is that it's easy to see and judge the past from foresight. The past doesn't have that luxury.

  171. Re:Feh. by Anonymous Coward · · Score: 0

    1. Seriously, I doubt gcc 4.0 gives any serious performance improvements for mySQL. I could be wrong of course, so perhaps you could back-up that statement?

    2. Link to patch maybe? Proof that it does improve the situation? Besides, it looks like it is slow at that level. http://www.anandtech.com/mac/showdoc.aspx?i=2520&p =7

    3. See previous.

    4. I think you are thinking of a different set of tests, they don't bench Oracle in that link.

  172. back to core wars . . . by hawk · · Score: 1

    > take a look at Linux's block layer, where you can switch to different
    >I/O schedulers at runtime (echo foobar >/sys/block/hda/queue/scheduler);
    >and then you can insmod and rmmod ioschedulers at runtime aswell.

    But I don't want to die. Please, no! I don't want to be rmmodded for another scheduler. I'm only fifteen milliseconds old!

    Oh, wait. *I'm* the scheduler. I'm just not going to schedule that rmmod ans insmod. *cackle* Let's see Mr. User deal with *that*! :)

    hawk

    1. Re:back to core wars . . . by jadavis · · Score: 1

      I'm just not going to schedule that rmmod ans insmod.

      First off, the disk scheduler is not the same as the process scheduler. However, I suppose it does need to read those programs from disk if they are not already in memory.

      You make an interesting point, but I think you miss the point of a microkernel. User processes are not priviledged by the hardware (i.e., they do not run in supervisor mode). But many user level processes are still logically priviledged. Consider that there are many programs that must be run as root. They are still user processes, but they are being run as the user "root", which can do more than the user "joe". So, the process scheduler or the I/O scheduler may be user processes, but you still must place some trust in them to do their job (just as you trust the root-owned user mode processes to do their job).

      The benefit is that things like drivers aren't as likely to interfere with other important kernel processes.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    2. Re:back to core wars . . . by hawk · · Score: 1

      >You make an interesting point,

      Uhm, it was a joke.

      hawk

  173. Re:Feh. by Kristoph · · Score: 1

    Of course this is not true!

    I work for a company that sells product to Fortune 500 IT shops and I can assure you that this is _absolutely_ true. Why? Because the CPU utilization of an average enterprise system is 5%. Increasing that utilization to 10% (that would be a 100% performance overhead) for increased security is a no brainer.

    ]{

  174. Re:Feh. by jacksonj04 · · Score: 1

    I thought you added an extra layer between kernel and user space to hold all the microkernel components?

    That way no matter what goes down in userspace, and even if it brings down a kernel module with it, there's two layers still working which can restore the system.

    --
    How many people can read hex if only you and dead people can read hex?
  175. Re:Hah! Shows You What They Know... by cyborg_zx · · Score: 1

    I don't know why you're modded flamebait. Seems like an insightful comment to me.

    Clearly it is in the interests of manufacturers to make their older systems obsolete so they can sell the next generation. The only way to do this is to create wants rather than needs. And clearly anything that is not worth the effort to implement because it will not help the next generation of products to sell will not get the most attention.

    So as you say security takes a back seat because it just doesn't drive consumer wants. Presumably some great security disaster in the future might change the consumers perspective but when people seem content to accept that reinstalling Windows is a way of life I'm not sure that's going to happen any time soon.

  176. Depends on your definition of OS by Sits · · Score: 1
    Don't mean to be facetious, but the micro-kernel has very little to do with the security of the OS.

    Well I do mean to be pedantic because doesn't "the security of the OS" with respect to micro vs monolithic kernels depend on your definition of OS?

    If you meant kernel then I would say microkernels have a chance of being even more secure than monolithic ones assuming all other things are equal because any given error is more likely to be confined in a place where it can do less damage when compared to a monolithic kernel. So I'd say it has a sizeable role in security.

    If you meant OS as in "kernel and base userland utilities" then I'd argue things like code security audits and ideas like SELinux would play a big role because you are now mitigating non-root user security problems too. Even so I'd say kernel security still plays more than a "very little" role in OS security.
  177. Genius by Anonymous Coward · · Score: 0

    Decentralize what is centralized, centralize what was decentralized. The man is a management genius!

  178. In practice, the overhead is tolerable by ^Z · · Score: 1

    Read about Minix 3 two-thirds into the article.
    They claim it to be less than 10% slower compared to a monolithic kernel. You can check for yourself -- Minix 3 is freely downloadable now (minix3.org), they even provide a live cd.

    --

    Computers make very fast, very accurate mistakes

  179. It's not only realistic -- IT WORKS! by Anonymous Coward · · Score: 0

    Have you ever used QNX? Did you know that on QNX you can shut down and restart a hard disk driver while the system is running? You might do this to upgrade it, or to recover from some sort of catastrophic failure... or because you are debugging a new driver.

    You can also shut down and restart a *video driver*, or a network driver, or almost anything else.

    EVERYTHING should live in user space and EVERYTHING should be protected from everything else. File systems, network stacks, display devices, mouse drivers---EVERYTHING. There is a *very small* performance penalty for this (typically <1%) if the system is designed right. Mach and most other so-called microkernels developed in the 80's were NOT designed right, which is why they perform so poorly.

    Only the very smallest bit of functionality needed to let userland processes communicate and synchronize with each other while still being protected from each other, should be in kernel space. Even things like address space or thread construction can (and should) be delegated to user-mode processes. Interrupts should be handled by the microkernel by turning them into IPC messages to user-mode processes (this can be done with very low latencies, i.e. a few dozens of cycles). See L4 or QNX Neutrino or other modern microkernels.

    Mach is an abomination that gave microkernels a bad name. But Mach is 10 to 100 times slower at interprocess tasks than "true" microkernels can be. This has been proved not just in theory, but in practice by L4 and others. Microkernels can and must be small. That is the only way they can have the necessary performance.

  180. I have an idea... by Pedrito · · Score: 1

    Tannenbaum has a theory on how Linux should be done. Well, personally, I don't believe his theory can be put into practice, at least not without some serious tradeoffs in overall complexity and more importantly, performance. So here's my proposition: Andy, write that new kernel and show us how it's done. I look forward to seeing it.

  181. Nooks isn't a microkernel by Sits · · Score: 1

    I'd just like to point out the Nooks extension isn't a microkernel (it's "just" an extension to Linux). Is your point that Nooks won't catch enough errors and that microkernels will take over as a result? That doesn't seem right given your earlier SCSI and AGP comments though (however, I am going to argue that major subsystems aren't going to be where most of the bugs are - most bugs are in the drivers (go on make a reply talking about drivers locking up the bus ;))

    1. Re:Nooks isn't a microkernel by ink · · Score: 1

      It was a quote from the article; it's interesting that "Nooks" appears to be affiliated with both projects. Thanks for the tip.

      --
      The wheel is turning, but the hamster is dead.
  182. Does Minix run on Linux? - Kinda by Sits · · Score: 1

    Minix runs on Xen (and Xen can be part of Linux).

  183. Re:Titanic by Kristoph · · Score: 1

    It is widelly believed that the reason the Titanic sunk was because certain flood doors in the engine compartment were open. So, in fact, the reason why it sunk could be attributed to lack of isolation of the compartments. :-)

    Also, you know, I am not sure there is a kernel anology to "ice berg tore along the side". ;-)

    ]{

  184. Re:Feh. by Anonymous Coward · · Score: 0

    Dude, you have to pass on some of that stuff you are smoking...

    Seriously, you advocate running the OS on top of a (software?) VM that will check each and every access to ensure that only valid operations are allowed. Just one catch: this is exactly what "ring 0" is, and it's done in hardware. Now tell me how your VM is going to be faster.

  185. Re:Feh. by diegocgteleline.es · · Score: 1

    What are microkernels supposed to do? Move things to userspace

    What does NT do? implement everything in kernel space, including stuff that does not really need to be there, like the graphics subsystem and the window manager.

    I fail to see where the "microkernel concepts" have been left. NT and Mac OS X are great examples of how to turn a pure microkernel into a monolithic kernel.

  186. Credibility? by olddotter · · Score: 1

    Sorry, but who thinks Andrew Tanenbaum has credibility as a visionary after his 1992 discussion with Linus?

    I'll beleive Microkernals are the future IFF Linus decides to rewrite linux as a microkernal.

    Otherwise microkernals remind me of the bureaucracy in large companies. If I can get 5 or 6 hours of real work done a week, its a GOOD week. The rest of the time is dealing with, or fighting mindless bureaucracy. I don't want to handicap my computer the same way. If I wanted it to be slow, I'd run windows.

  187. Re:Feh. by Anonymous Coward · · Score: 0

    I'm an OS X fanboy too but a least I'm honest. MySQL sucks performance-wise on OS X. That is a fact. I wish it weren't so. OS X strength is not in speed but in user experience. There are always tradeoffs. In the OS X case, speed is traded for a better user "look 'n' feel".

  188. Message Passing Performance by oddRaisin · · Score: 1

    I'd think there comes a point where code separation and performance have to be balanced. Performance would be great, but I don't see people rushing to make the internet one big token-ring network. Routers and firewalls provide separation and security with minimal impact to performance.

  189. Re:Feh. by AKAImBatman · · Score: 1

    Posts like this make me weep for the loss of Computer Science knowledge in the world today. This question is so incredibly munged, I'm not sure whether I should laugh or cry.

    Ring 0 is the same thing as bounds checking? Not even close. Ring 0 is the lowest permission area of a system, usually the area reserving the right to change the TLB. The MMU enforces the memory boundaries.

    The VM is supposed to check accesses? No it isn't. It's supposed to translate "safe" code without direct memory accesses into well-behaved native code.

    I'm just in shock.

  190. Re:Feh. by Fordiman · · Score: 1

    Yeah. No one else has either.

    --
    110100 1101000 1101000 1100110 0 1101111 1101000 1100011 1
  191. BSD by Anonymous Coward · · Score: 0

    I hate to break it to you but OS X has lumps of BSD in its non-GUI bits. If it weren't for free software...

    Plus part of the reason why that all important monolithic BSD subsystem doing lot of wonderful stuff is precisely for speed reasons. Would OS X be slower without that BSD subsystem? Why not just emulate the syscalls using XNU?

    However, I'm somewhat surprised that you say Linux isn't monolithic. Just because it has LKMs doesn't make it less monolithic. I'm not even sure what your "be thankful that you can use modules in linux without recompiling all the time" comment is about. If you update your (main) kernel you will be more or less forced to recompile any modules (Linux really isn't binary module friendly). There are only a few small cases where you don't have to.

    But yes, nice get out the end ("everything has advantages and disadvantages" - it's hard to disagree there) although that's a bit of a truism.

  192. Re:Practice != Theory by Schraegstrichpunkt · · Score: 1
    In practice, what good does it do when restarting a crashed filesystem server process means that all the real user programs crash because their file descriptors have become invalid?

    Well, it makes it harder for the filesystem server to, if it's compromised, mess with ssh-agent without being detected. I'd much rather that my system crash than that my unencrypted SSH key gets sent to some script kiddie halfway around the globe.

  193. Re:Titanic by Fordiman · · Score: 1

    Actually, I do. But then, in linux, browsers have no way of installing/running remote binaries on their own.

    And no. I don't let the average user on my linux box with root priveliges. But I personally like to be in charge of my machine. On my windows box, I can almost smell when there's spyware near. It's seriously gotten so bad a problem that I think I've developed an extra sensory organ for it.

    --
    110100 1101000 1101000 1100110 0 1101111 1101000 1100011 1
  194. Re:Feh. by jadavis · · Score: 2, Insightful

    But I'd even more prefer to see the driver written correctly to start with!

    Microkernels actually may help with that as well. If it is very obvious to the OS -- and to the user -- which drivers are crashing, that will provide incentive for the hardware vendors to write drivers correctly. Right now there is no accountability, so as long as the whole system works most of the time, users will buy it. But with microkernels, if new hardware comes out and you have review sites saying "That hardware driver is crashing left and right", users won't buy it. Nobody can point fingers anymore.

    In particular, nobody will point fingers at MS Windows when the real problem is crappy 3rd party drivers.

    --
    Social scientists are inspired by theories; scientists are humbled by facts.
  195. Re:Feh. by aristotle-dude · · Score: 1
    How about signing up for an account?

    Here are the official compiler flags for OS X as well as a performance hint for heavy loads:
    http://dev.mysql.com/doc/refman/5.0/en/mac-os-x-10 -x.html

    Here is some discussion on the issue and how performance could be affected by programs written with a focus on linux which does tend to take short cuts for the sake of performance.
    http://ridiculousfish.com/blog/archives/2005/06/03 /mystery/

    I think you should reread what I wrote. I was wondering why they did not include Oracle in their test suite. Perhaps, they did not include it because it performs better on OS X than linux and they were writing with a pro-linux/anti-OS X slant?

    --
    Jesus was a compassionate social conservative who called individuals to sin no more.
  196. Re:Feh. by Fordiman · · Score: 1

    That's kinda the point of my post; microkernels, though 'easier' to maintain, are far more difficult to design - and almost always unbearably slow. Apple, as you said, has the exception with some dirty hackwork.

    Meanwhile, VMs, and virtualization: the industry keeps touting these as ways to utilize more of your servers or some shit, and I don't buy it. Ok, theoretically by running several virtualizaed servers you can get a couple more nines of uptime (one vServ crashes, the other stays alive), but that won't stop a slashflood from bringing that server to its knees (both vServs working their hardest can still only serve roughly 90% of the requests that a fully native server could - less when you factor in shared caching and such). It's marketing hype as far as I'm concerned; paying for a VMWare license for each of a server farm could not possibly be more expensive than building the server farm with actual servers.

    Driver protection: This is always a trade-off. If the drivers are in kernel space, they're faster, but it's harder to keep them from killing your kernel. If they're in userspace, it's far more stable, but you take the comms-performance hit. It's actually the same tradeoff you get in Mono vs Micro kernel.

    The fact is, Microkernels will never become mass-marketed (apple aside). People want speed, and don't really go for security and stability. That's not to say L4, Mach and even Amoeba aren't the future of the server market for the very same reason - L4, for example, does the best job of isolated machine virtualization of any VM implementation I've seen - I just don't think they're going to get anywhere on the desktop. At least, not until this thing can think faster than I can.

    --
    110100 1101000 1101000 1100110 0 1101111 1101000 1100011 1
  197. I LOVE YOU by Anonymous Coward · · Score: 0

    MARRY ME!

  198. Re:Feh. by Fordiman · · Score: 1

    *raises eyebrow*

    *looks at my penguin fileserver*

    Are you gonna take that Pengu? He just called you a wet dream! Go over there and smack him around a bit!

    (Pengu is a fileserver I built three years ago, turned on, and have not yet turned off or rebooted. It runs Linux 2.4.x, Samba, nmbd, dhcpcd, apache, and little else)

    --
    110100 1101000 1101000 1100110 0 1101111 1101000 1100011 1
  199. Re:Titanic by m50d · · Score: 1

    By not giving the user permission to do this. When there is essentially no boundary between system and user programs, your access control system that stops the bluetooth drivers giving a local root (real example from linux) can equally well stop processes that have no need to from opening sockets.

    --
    I am trolling
  200. Re:Feh. by Anonymous Coward · · Score: 1, Informative

    Nope, you'll still need the MMU for 2 reasons.

    The obvious one is to provide paging.

    The other one is so that processes run in their own address spaces.

    One of the other posters mentions the Microsoft research kernel written in C# (plus constraints). Apparently Tannenbaum does that as well. While this is an interesting system, it's also a SASOS (single address space OS). Which (in a real environment) has the major drawback that any process can DOS the whole system simply by (over) allocating memory. To prevent that you need processes to run in their own address space. If you do that you need some mecanism to transfer memory pages between processes (aka messages), and you have to make a context switch when you cross address spaces boundaries. And if you do that it doesn't matter that some of your systemn is in ring 0 and the rest in ring 3, you'll incur the cost anyway.

    That's not to say that there's no merit in writing (most of) the OS in a higher level language and putting the JIT compiler in there as well, thus allowing code to be safely (-ish) uploaded in the kernel (with the associated speed benefits), but a) that's hardly a microkernel approach, b) you'still run the bulk of the code in user land, and c) it's most definetely not new. Look up exokernel.

  201. Re:Practice != Theory by Fordiman · · Score: 1

    Oh, if only we'd built the ship with five million and one hulls!

    --
    110100 1101000 1101000 1100110 0 1101111 1101000 1100011 1
  202. Re:Titanic by jadavis · · Score: 1

    How is kernel compartmentalization going to protect against users installing spyware and doing things they're already authorized to do?

    Through isolation, it allows you to recover a lot more easily. Sure, you can install bad stuff, but if everything is more isolated you can mitigate the damage and recover 100%.

    I think that the main thing you're looking for is paravirtualization, either through something like Xen or a microkernel. That's a great form of isolation.

    --
    Social scientists are inspired by theories; scientists are humbled by facts.
  203. Re:Feh. by AKAImBatman · · Score: 1

    That's kinda the point of my post; microkernels, though 'easier' to maintain, are far more difficult to design - and almost always unbearably slow.

    No, I said that early Microkernels have that problem. L4 and QNX exhibit none of the performance issues seen in the earlier Mach work.

    Meanwhile, VMs, and virtualization: the industry keeps touting these as ways to utilize more of your servers or some shit, and I don't buy it.

    Your point is neither here nor there. This particular bit of research is about system security and stability, not about system utilization.

    Driver protection: This is always a trade-off. If the drivers are in kernel space, they're faster, but it's harder to keep them from killing your kernel. If they're in userspace, it's far more stable, but you take the comms-performance hit. It's actually the same tradeoff you get in Mono vs Micro kernel.

    It's actually the exact same thing. Most kernels today exhibit Microkernel tendencies for some types of drivers. FUSE, for example, is (IMHO) the greatest Linux invention ever.

    The fact is, Microkernels will never become mass-marketed (apple aside).

    QNX isn't mass marketed? How about Symbian? Apple aside? I must be missing something.

    L4, for example, does the best job of isolated machine virtualization of any VM implementation I've seen - I just don't think they're going to get anywhere on the desktop.

    Using something like L4 for the desktop has very little to do with the Microkernel design, and everything to do with legacy support. The cost of building a new desktop environment today is incredibly high. As a result, every OS makes a best effort to run some form of existing software base. In the case of Linux, FreeBSD, OpenSolaris, MINIX, etc. that would be the Unix software base. ReactOS goes for the Windows software base. OS X tries for a combination of Unix, NeXT, and Mac software. No one is trying to build a brand new software base. Too much risk.

  204. twoddle by Anonymous Coward · · Score: 0

    I see the BSD'ers are in town AGAIN frell you stick your strange ideas where the sun don shine

  205. Micro may be a better choice for Free Software by andrew71 · · Score: 1


    I find if funny how nobody ever seems to wonder if the microkernel architecture, being more structured and organized, may be a better choice when it comes to Free Software and its development model.

    I think it's quite an interesting point of view and worth some discussion, at least here.

    --
    13-4=54/6
  206. Re:Feh. by Anonymous Coward · · Score: 0

    Can't do, you smoked it all already :-)

    It's faster because if you rely on the VM do memory protection, *and* you're in a single address space OS (see my other post), then you don't need to do a context switch when do a system call (or any IPCs, for what matters). Potentially much faster, assuming your JIT compiler is up to snuff, obviously.

  207. It was built 10 years ago (or more) by Anonymous Coward · · Score: 0

    QNX and many other production systems have the properties you describe.

  208. Re:Feh. by petermgreen · · Score: 1

    and its almost certain that it has several major kernel exploits unpatched.

    its not long period running without updates thats the issue, its having to take down a macrokernel because something needs to be swapped out (e.g. for a security patch). There are ways to work arround this with linux (if its a module just unload it and replace it otherwise write a module to do in memory patching) but they are far from gauranteed to work (in particular i belive the module interface is rather picky about compiler versions matching)

    --
    note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  209. Wise Idea by Anonymous Coward · · Score: 0

    You avoid sinking the ship by blowing it up before it has a chance to sink. You also counter terrorism: by blowing the ship up as soon as a known terrorist sets foot aboard, you prevent any act of terrorism before it is carried out.

    To put it another way, you're so far off track, I don't even know where to start explaining the difference between Treacherous Computing and a microkernel.

  210. Re:Feh. by AKAImBatman · · Score: 1

    Nope, you'll still need the MMU for 2 reasons.

    No you don't.

    The obvious one is to provide paging.

    Only if you want to peform naive 4K paging. Since that's a REALLY bad idea in a garbage collected system, the VM should be made to do the work. By adding a few statistics to object usage, the VM can be tuned to page out memory at either the object level or heap level. (Some VMs have their heaps broken up into different generations and processes. This makes them acceptable candidates for paging.) When the VM decides that more RAM is required, it can swap out the objects in memory, then replace their reference with a page fault routine. The next time something calls that missing object, the software fault will be executed (without an interrupt!) to reload and run the missing object.

    While this is an interesting system, it's also a SASOS (single address space OS). Which (in a real environment) has the major drawback that any process can DOS the whole system simply by (over) allocating memory.

    I don't really see the issue. Memory is allocated to each process as requested. There's nothing stopping the OS from cutting off as process as it deems necessary. Java already has the OutOfMemoryError mechanism in place.

    a) that's hardly a microkernel approach

    My point was that it can work in conjunction with the microkernel approach. i.e. Separate your system services into different processes that are protected from accessing each other. The same address space is then useful for the VM-based OS to transfer messages between processes without incurring any overhead.

    b) you'still run the bulk of the code in user land

    You'd run ALL the code in userland. Which is the point.

    c) it's most definetely not new

    I didn't claim it was new; merely that it was my favorite concept. I've been harping on it for years, but the research community has been working on it much longer. The idea is actually fairly obvious and has occurred to quite a few people independent from myself AND the bulk of research.

  211. Re:It's all theory until we have a working example by evilviper · · Score: 1
    I'm talking about a production-level operating system which can handle real-world task loads.

    You mean we need an example like QNX or OpenVMS?
    --
    Slashdot gets worse every day... Pipedot: News for nerds, without the corporate slant
  212. The thing is...Explosives hurt. by Anonymous Coward · · Score: 0

    "The analogy is actually quite apt: more watertight security leads to decreased usability, but a hybrid system (Titanic's) can only delay the inevitable, not prevent it, and nothing really helps when someone is lobbing high explosives at you from surprise."

    The day someone starts lobbing high explosives at my OS, is the day I get out of computers.

  213. multicompartment isolation, and security by magetoo · · Score: 1
    OK. So lets get to the meat of the argument, which is that message passing micokernels are slow by design and still prone to failure if a critical userland device driver process dies.
    Slow ... yes, I suppose you will always take a performance hit.

    If a userland device driver dies; in that case the microkernel would continue to run just fine... I'd say it's entirely possible to design the system so that all critical services could be restarted. But I'm being a smartass.

    Further, please show me how security is improved. If a userland process (say a shell) elevates privileges to root, how is this any different from a monolithic kernel based system?
    Well, if you have a "root" user that can exert absolute control over the system, then - surprise! - you're screwed. How does a monolithic kernel protect you from a privilege escalation exploit in the shell?

    Possible MK advantage, though:
    I am not a security expert, but isn't the idea of having a super user considered A Bad Idea nowadays? Isn't more fine-grained security the way everyone is heading?

    If so, it seems reasonable to use those "newfangled" techniques (i know, they're not new) to control access not only to applications on the system, but to the system servers themselves.

    That privilege escalation bug in the shell? Still there, except now you can have hard separation between servers intended to interact with users, and critical system servers. And the only privilege you can escalate to is "user is able to start/stop the GUI and network". I'd consider that an improvement.

    Feel free to tell me why this wouldn't work. Like I said, security is not my area of expertise.

    1. Re:multicompartment isolation, and security by maynard · · Score: 1

      As others have pointed out in this thread, the gain from a userland device driver process is not always so clearcut. There are many nasty circumstances wherein it is just as impossible to safely shutdown a userland device driver running under a microkernel as it would be in a monolithic kernel. IOW: for the stability gain in some circumstances you sacrifice the overhead involved with message passing. One person pointed out that QNX has a particularly elegant message passing system, which improves performance. I haven't seen it so I can't rebutt.

      As to whether fine grained privileges help this situation, there are always circumstances where an administrator needs full access to system level privileges. These could be limited to single-user on boot for the most severe repairs, but then you're sacrificing uptime. On a production server, that could be a nightmare scenerio. OTOH: if there is only a single user who has full administrator privileges, then a remote exploit is still possible. Even with fine grained levels of administrators privileges, this fact doesn't solve the problem. If you have a door with a lock, there must always be a key to unlock that door. If you have a building with several doors and locks, there is always at least one master key.

      Who gets that master key can't prevent the fact that the master key exists and in the hands of a criminal damage is the result.

    2. Re:multicompartment isolation, and security by magetoo · · Score: 1
      I'm not sure what you mean by "nasty circumstances". Broken hardware? Nothing can guard against that (except redundancy). A program holding file descriptors and unflushed data when the file system/network has crashed? I expect that is a solvable problem, similar things has been solved before. A buggy driver writes all over the disk? (Well, MK design doesn't protect against bugs, it just limits their scope.)

      Privileges. I propose to get rid of the "single user that has full administrator privileges". And there is not always a single master key for all buildings, not if the building is supposed to be secure.

      Anyway, I don't think we're going anywhere. Agree to disagree?

    3. Re:multicompartment isolation, and security by maynard · · Score: 1

      "agree to disagree?"

      Yeah, fine. I'm not itching for a fight here. There was an interesting counterpoint post that described certain features for reducing context switching between the send/recieve pass in the QNX scheduler that appeared interesting. Show me the money and I'll change my mind. But so far I just haven't seen these microkernel systems perform well under high load.

  214. Useless by paragraph 2. by Harik · · Score: 1
    This rhetorical question points out a nasty little secret that we in the computer industry do not like to discuss: Why are TV sets, DVD recorders, MP3 players, cell phones, and other software-laden electronic devices reliable and secure but computers are not?
    Well, that was the fastest I've been able to determine "I don't need to read anymore." I've seen in a while. Embedded software is the shittist, most bug-laden crap I"ve had to ever deal with. From cellphones that spontaniously turn off, crash, or delete your address book to DVD players that freeze up and require powercycling to keep watching the movie, software sucks.

    Also, MP3 players and Cellphones and DVD recorders _ALL_ have "Emergency Updates" to fix bugs, but there's no mechanism to inform the user of this, except for the occasional cell network that sends you a "please update now!" SMS.

    He's right. They're just computers running programs. Why can't they just work? Because software engineers really, REALLY suck at writing good code. Is it that unimaginable that scaling up to the complexity of an operating system with tens of also large programs interacting may have more problems? Apparently, it is.

  215. You shouldn't have ACd, because by hummassa · · Score: 1

    your answer makes sense, even if you are completely wrong :-)

    For example, let's say that the filesystem queues up too many requests. If you restart the SCSI driver and resend the requests, the queue will probably be even longer by now, causing it to crash again. Your system is now in an infinite loop of restarting the SCSI driver, while you hope that it's not corrupting the disk every time it gets automatically reset.

    Or more likely, the filesystem sent a bunch of requests to the SCSI driver, assuming they would be fulfilled. When the SCSI driver crashes, the filesystem has no idea which requests were completed or not, and has not kept track of which ones were outstanding. Now your filesystem is consistent in-memory but not on-disk. When you restart the SCSI driver it will continue corrupting the filesystem even further. The only way around this is to restart the filesystem on that disk too (I hope it was journaled), meaning that it would probably have to invalidate any open files. If this happened while writing or reading your VM paging file, the system is almost completely hosed.


    Scenario #1: when the disks went whacko, I would expect (besides trying again) that the server sends a "cancel" message to every pending-i/o process, and let the apps recover.

    Scenario #2: the error is in the "assuming they would be fullfilled". If the SCSI says "I fullfilled your batch", then it's fullfilled, not before.

    Scenario #3: disk error on swap partition: the affected processes are killed.

    --
    It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
  216. yeah... by penguin-collective · · Score: 1

    Current operating systems have two characteristics that make them unreliable and insecure: They are huge and they have very poor fault isolation

    And the reason is simple: they're written in C. And they will continue to be huge and have very poor fault isolation even if they become microkernels, as long as the programming language is still C. Fault isolation needs to be provided at the language level so that every object is isolated from every other, not just a bunch of bigger chunks, and so that you can do recovery without restarting a whole subsystem.

    On the other hand, it matters less and less. Kernels may be big and ugly and hard to maintain, but there isn't a lot of functionality that should go into the kernel that isn't already there, and current kernels are pretty stable thanks to the enormous efforts of their maintainers.

    So, Tanenbaum has identified most of the problem, but he is prescribing the wrong remedy.

    Of course, there are no good, widely used languages that you can currently use. Well, to be specific, C# would be a decent language for a modern kernel, but none of the current implementations are up to the taks. Maybe we'll get a static "gcc#" compiler eventually and that might be suitable for the next generation kernel. Or maybe a simple statically compiled Java subset, similar to embedded Java, with some unavoidable unsafe extensions.

    1. Re:yeah... by aneeshm · · Score: 0

      Maybe Lisp/Scheme would fit the bill ?

  217. ROTFLMAO!!! That made my day! by galvanash · · Score: 1

    Thanks for that :)

    --
    - sigs are stupid
  218. Micro-kernel architecture has advantages... by Famanoran · · Score: 1

    That's why IOS-XR on the CRS-1 is micro-kernel based. If any components fail or need to be restarted it can happen without affecting the rest of the system.

    I don't see a whole lot of security advantages WRT micro vs. monolithic, but I do see huge advantages with availability. Mmm - remember the CIA scale?

    Granted, there are security wins too, but there are also losses.

    I don't really see much use /for me/ for a microkernel on my desktop - yet. Of course, 10 years ago I wouldn't have thought that my laptop would have 1gb RAM or a fingerprint reader...

  219. How to make it happen! by QuantumG · · Score: 1

    Rather than declaring microkernels are the shit and then sitting down with a blank piece of paper and designing a microkernel architecture, how about using one or more of the dozens of microkernel-like technologies available for Linux to evolve to a microkernel architecture? We already have the technology to run Linux drivers in userland.. if it's not up to your desired microkernel-ish-ness then extend it and make it better.

    --
    How we know is more important than what we know.
  220. Re:Feh. by heinousjay · · Score: 1

    You're pretty much dead wrong. You shouldn't rely on anti-Microsoft zealots for technical information about Windows. Window manager in the kernel indeed.

    --
    Slashdot - where whining about luck is the new way to make the world you want.
  221. Cue the peanut gallery redux. by Inoshiro · · Score: 2, Interesting

    "Fact: OSX is sooooo slow that the only thing it is faster than is OpenBSD. And you cant even blame its slowness on it being a microkernel. How pathetic... Wow, that says it all in my book :)"

    Actually, OS X was within a few percentage points of Linux on all hardware tested; actually outperforming it on memory throughput on PowerPC and some other tests. It's also faster than NT.

    "But there are ALWAYS situations where it is going to be desirable for seperate parts of an OS to directly touch the same memory in a cooperative manner, and when this is the case a microkernel just gets in your damn way..."

    I fail to see how L4's shared-memory is somehow magically different from Linux's shared-memory. Once you let more than 1 process have access to a page via a TLB mapping, it's all the same.

    --
    --
    Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
  222. A jackass is me by heinousjay · · Score: 1

    I can admit when I'm wrong. I'm wrong. I apologize.

    I trust my memory too much sometimes, and I should have done the research before I hit submit.

    Mod appropriately.

    --
    Slashdot - where whining about luck is the new way to make the world you want.
  223. Ahem by Anonymous Coward · · Score: 0

    Indeed - and what if a critical driver decides to go looking for the dodos? take the GP's examples: a disk driver. Then what would you do for live debugging, pray that someone still has a running root login? keep a permanent root login on a serial console in a high-security safe for the Times of the Kernel Panic? Some drivers should simply not fail under real-life scenarios - there are times and places for debugging, but a live server is not it.

    On the other hand, I completely agree that the damned display driver should NOT bring down the whole kernel when it decides to start making fashion statements about blue being the new black. So where does that leave me? Apparently promoting the highly subjective theory of the reasonable compromise (aka middle ground) Now excuse me while I go trying to figure out how to take over the world^W^W^W^W^W^Wthe details of my vision for 'compromise' and 'middle.'

  224. Re:Feh. by AnalystX · · Score: 1
    "What are microkernels supposed to do?"
    Keep critical processes in userland which is what hybrid kernels do.
    "I fail to see where the "microkernel concepts" have been left."
    Uh, message passing.
    "What does NT do? implement everything in kernel space"
    No. Just like other hybrid kernels, it only runs typical microkernel and noncritical (non-microkernel) processes in kernel space and passes messages to critical processes running in user space. Therefore, it isn't a monolithic kernel.
  225. Argument never ends (nor gets more interesting) by OnanTheBarbarian · · Score: 1

    Meh.

    After so many years, the fact that the microkernel guys can't seem to get around to delivering a (non-embedded) system that:

    (A) has decent performance - beyond microbenchmark measurements and the usual ridiculous "we stuck a monolithic kernel on top of it and only took a n% performance hit paper" that every microkernel group trots out every few years. Well, duh. That's because you've stuck most of the complexity into a single address space and are only calling your wondrous microkernel API every now and then. This predicts nothing about what would happen if all the services in the system were split up into lots of user-space services, nothing at all.

    (B) supports (natively) _any_ API that anyone cares about, so real measurements could get taken (see (A), above),

    (C) actually demonstrates a practical system that can keep working despite user-space failures, deadlocks, resource starvation, etc. That is, you need to show us a system that can allow people to continue to do real work with actual applications when important drivers fall over. A system that can restart its graphics, storage, input device or network drivers is one thing - a system that allows you to keep working despite these failures is quite another.

    I see fragments of all of the above here and there, but the failure of microkernels to deliver on their hype suggests to me that their advantages aren't enough to overcome the entrenched advantage of monolithic kernels. Maybe microkernels are better - I suspect they might be - but overall, the advantage just can't be that much. It's been a couple decades, and the chief output of microkernel research groups is still position papers about how great microkernels are and the odd microbenchmark.

  226. the DMA engine(s) by r00t · · Score: 1
    "So, if a user mode driver were allowed to access the DMA engine used for the USB-Bus-transfers (typically located outside the cpu, and thus using physical adresses), there is no way to prevent him from overwriting random physical adresses, and thus most sensitive kernel data structures."

    In case you or others don't realize it...

    The original PC had a standard DMA engine used by every device. One could design a microkernel that operated this securely, assuming a 286 processor or better.

    The modern PC has PCI busmastering. This means that every PCI device gets to be a DMA engine, with no standardized way of operating. Secure DMA operation requires device-specific code. Every driver must be trusted, or must be awkwardly split into trusted and untrusted parts.

  227. Macs by Watson+Ladd · · Score: 1

    Mac users have had one ever since OS X. It's called Mach. Darwin is a port along with some userspace tools to x86.

    --
    Inventions have long since reached their limit, and I see no hope for further development.-- Frontinus, 1st cent. AD
  228. QNX doesn't qualify because it can't by r00t · · Score: 1

    No OS running on PC hardware can overcome this problem. You'd need a full virtual machine at minimum.

    The same applies to Mac hardware and probably all RISC workstations.

    Perhaps some mainframe hardware is exempt, especially if you consider the virtual machine system to be a sort of microkernel.

  229. Re:Feh. by TummyX · · Score: 1


    VM that will check each and every access to ensure that only valid operations are allowed


    Uh no. VMs have verifiers that *statically* verify that code can't do anything unsafe. Verifying dynamically whilst the code is running is not required except for some things like array accesses and even then, many of those checks can be removed.

  230. Re:Lessons on ID for csoto by csoto · · Score: 1

    You also don't understand evolutionary theory. There is no such thing as "maximum benefit." There is only "good enough" (and therefore still around and surviving) and "not good enough" (extinct).

    Only "academics" (in the pure, pejorative definition) bother themselves about which is the "perfect" operating system. Meanwhile, imperfect species (Windoze, Linux, etc.) continue to thrive. Tannenbaum is the definition of an academic.

    --
    There exists no way of exchanging information without making judgments. --Bene Gesserit Axiom
  231. Re:Feh. by Anonymous Coward · · Score: 0
    nobody will point fingers at MS Windows when the real problem is crappy 3rd party drivers.

    Lovely piece of drive-by astroturfing there. You should get a bonus!

  232. Other better examples of microkernel by mcoon · · Score: 2, Informative

    For an even better example of what a microkernel can do, have a look at the L4 kernel: http://os.inf.tu-dresden.de/L4/LinuxOnL4/ where the kernel, designed in assembler + C++ has some decent performance stats run by IBM. The short version is that a linux personality on an L4 microkernel costs a 3.8% performance penalty. When you consider that this persnality that is being tested has in no particular way been tuned to fit the L4 kernel, this 3.8 percent penalty for another kernel under linux doesn't seem that bad. Infact, one wonders, if it were tuned, how much faster would it be?

  233. VxWorks??? No. :-) by r00t · · Score: 1

    VxWorks just recently discovered the MMU. Prior to that, every regular old app could monkey with the kernel.

    Now it's a bit more UNIX-like.

  234. not unique to OpenBSD by r00t · · Score: 1

    Get a copy of Fedora Core 5. Write an app that prints out memory addresses of various things. Compile the app as a DSO for best results. Run the app.

    You'll have a damn hard time finding anything not randomized, and a damn hard time finding anything executable that need not be executable.

  235. Re:Feh. by aristotle-dude · · Score: 1

    Well, you could get the free version of Oracle. You can administrate it with Aqua Data Studio.

    --
    Jesus was a compassionate social conservative who called individuals to sin no more.
  236. Re:Feh. by HeroreV · · Score: 1
    What was the key problem with these kernels? Performance.
    Exactly. Microkernels are inherently slower, even if not as slow as some people think they are. Currently I am not willing to give up that much speed in exchange for stability. Microkernels will probably take over eventually, but for now I still don't think computers have gotten fast enough. Current low-end PCs struggle and stutter just to run Windows XP, KDE, or Gnome.

    But I am a bit mystified as to why microkernels aren't more popular for situations where stability is very important and lots of speed is available, like web servers. What's the deal with that?
  237. The fragility are addressed by Simon+Garlick · · Score: 1

    English, motherf*cker, do you speak it?

  238. 4.4 million lines? Nope by Anonymous Coward · · Score: 0

    Actualy, the MS kernel is much smaller then that. He should have to prove otherwise.. like showing source and how he "found out" that fabricated number.

  239. microkernel wouldn't save you by r00t · · Score: 1

    ATI's video driver has one reason to exist: control the video card

    That video card has the capability to write to any location in memory, completely bypassing memory protection. Any code that is capable of operating the video card is also capable of trashing the kerrnel, no matter if it is a microkernel or monolithic kernel.

    Depending on ATI's hardware, the driver can probably lock up the entire PCI bus system (PCI, PCI-X, AGP, PCI-E, C-PCI, etc.) or burn 100% CPU time on a screaming interrupt.

  240. Re:Feh. by AKAImBatman · · Score: 1

    Microkernels are inherently slower

    No, they're not. Early microkernel projects like Mach were. But there's nothing slow about L4 or QNX.

    Microkernels will probably take over eventually, but for now I still don't think computers have gotten fast enough. Current low-end PCs struggle and stutter just to run Windows XP, KDE, or Gnome.

    Believe it or not, that has more to do with locking and paging than it does CPU. Your CPU is capable of well over 1 billion cycles per second. Does that tell you anything? It should. Your CPU can do whatever the windowing system needs as long as it's being utilized. The message passing architecture of microkernels are intended to make that a reality by removing much of the overhead inherent in today's locking systems. I can't attest yet if they're there yet (there really aren't any large scale implementations), but I can say that Macs don't seem to have near as much trouble with stutters as other systems do. Could it be the message passing architecture? Possibly.

  241. Re:It's all theory until we have a working example by Richard+Steiner · · Score: 1

    QNX is a good example, but it doesn't have much of a presence in the desktop or mainstream server spaces. It's hard to compare its performance when it's busy powering elevators or whatever it does well. :-)

    OpenVMS might be a better example. Who runs it, and where? I thought it was mainly a hobbyist operating system?

    --
    Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
    The Theorem Theorem: If If, Then Then.
  242. open source minimizes impact by Anonymous Coward · · Score: 0

    As "ships" are sunk...the open source nature of the kernel allows the defect to be quickly identified and patched...the sinkings are quickly haulted, sunken hulls patched...then refloated....

  243. L4/Hurd by The_Dougster · · Score: 1
    L4/Hurd has been experiencing massive development for more than a year now. Developers have been integrating CoyotOS and ErOS features into L4/Hurd quite prolificaly. The mailing list for L4/Hurd typically has 20 new messages each day now, and sometimes more.

    I'm an old skool type programmer, I can handle normal C programs, but microkernel level hacking is way beyond my skills. I have made minor contributions to old Debian Hurd inasmuch as sending patches upstream to get things to compile, but I am quite limited right now in my ability to contribute.

    Lest you think I'm some kind of weird hairy Hurd hippie, I assure you that I have a magnificantly optimized Gentoo Linux install, and I'm a degreed mechanical engineer. I follow L4/Hurd development because: its cool, I think it may be graspable, and it may have industrial applications (real time, etc.).

    If you want to throw you hat into the microkernel ring, look into L4/Hurd. It is the latest and greatest microkernel OS in active development and has excellent potential to become a new contender in the OS wars.

    Linux is neat, but you can possibly make a difference if you help hack on L4/Hurd, assuming you are a decent programmer.

    --
    Clickety Click ...
    1. Re:L4/Hurd by Anonymous Coward · · Score: 0
      L4/Hurd has been experiencing massive development for more than a year now.
      If by massive development, you mean 2 guys cranking out a total of about 500 lines of code, then you are correct. 99% of the talk on the L4/Hurd mailing list is just that. Talk. Of course you know that L4 isn't going to be used. So even those 500 lines are going to disappear. The Hurd could have been something interesting/usable, but its currently been 20 years of vaporware.
  244. Re:Feh. by HeroreV · · Score: 1

    Too bad QNX is proprietary. L4 does look pretty promising even if there doesn't seem to be much real world usage. However, according to a section about GNU Hurd at gnufans.org, L4 is deprecated, whatever that means in this context. Why can't any good opensource microkernels ever seem to get off the ground?

    I'll admit that the example about Windows XP/KDE/Gnome was a pretty crappy example though. I don't see me CPU usage consistently skyrocketing from the windowing system. :b

  245. Re:Feh. by throbber · · Score: 1

    Oracle's License explicitly forbids publishing benchmarks.

  246. why? by sentientbrendan · · Score: 1

    seriously. Saying "won't people please write a microkernel, they are so awesome" isn't particularly compelling.

    The fact is, we have kernels right now that do what users want them to do. The things that Tannenbaum talks about are nice, but even *ignoring* the performance issue, it isn't worth throwing out the linux, osx, or windows kernel to get them.

    The fact is, the place where hardware with crappy drivers exists is in the places where we care the least, the desktop market. Stability was a big issue for me when my desktop crashed more than once a day, under os9/windows 9x, but now that I'm seeing a genuine kernel panic maybe once a year, I could care less. An improvement on that would be totally lost on me.

    Now, I suppose you could write a kernel specifically for systems that actually need incredibly long uptime, but what are those systems? Servers? Well, people using those systems typically pick their hardware pretty carefully, either that or they come up with fault tolerant designs like google.

    A more compelling promise, is that moving more stuff out of kernel mode will increase security.. Even then, we're talking about targeting a much smaller demographic than "everyone that uses a computer." Probably the best people to write such a kernel, would be IBM, or Sun... but last I heard they had already invested heavily in other operating systems.

    So, in summary, it sounds like nice technology, but the market *really doesn't want it right now*. Probably the idea, if it is at all still relevant, will be incorporated as a matter of course into the next series of operating systems that come out... 10 or 20 years from now. It would be nice if Tannenbaum was still around to see that, but the guy can't force the market forward by himself.

  247. Andy picks another fight by IDontLinkMondays · · Score: 1

    Well, here's the deal. I've read the kernel source to MINIX several times out of interest. I really consider Andrew's book to be of the highest importance for computer science majors for several reasons. The most important reason I've ever had is simple. A developer, system or application or otherwise should never be allowed to write a single line of code without having at least a reasonable grasp of how the computer will handle the code. This means it's critical for any educated developer to have taken at least on course on operating system engineering as well as one course on microprocessor design.

    I am also a fan of requiring that students take a course on compiler design as well. Sadly, noone has taken the LCC book and expanded it into object oriented languages yet. I feel that understand vTables are a minimum requirement for anyone learning to program these days.

    That said, here's my bone to pick with Andy. (I use the name Andy when I'm in the mood to insult him).

    Stability and Security of microkernels is obviously easier to maintain. This is fact, after all, the simple fact that typically device drivers and even memory allocation systems occur in a protected area (Ring 1,2, or 3 for Intel guys, user mode for unix people), the performance hit taken by microkernels is more than I'm willing to sacrifice. I would rather work with a monolithic kernel that is actively debugged rather than a microkernel that I feel is typically limited by the excessive protection layer boundary calls.

    Yes, this has been argued time and time and time and time again. But let's get something clear. Linux performs extremely well. At a kernel level, Windows also performs extremely well. At a kernel level, microkernel operating systems such as Mac OS X, Mach-Linux, QNX, etc... are just not up to par. There are some good theories as to why, in many cases, it can be boiled down to the development time spent on each system. Microsoft employs people to constantly profile their kernel. Linux has guys that like the fame and glory of being the kernel profiler, etc...

    But the problem we can clearly see is the cost of a cross-protection ring boundary call.

    I'll explain why this is a problem in a very clear and simple reasoning that is undisputable (except by the typical Slashdot reader and of course our favorite group of people such as myself that thinks they can show off their pee-pee size by making comments in favor or contradicting something called undisputable). And mind you, I already know there's a huge group of you in the microkernel lover community (after all a good microkernel is the shangra-la of computing) that hate my guts for saying it. But mind you, I am also a microkernel fan, but my undisputable fact is the reasoning that I prefer monolithic.

    Intel (x86, Itanic), Sun (Sparc), DEC (when they produced Alpha), SGI (MIPS), HP (when they produced PA-Risc), IBM, and more than anyone else, ARM (who somehow sells their crap simply by focussing on battery consumption), all give a crap less about microkernels.

    It's true, when I was also a microkernel fenatic, I searched for the perfect microkernel platform. After all, it would be the greatest thing in the world to find a processor that would be perfectly suited for a microkernel, alter a compiler to focus on its' strengths, and make a microkerel run on it. But here's the bitch of it. The cost of a mode switch to make a huge number of cross protection boundary calls would be far too large.

    There are some microkernel architectures that focus on "same ring" communication between tasks and modules, but this in my oppinion is as equally weak of a design as the monolithic kernel when referring to the paper mentioned. The strength of the microkernel architecture regarding security and stability is the protection. When elimitating the protection between tasks or kernel modules, the added stability and security no longer exists. It it 100% necessary to broker all transactions through a kernel level broker to get this security and stability that

  248. static checking vs. dynamic checking? by hanwen · · Score: 1

    Off on a tangent: I don't understand the argument that a minix style microkernel would be more reliable to code. I concede that a MK will have smaller, easier to understand, and more obviously correct separate modules.

    However, who is interested in the reliability of each separate component? We want the whole thing to be reliable, not its components. I would say that all the possible interactions between different server processes will make it an order of magnitude harder to verify. For example, how could you run Coverity on a multi-process kernel?

    It seems to me that one of the approaches that AT covers in his paper (Singularity), is just taking the method of combining Linux and static checking to its logical extreme.

    --

    Han-Wen Nienhuys -- LilyPond

  249. NCSC B1 ratings by Anonymous Coward · · Score: 0

    Actually, the NCSC did give B1 ratings out lightly. B1 is NOT a high security rating!!!!!

    B1 is frequently described as security with training wheels!

    B1 systems were not significantly more difficult to break than lower rated or even unrated systems.

    B2 was the first level with any serious security in it, and B2 was only "medium-level". Serious penetration resistence didn't start until B3 and above, and B3 required absolute minimization of the amount of code within the Trusted Computing Boundary (TCB). That's Orange Book speak for a very small TCB, which in some circles might be called a microkernel.

  250. Bait for a new book I bet by ebvwfbw · · Score: 1
    Sounds to me that he is trying to get interest in a new book. Lets not let him take us back a good 30 years, again. He has wasted enough of our time already. He had his chance. He should be happy with it. He can always work with GNU-Hurd. Something that is already out there. I'm sure he won't though, it isn't his.

    Not a troll, stating it as it is.

  251. Re:Feh. by moro_666 · · Score: 1

    so you are missing the security updates for 3 years on the kernel. way to go dude :D

    i second the first reply to your comment. you have to update your gcc from time to time, just to go along with new stuff. this means you are not able to build modules for your old kernel anymore that would be compatible with it. kindof you can fork off the old gcc just for the kernel thing, this will work for a while but probably not forever.

    imho many of the builtin items of the kernels (that were specified as (Y), not modules, but are still modules by design and don't make the kernel hardly depend on them) should be reloadable. if i start up the machine from an ide disk and i get an update for the ide/ata channel driver, i should be able to update it without restarting the whole machine, just freeze the associated processes, unhook driver, attach new one, reattach hooks. ofcourse this adds overhead and some complexity, but booting a machine that shouldn't be stopped can be very expensive sometimes.

    --

    I'd tell you the chances of this story being a dupe, but you wouldn't like it.
  252. How is that radical? by nathanh · · Score: 1
    The most radical approach comes from an unexpected source--Microsoft Research. In effect, the Microsoft approach discards the concept of an operating system as a single program running in kernel mode plus some collection of user processes running in user mode, and replaces it with a system written in new type-safe languages that do not have all the pointer and other problems associated with C and C++.

    How is that radical? It sounds exactly like a Lisp machine.

  253. Re:Lessons on ID for csoto by Red+Flayer · · Score: 1

    I understand perfectly. But technology is not a purely evolutionary system, and JGE is not an acceptable goal -- which is why I referred to ID in my response.

    If you couldn't understand what my point was WRT biological evolution theory vs. technological evolution, I'll try to explain differently. There is no reason to settle for JGE when we have the resources and ability to work on other dev lines that may yield better than current 'JGE' results. Or, rather, it would raise the bar of 'Just Good Enough'.

    --
    "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
  254. Give him some award or something by yoprst · · Score: 1

    This guy spends decades ranting about exactly the same stuff.

  255. Re:Feh. by Anonymous Coward · · Score: 0

    Lovely piece of drive-by slander there. You should get a cookie.

    Seriously, NT/XP can be pretty darn stable with no dodgy hardware and drivers in it.

  256. Re:Feh. by Fordiman · · Score: 1

    if i start up the machine from an ide disk and i get an update for the ide/ata channel driver, i should be able to update it without restarting the whole machine, just freeze the associated processes, unhook driver, attach new one, reattach hooks.

    Unfortunately, almost every process would be associated. Still, this is possible in Linux. You can freeze processes, you can build the IDE drivers as modules (make sure they're in initrd!), you can modprobe/rmmod drivers that are in use. The tricky bit is detaching/reattaching the hooks. I don't know how that's done. Still, it should be possible using Linux's modular kernel.

    Hell, there are a couple kernel mods that allow for writing user-space drivers... doesn't this make Linux, in fact, a hybrid kernel, rather than monolithic?

    --
    110100 1101000 1101000 1100110 0 1101111 1101000 1100011 1
  257. some corrections by Anonymous Coward · · Score: 0

    "those who can't do, teach"

    I get tired of seeing this adage misused. You use it to mean "those who can't do [because they lack competence], teach [since they aren't good enough]".

    Your contempt for Tanenbaum is noted.

    The appropriate use of this adage is this: "those who can't do [because they are injured, absent, or otherwise incapacitated], teach [thus remaining meaningfully involved, even though they can't otherwise participate]".

    According to you, Tanenbaum is either lying, bald-faced, or is incompetent to the extent he's reached incorrect conclusions. I concede that either or both are possible, but not that either is likely.

    I must ask what you've done for the benefit of The World in comparison to what Tanenbaum has done. He has spent years asking relevent questions, seeking proof, disproof, counterexample, etc. and contributed meaningfully to the understanding of computing theory as well as stirring meaningful debate and awareness in the active computing community. I suspect that your contribution has been some proprietary code and some Tanenbaum bashing.

    Research scientists are (in the majority of cases) brighter than those in industry (in the majority of cases). Remember that Tanenbaum is a professional scientist first, and a professional "professor" second (unless he's decided to become a "lecturer" and persue textbook writing, as you insinuate). Perhaps I can adapt that oft abused adage thus: Those who can't research, merely maintain the status quo.

    1. Re:some corrections by r00t · · Score: 1

      The reference, intended to be about incompetance, does not necessarily apply to Tanenbaum. It more likely applies to his audience. Tanenbaum does indeed persue textbook writing in a BIG way, and he certainly knows to supply what his audience demands.

      Tanenbaum will remain easy to bash until he acknowleges that microkernels solve minor problems while creating serious problems. I don't think he can do this and still retain credibility with the out-of-touch theorists who specify his books for classroom use.

  258. Singularity by r00t · · Score: 1

    Singularity certainly is a neat idea. I have my doubts about the wisdom of an OS built on a language that allocates and frees memory behind the programmer's back, but the idea certainly is neat.

    Too bad Singularity isn't freely available. Perhaps it could succeed if it were.

  259. Re:Titanic by shaitand · · Score: 1

    "An even better question is why the fuck are you browsing the web with an account that has permissions to install software?"

    My experience has been that a privaledge escalation is the norm when browsing the web with IE. Although it is worth mentioning that Microsoft ships windows configured to create ONLY an administrative account by default and is by taking that action recommending ALL users to use that account. Microsoft is responsible for all the flaws in windows and microsoft software and is therefore responsible for all the spyware that is installed via a browser in the first place. They are also responsible for those aforementioned priv escalations since those are flaws as well. They are responsible for the consequences of running with admin privs since that is their recommended configuration for their software.

    On linux I have browsed the web as root before. For the first 6 months using linux on my HOME system I did so. I didn't see any spyware or virus problems. Why? Because I wasn't using a Microsoft program to browse the web. Like I said, you can see almost this result on a windows box if you use firefox to browse the web just like you would on linux.

  260. Re:Feh. by shaitand · · Score: 1

    You seem to have confused performance with cpu utilization. Performance is the result of responsiveness of ALL the hardware. On a webserver that means how fast a page loads when I punch in the ip. It doesn't matter that the act requires almost no cpu. Memory management, network performance, disk throughput, etc all factor together to get 'performance'. A microkernel means an OVERALL decrease of 30%. There is also more to the world than fortune 500's (they are the least significant parties in my opinion) there are database servers, web servers, processing clusters, home systems, small business systems, file servers, print servers, etc.

    None of those systems will be fast enough until there is no noticable delay between any request and its completion. Since we aren't there yet, systems couldn't really be anymore reliable than the current macrokernel systems that only go down due to hardware failures and planned maintainence, and microkernels offer only theoretical benefits in areas that aren't a problem now. I'll keep voting Macrokernel.

  261. Re:Feh. by Halo1 · · Score: 1
    I agree. I was merely pointing out that it was interesting how Apple picked up the kernel despite it's well known (and publicized) problems. I am neither saying it was a good choice or a bad choice. Merely that it was an odd choice.
    I guess the main reason was human capital: they got a lot of people from NeXT who knew that kernel inside out.
    --
    Donate free food here
  262. Got a few things to say about this debate... by Rudd-O · · Score: 1

    and I've done so in my own site.

    --
    Rudd-O - http://rudd-o.com/
  263. Re:Lessons on ID for csoto by TemporalBeing · · Score: 1
    If you couldn't understand what my point was WRT biological evolution theory vs. technological evolution, I'll try to explain differently. There is no reason to settle for JGE when we have the resources and ability to work on other dev lines that may yield better than current 'JGE' results. Or, rather, it would raise the bar of 'Just Good Enough'.
    However, JGE will always be JGE - and regardless, people will buy JGE when it works instead of paying more for the better than. For example - this is how Microsoft became so large - they produced a lot of products that were intertwined that were all JGE. Microsoft has not desire to be better than because better than costs a lot more, and they want the money. It's a capitalist economy (pure/partial/whatever) and that how a capitalist economy works.

    Now, if you could create a business case for the 'better than' being better business and reaping in more money than the JGE effort, then you may get enough money...but you'd have to make the better than cheap enough so people will buy it instead...which since it is better than will be hard to do because better than is almost always more expensive.

    Per your biology example - that doesn't work either, and is quite flawed. The animals in the Americas survived quite fine with humans for thousands of years prior to the European Colonization ; it was the rapid advance of technology due to the European Colonization that is what lead to the mass destruction of many species - and many humans too. And - FYI - that's not evolution in any sense - no two "species" or groups of humans "evolved" beyond any other, it was purely a knowledge growth of one group of humans being beyond that of another simply because the other had not been introduced to it - not that they were not capable of it (obviously they were capable of it as many that were introduced to it used it very well...sometimes too well...). It's politics and academics, nothing more.
    --
    Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)