Understanding the architecture and terminology of Mac OS X is important to be able to use it effectively.
Functionally, the Mac OS X architecture consists of several layers that are often shown graphically as in Figure 1.1. The base level of the operating system is its Unix core, which is called Darwin. Moving "up" through the layers, the next layer is the graphics subsystem, which consists of three parts: Quartz, OpenGL, and QuickTime. Then comes the application layer, which has four components, those being Classic, Carbon, Cocoa, and Java. Finally, the top layer is the user interface, which is called Aqua.
Mac OS X is built on a Unix core; the Darwin core is based on the Berkeley Software Distribution (BSD) version of Unix. The heart of the Darwin core is called Mach. This part of the operating system performs the fundamental tasks, such as data flow into and from the CPU, memory use, and so on. Mach's major features include the following:
Protected memory? Mach provides a separate memory area in which each application can run. It ensures that each application remains in its own memory space and so does not affect other applications. Therefore, if a running application crashes or hangs, other applications aren't affected. You can safely shut down the hung application and continue working in the others.
In contrast, previous versions of the Mac OS did not have protected memory. When one application crashed, it usually took down others and often the OS itself, which resulted in your losing unsaved data in all the applications. Under Mac OS X, only the data in the crashing application is at risk.
Automatic memory management? Mac OS X manages RAM for you; it automatically allocates RAM to applications that need it. Under Mac OS X, you don't need to think about how RAM is being used; the OS takes care of it for you (if you have ever struggled to manually allocate RAM under OS 9 and earlier, you know why not having to do this anymore is a very good thing).
Preemptive multitasking? Under Mac OS X (or, more specifically, Mach), the operating system controls the processes that the processor is performing to ensure that all applications and system services have the resources they need and that the processor is used efficiently. This ensures both stability and maximum performance for both foreground and background processes.
This is in contrast to the cooperative multitasking in previous versions of the Mac OS. Under that scheme, applications had to fight among themselves for the resources they needed. This resulted in instability when applications couldn't get the resources they needed and poor performance for those applications that were not able to "grab" the system resources they needed (this is why some processes stopped when you moved them to the background).
Advanced virtual memory? The Mach core uses a virtual memory system that is always on. It manages the virtual memory use efficiently so that virtual memory is used only as necessary to ensure maximum performance.
Under previous versions of the Mac OS, you had to control how virtual memory was used manually. Because the virtual memory system was not very efficient, you had to be careful about when you had it turned on because it would cause the performance of some applications to slow to a crawl, even if you had plenty of RAM.
Darwin is open source. This means that the code of which Darwin is composed is freely available to anyone who wants to use it. A programmer can download the Darwin code and modify it. Thus, it is possible to provide alternative versions of the Darwin core to change and enhance Mac OS X. The Darwin code and documentation can be found at http://developer.apple.com/darwin/.
Darwin also provides the input/output services for Mac OS X and easily supports three key characteristics of modern devices: plug-and-play, hot-swapping, and power management.
Darwin, through its Virtual File System (VFS) design, supports several file systems under Mac OS X, including the following:
Mac OS Extended Format? Also known as Hierarchical File System Plus (HFS+), this is the default file system under Mac OS X as it has been under the more recent versions of the Mac OS (those since Mac OS 8). This file system efficiently supports large hard drives by minimizing the smallest size used to store a single file.
For version 10.3, Mac OS X also supports the Mac OS Extended Journaled format. This enables the OS to track changes that are made while they are being made so that the process of recovering from errors is much more reliable. You will learn more about this later.
Mac OS Standard Format? Known as HFS, this was the standard for Mac OS versions prior to Mac OS 8.
UFS? The standard file system for Unix systems.
UDF? The Universal Disk Format, it's used for DVD volumes.
ISO 9660? A standard for CD-ROMs.
Darwin supports many major network file protocols. It supports Apple File Protocol (AFP) over IP client, which is the file-sharing protocol for Macs running Mac OS 8 and Mac OS 9. Network File System (NFS) client, which is the dominant file-sharing protocol on Unix platforms, is also supported. Mac OS X also provides support for Windows-based network protocols, meaning you can interact with Windows machines as easily as you can with other Macs.
Mac OS X uses bundles; a bundle is a directory containing a set of files that provide services. A bundle contains executable files and all the resources associated with those executables; when they are a file package, a bundle can appear as a single file. The three types of bundles under Mac OS X are as follows:
Applications? Under Mac OS X, applications are provided in bundles. Frequently, these bundles are designed as file packages so the user sees only the files with which he needs to work, such as the file to launch the application. The rest of the application resources might be hidden from the user. This makes installing such applications simple.
Framework? A framework bundle is similar to an application bundle except that a framework provides services that are shared across the OS; frameworks are system resources. A framework contains a dynamic shared library, meaning different areas of the OS as well as applications can access the services provided by that framework. Frameworks are always available to the applications and services running in the system. For example, under Mac OS X, QuickTime is a framework; applications can access QuickTime services by accessing the QuickTime framework. Frameworks are not provided as file packages, so the user sees the individual files that make up that framework.
Loadable bundle? Loadable bundles are executable code (just like applications) available to other applications and the system (similar to frameworks) but must be loaded into an application to provide their services. The two main types of loadable bundles are plug-ins (such as those used in Web browsers) and palettes (which are used in building application interfaces). Loadable bundles can also be presented as a package so the user sees and works with only one file.
Because of its Unix architecture, you will see many more filename extensions under Mac OS X than there were under previous versions of the OS. Most of the extensions for files you will deal with directly are easily understood (for example, .app is used for applications), but others the system uses are not as intuitive.
Mac OS X includes an advanced graphics subsystem, which has three main components: Quartz Extreme, OpenGL, and QuickTime.
Quartz Extreme is the name of the part of the graphics subsystem that handles 2D graphics. Quartz provides the interface graphics, fonts, and other 2D elements of the system, as well as on-the-fly rendering and antialiasing of images. Under Mac OS X, the Portable Document Format (PDF) is native to the OS. This means you can create PDF versions of any document without using a third-party application, such as Adobe Acrobat (to get special features in PDF documents, such as navigation features, you still need to use an application that provides those features). You can quickly create a PDF version of any document with which you work; that document can be viewed with Acrobat Reader or Mac OS X's own Preview application. Quartz Extreme also supports TrueType, Type 1, and OpenType fonts and blends 3D and QuickTime content with the 2D content it provides directly.
Antialiasing reduces the pixelated appearance of a graphic to provide smooth edges instead of jagged ones.
Because of Quartz Extreme, you don't need to install a font-smoothing utility, such as Adobe Type Manager, to be able to view and use all sizes of PostScript fonts, as you had to do under Mac OS 9 and earlier.
Under version 10.3, the Preview application has been greatly improved, especially in terms of speed. The application opens and displays PDF and other documents much more quickly than it did under previous versions of Mac OS X.
The OpenGL component of the graphics subsystem provides 3D graphics support for 3D applications. OpenGL is an industry standard that is also used on Windows and Unix systems. Because of this, it is easier to create 3D applications for the Mac from those that were designed to run on those other operating systems. The Mac OS X implementation of OpenGL provides many 3D graphics functions, such as texture mapping, transparency, antialiasing, atmospheric effects, other special effects, and more.
QuickTime provides support for many types of digital media, such as digital video, and is the primary enabler of video and audio streaming under Mac OS X. QuickTime enables both viewing applications, such as the QuickTime Player, and creative applications, such as iMovie, iTunes, and many more. QuickTime is also an industry standard, and QuickTime files can be used on Windows and other computer platforms.
Mac OS X provides the Classic environment to enable it to run Classic applications. It also includes three application development environments: Carbon, Cocoa, and Java 2.
The Classic environment enables Mac OS X to run applications that were written for previous versions of the OS without modification. This provides access to thousands of existing applications that will run under Mac OS X. Classic applications run as they do under previous versions of the Mac OS; in other words, they do not benefit from the advanced features of Mac OS X such as protected memory (Classic applications can be affected by other Classic applications, and the Classic environment itself can be affected when a Classic application has problems).
The Carbon environment enables developers to port existing applications to use Carbon application program interfaces (APIs); the process of porting a Classic application into the Carbon environment is called Carbonizing it. The Carbon environment offers the benefits of Darwin for Carbonized applications, such as protected memory and preemptive multitasking. Carbonizing an application is significantly less work than creating a new application from scratch, which enabled many applications to be delivered near the release of Mac OS X.
The Cocoa environment offers developers a state-of-the-art, object-oriented application development environment. Cocoa applications are designed for Mac OS X from the ground up and take the most advantage of Mac OS X services and benefits. Most of the applications included with Mac OS X are Cocoa versions; as time passes, more and more Cocoa applications will become available and will eventually be the dominant type under Mac OS X.
The Java environment enables you to run Java applications, including pure Java applications and Java applets. Java applications are widely used on the Web because they enable the same set of code to be executed on various platforms. You can also develop Java applications under Mac OS X.
The Mac OS X user interface, called Aqua, provides Mac OS X's great visual experience as well as the tools you use to interact with and customize the interface to suit your preferences. From the drop shadows on open windows to the extensive use of color and texture to the extremely detailed icons, Aqua provides a user experience that is both pleasant and efficient.