Image Image Image ImageImage
Creative Services for
Roughly Drafted
Daniel Eran

Image Image

Unraveling the Mac OS X Microkernel Myth
According to proponents of this myth, Mac OS X is in grave danger because it has a microkernel and Linux doesn't. They're wrong; here's why.

Page 1 | 2 | 3
What is Mach?
Mach intended to replace the old BSD kernel with a new, component based kernel with an emphasis on multiprocessing. In its first couple versions, Mach wasn't a microkernel at all; it was a redesign of the lower portions of BSD's kernel. The Mach kernel had to incorporate the remainder of the BSD kernel in order to do anything useful. The result was something larger than the standard Unix kernel, not smaller.

Mach was also slower than the standard kernel that it intended to eventually replace. Even so, Mach's design was getting a lot of attention by the early 1990's because of its multi-processor support and easy portability. NeXT began using the Mach/BSD hybrid in its NeXTSTEP operating system, released in 1989.

Shortly thereafter, it became the general perception that all operating systems would be microkernel based by the mid 90's. Major forces in the operating system development world appeared to be focusing all their resources on Mach related development.
  • A coalition of Unix vendors, who feared that the System V R4 collaboration between AT&T and Sun might take over the Unix world, got together and formed the OSF, and announced their support for OSF/1, an open and standard implementation of Unix running on Mach.

  • The GNU Project, which was building a clean room rewrite of Unix, chose Mach as the foundation of a new kernel called HURD.

  • IBM announced an initiative to transition their existing operating systems to a new Mach based Workplace OS, which would run everything from AIX to OS/400 to DOS and OS/2 software, and operate across a variety of hardware platforms.

  • Apple also used Mach, both in the mkLinux project, and in the protracted attempt to migrate the classic Mac OS to more modern underpinnings using Copland's NuKernel.

What Caused The Spectacular Failure of Mach's Microkernel?
Having met the initial design goals of working as a multiprocessing, distributed system capable of functioning on heterogeneous hardware, the Mach project moved on to the next step: weaning BSD out of the kernel space entirely. Mach 3.0 was intended to be a true microkernel system that could support an external operating system (like BSD) living outside the kernel space. Theoretically, Mach would be even able to host multiple external operating systems at the same time.

Attempts to accomplish this failed spectacularly. The performance issues involved with pulling operating system functions out of the kernel developed into an intractable problem. Designing and optimizing a microkernel in general was found to be outrageously complex. Further, the basic concept of a microkernel was found to be poorly suited to the needs of general purpose computing.

While some microkernels work very well for what they were designed to do, it became increasingly obvious by the mid 90's that the basic premise of Mach to act as a microkernel and host potentially any operating system as a personality outside the kernel... was at a technological dead end. Consequently, the Mach microkernel, and all the projects intending to use it as a microkernel, eventually faded into oblivion.

The fat kernels that Mach intended to replace actually outpaced it instead. Today there are various flavors of BSD with its traditional fat kernel; Sun's Solaris (based on the AT&T Unix System V R4 fat kernel); and Linux, which like GNU, intended to write a clean room version of the Unix kernel, but without attempting to make use of a microkernel as GNU/HURD did.

Continued: What is Linux?


More Journal Entries | More Tech Articles | Get Tech Support | My Resume | Links | Contact RoughlyDrafted

Articles Copyright © 2006 Daniel Eran. All rights reserved.
Suggestions and comments welcome. Contact RoughlyDrafted.

Read more about:
Click one of the links above to display related articles on this page.