Need for a New OS

By: Mike Yocom - Revised: 2006-06-01 devin

Introduction

By the end of 1994 it was clear that Apple needed to release a new operating system. System 7, although rather advanced in many ways, was starting to show its age. A lot of features and technologies that were becoming standard couldn't be supported in the Mac without major re-writes of a huge portion of the operating system.


Memory Management

The Mac OS did almost no memory management. Programs managed their own memory, and could over-write each others', or the operating system's, memory space, corrupting each others' data. The original Macintosh lacked a memory management unit — a microchip that specifically controls all memory use in the computer, so a lot of memory management features were missing.

Probably the most important missing feature was Protected Memory. Protected Memory means that the operating system manages all memory, controlling which program gets to use which piece of memory. The most important side effect of Protected Memory is greatly improved stability because programs cannot over-write each others', or the operating system's, memory space. This means that programs cannot corrupt each others' data.

Although, starting with System 7, Macs could support Virtual Memory, it was poorly implemented. Virtual Memory allows data in RAM that hasn't been used for a while to be swapped out the hard drive. This can make it so that users can have more running programs than there really is memory space to support. The Mac OS' implementation of Virtual Memory was slow, and still had a built-in limit on the amount of memory available, instead of being able to use as much disk space as was available. This new upper limit could be set in the Memory control panel.

Another memory-related problem was memory addressing. The original Macintosh used 24b memory addresses, which could address up to 16 MB of memory space. Eight megabytes of this was reserved for expansion slots, the ROM, and input and output, meaning that the maximum addressable RAM space was 8 MB. The Macintosh II and all 68030, 68040, and PowerPC Macs could implement 32b memory addressing, with an upper memory limit of 4 GB, but this wasn't supported by the operating system itself until System 7. The Mac OS didn't have a way to be easily upgraded to take advantage of new memory control hardware. (Witness the relative ease that support for the PowerPC 970 "G5's" 64b memory addressing — with a theoretical memory limit of 16 exabytes — has been added to Mac OS X.)

Two other quirks of the Mac OS memory management are worth mentioning. One was memory fragmentation. Programs had to be loaded into a continuous block of memory, as users opened and closed programs in the normal use of the computer, the free memory space could become fragmented — little pieces of unused memory spaces scattered here and there. Even though the total amount of free memory was enough to launch a program, it wouldn't launch because there wasn't a single block of free space large enough. The other quirk was the memory allocation settings in a program's Get Info window. Because the program requested itself a set block of memory when it launched, it could run out of memory when opening a large file. This could be fixed by finding the program's icon in the Finder, using the Get Info command, and then increasing its memory allocation settings so it would take a larger block of memory next time it was launched.

Processor Management

Processor management was also lacking. A number of performance-improving features like Preemptive Multitasking, Multithreading, and Symmetric Multiprocessing were not supported.

Multitasking is a feature that allows more than one program to run at a time. The Multitasking available with MultiFinder for Systems 4.2—6.x and always available in System 7 and later was what is called Cooperative Multitasking, which meant that the individual programs decided if it was time to release control of the processor to the next program. This meant that programs could hog the processor, slowing down the rest of the computer, and if a program locked up — probably caused by its data being corrupted because of the lack of Protected Memory — the entire computer would lock up, forcing the user to restart it. With Preemptive Multitasking the operating system again functions as a disciplinarian — controlling which program uses the processor at any given time. This means that if a program locks up or tries to hijack the processor, that one program will crash, while all the other programs continue functioning.

