posted by Roberto J. Dohnert on Wed 11th Jun 2003 03:59 UTC
IconIn December of 1996, Apple acquired NeXT Software. The reason for the acquisition was so that Apple could finally make a modern operating system for their users. They searched high and low for a OS to be the foundation for their new OS. Among the candidates, Windows NT which never even made it past the first stage. Then came Solaris, but Apple and Sun could not agree on the licensing terms and the idea was crushed.

Be was considered as well but like Windows NT, the idea was crushed because Be was still in development and very few commercial applications were available for the OS, Be was very strongly considered because it had features that surpassed the current Mac OS as well as other Operating Systems on the market and had the support of the Mac user base. Then came NeXT in all of its glory and it was decided that NeXT would be the foundation for the new OS.. Here are some of the things NeXT brought to Apple through the Acquisition.

Mach Microkernel

Hexley, the Darwin Mascot Mach is a microkernel designed by Carnegie Mellon University from 1985 to 1994. A microkernel is a smaller operating system implementation than monolithic kernels, as Microkernels build on smaller modules. Mach was one of the most popular microkernels ever used. Compaq, IBM, HP all of them used the Mach Microkernel at one time or another. GNU Hurd was also based on Mach but that OS has yet to be released and personally I doubt it ever will be released. Here is a list of all Microkernels in use today.

What Mach brings to Darwin and Mac OS X is preemptive multitasking, Inter-process communication, I/O and interrupt management. It also brings along a great device driver framework. In Mach, device drivers are IOKits ( Input-Output kits). The differences between a Microkernel, like what is used in Mac OS X and Darwin, and a Monolithic Kernel, like what is used in Linux, is that a Monolithic Kernel is a large chunk of code, where a Microkernel consists of small message passing cores or Modules, with several different Daemons or "servers" that communicate between the modules. The modules give filing systems, security,and virtual memory. This often times makes a Microkernel more complex and decreases performance in some instances. One of the many advantages is that if you create a new Module, it can just be simply " plugged " in where in a Monolithic it used to be that you had to recompile your source code in order to utilize new features. BUT, Now Monolithic kernels use what is called dynamically loadable modules, where this allows you to actually do the same thing and plug in modules, but in some cases it is easier to inherit memory leaks and other problems that could impact your system more severely with this method. To counter act these problems writing dynamically loadable modules can often times be more time consuming as well as take up even more time in testing. While yes, Microkernels do have problems and as Linus Torvalds says, sometimes they can make up problems of their own. I find Microkernels to be much easier to work with and problems are easier to pinpoint in Microkernels than it is in Monolithic kernels.

BSD Compatibility

The BSD Application layer is built on top of the Mach Microkernel. This layer allows compatibility with most UNIX based software. The BSD Layer also offers great Networking capabilities.

The Open Step Development Environment

This is a true object oriented programming environment developed by Avie Tevanian and others at CMU. It is also noteworthy that Dr. Tevanian was a NeXT employee and he remains at Apple to this day.

Table of contents
  1. "History, Mach, BSD, OpenSTEP"
  2. "Darwin, GNU-Darwin, Open-Darwin, Conclusion"
e p (0)    94 Comment(s)

Technology White Papers

See More