Slashdot Mirror


Get To Know Mach, the Kernel of Mac OS X

An anonymous reader writes "Linux is a kernel, not an operating system. So what is Mac OS X's kernel? The Mach microkernel. The debate around Monolithic (Linux) and Micro (Mach) kernels continues, and there is a great chapter online about the Mach system from the very good book 'Operating System Concepts'. Which design is better? I report, you decide." Warning: link is to a PDF.

5 of 413 comments (clear)

  1. As always... by jtpalinmajere · · Score: 5, Insightful

    ... benefits and detriments exist for both monolithic and micro flavors. I doubt a conclusion could ever be made about which one is 'better'... because it all depends on context. "How will the system be used?" "What kind of environment will the system be operating under?" "What are the performance goals of the system?" "What types of hardware will the system(s) need to support?"

    Each system has benefits... but they almost always rely on the existence of certain assumptions.

  2. They're both better! by Pedrito · · Score: 4, Insightful

    "Which design is better?"

    What's better? PHP or Python? What's better Pepsi or Coke? The answer is always the same. It depends what your goals/needs/desires are. Neither is "better" in the all encompassing good or bad definition unless you qualify it. Which one's better for performance? Probably the monolithic kernel. Which one's better for security? Probably the micro-kernel. But even then, you have to qualify both of those. Performance of what? Security of what?

    I'm sick of all these stupid "which is better?" religious wars that geeks are always so interested in having. What's better? C++ or Java? What's better? IE or Mozilla?

    They're all better because the more there are, the more choices you have. There, is that a satisfactory answer?

  3. MacOS / Darwin / xnu isn't a pure microkernel by Lemming+Mark · · Score: 5, Insightful

    That's a statement not a criticism by the way ;-)

    In general, monolithic kernels run in a single address space and use direct procedure calls / variable accesses to pass data and control flow between subsystems. This is true even if they support loadable modules (like Linux). Any driver or other subsystem in your kernel can (if it wants) access any other part of the kernel.

    Although Mach itself is a microkernel, the "xnu" kernel which Darwin / MacOS X uses also hosts other components *in the same address space*. Some of the subsystems (e.g. the BSD subsystem) are large and resemble monolithic systems themselves. The overall system is not a "pure" microkernel, with lots of code moved out of privileged mode. Equally, it's not quite like a traditional monolithic UNIX because of the use of Mach and the other Darwin-specific components (e.g. a (relatively?) stable binary interface for drivers).

  4. Mono / Micro by spring · · Score: 4, Insightful

    Linux is in spirit a monolithic design, and MacOS is in spirit a mach-based microkernel design.

    In reality, though, both MacOS X and Linux have departed from the architectures in mostly pragmatic ways. OS X is not a "pure" microkernel in the mach sense.

  5. Re:RMS, Is That You? by cant_get_a_good_nick · · Score: 4, Insightful

    I hate flamewars, but as been said by many people many times, RMS does not get to define opensource. OpenSource existed long before RMS, and will exist after his demise. If you want to talk about fighting for open code, remember that the Regents of UCB fought for opensource code in a court case, and can say that they won.

    RMS is very important, but he's a zealot, and a lot of people don't agree with his views (I for one don't on a lot of issues). Don't get caught up in the whole Saint iGNUcious thing.