Multithreading allows individual programs to do more than one thing at a time. The program is divided into individual threads, which can be processed independently of each other. The Mac OS lacked multithreading of any kind. (This was added to Mac OS 8's Finder.)

Symmetric Multiprocessing allows computers with multiple processors to evenly distribute the computing workload between the processors. This means that computers that have multiple processors perform better than single-processor systems that are otherwise identical. This is especially beneficial in conjunction with Multithreading, since the workload can be more minutely managed.

Hardware Support

Oftentimes operating system support for new hardware was patched together. A number of new hardware technologies and standards had emerged since the introduction of the Macintosh, and most were poorly supported, and many features that they allowed weren't implemented. The reason for this was backwards compatibility: large portions of the operating system needed to be re-written, which would have created incompatibility with old programs.

By mid-1995 four standards for expansion slots had been introduced to the Mac: Processor Direct Slot (PDS), NuBus, PCMCIA, and PCI. AGP was added in 1999. Two standards for device interface were being used on Macs: SCSI and IDE. Six different models of processor had been added: 68020, 68030, 68040, PowerPC 601, 603, 604. Ethernet was becoming prevalent. Color graphics had been added since 1984. Two later generations of 3.5″ diskettes had been released, and CD-ROMs had been introduced.

The original Macintosh II had a 68551 paged memory management unit (PMMU) — which can support Protected Memory and Virtual Memory — and the 68030 and later have an integrated PMMU. However, the operating system, originally written for a computer that couldn't support these features, couldn't implement them without losing compatibility with all the old programs. By System 7.5 only ten to fifteen percent of the operating system had been re-written for the PowerPC, meaning the rest of the operating system was being emulated, slowing it down.

Software Standards

A number of new software standards had also emerged. OpenGL was emerging as the de facto standard for graphics because it could quickly support new graphics cards and new features, and because it allowed programmers to write one set of graphics routines instead of having to write a set of routines for every, individual model of graphics card. TCP/IP was the standard protocol for transferring data over the Internet — IP even stands for "Internet Protocol". Java was emerging as a standard for making programs that could be written once for multiple platforms — a must on the Internet.

OpenGL wasn't built into the Mac OS — which relied on the much older, less flexible, and slower QuickDraw. The Mac TCP/IP stack was a dirty hack, and there was no system to easily add new networking stacks. The Macintosh Java Virtual Machine was much slower than its Windows counterpart.

All of these pointed to one conclusion: the Mac OS needed to be replaced.

Copland

Apple's first strategy to create a truly modern operating system was to create a transitional operating system, code-named "Copland" that would implement a lot of the features missing from the Mac OS, for programs specifically written for Copland. Later, Gershwin would be released as a fully modern operating system. Even later, Apple announced that Copland would be Mac OS 8 and Gershwin would be Mac OS 9.

Copland's release date continued to slip. In fact, it slipped three times for a total of two years. Finally, it became clear that re-writing the Mac OS in this manner was too big of a task. Apple terminated the Copland project and started looking for a truly modern operating system that could be purchased and turned into the new Mac OS — instead of re-inventing the wheel.

Apple is reported to have (very) briefly considered Windows NT — before passing it up because it wasn't mature yet. (Realize that this was in 1996, four years before Windows 2000 emerged.) Next was Sun Microsystem's Solaris, a UNIX variant, which was passed over because Apple and Sun couldn't work out a mutually acceptable licensing agreement. Apple then looked at the BeOS, the most technologically advanced of all the operating system candidates, but was still in the beta stage. (It's interesting to note that Apple hired Dominic Giampaulo, who wrote the BeOS File System, in 2002 and has recently added some of the BFS features to the Mac's HFS+.) Finally, Apple settled on purchasing a company called NeXT to get their NeXT OS, another UNIX variant. NeXT had been started in 1985 after Steve Jobs, one of the founders of Apple, left Apple — he returned to Apple when they bought NeXT, and Apple hasn't been the same since.

Apple's strategy was to take the NeXT OS, make its interface behave like a Mac, make an emulation environment that would run the old Mac software. The final product — Mac OS X — uses the Mach microkernel inherited from NeXT OS, BSD, another UNIX variant, POSIX — UNIX program architecture — support and networking, a Macintosh emulation environment called Classic, and a host of Mac OS X-specific technologies.