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
Why the Myth was Woven
This myth is the main thread holding together the Mac OS X Needs a Linux Kernel Myth. According to the Copy/Paste Development Myth, this should all be easy to fix: yank out that Mach stuff, and throw in Linux!

The Myth Weavers
This myth is of the wishful thinking type, making it more of an irritating distraction from reality than devious misinformation, but it's also used in fanboyism that borders on FUD.

Some Linux advocates insist that nothing compares to the pure genius of Linux, so everything should just adopt Linux. Some Mac OS X users worry that there's something evil lurking in their system that makes that dreaded beach ball spin; perhaps it's a microkernel, and perhaps replacing it with Linux (which doesn't even have a beach ball!) is the answer?

Unraveled with Extreme Prejudice
To properly unravel this myth, we need to answer a few questions:
  1. What is a Kernel?
  2. What is a Microkernel?
  3. What is Mach?
  4. What Caused the Spectacular Failure of the Mach Microkernel?
  5. What is Linux?
  6. Why is Apple Still Using the Mach Kernel After Mach Failed?
  7. Does Mac OS X Need a Linux Kernel?

What is a Kernel?
The Unix Kernel is the master control program which governs all other programs, schedules access to hardware, and manages the file system and security model. The name kernel differentiates the core system (which runs as the root process with special privileges) from everything else on the system (which runs under restricted user accounts). Everything outside of the kernel space is called the userland.

In the natural development of Unix, the kernel began to grow rapidly. For example, Berkeley's famous contribution to Unix was a fully functional TCP/IP networking stack. A rapid influx of other new functionality in the core kernel space has resulted in modern versions of Unix (and Linux, which is essentially a clean room rewrite of Unix) having 2-3 million lines of code in their kernel alone.
What is a Microkernel?
Microkernel refers to an approach to system design that began as a reaction to the rapid expansion of the standard Unix kernel into a fat, monolithic chunk of code.

In Unix, system complexity is managed by breaking up functions into discreet components. Each component can then be linked together in logical ways to perform very complex tasks. This enables the individual components to be improved and refined in a manageable fashion.

Microkernel development came to be seen as a way to apply this Unix design model, common in userland functions, to the kernel itself. During the mid 80s, academia plunged into microkernel development. One of the more famous projects that involved microkernel design principles was CMU's Mach project.

Continued: What is Mach?


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.