Chapter 2. An Overview of Mac OS X


We saw in Chapter 1 that Mac OS X is a mix of several technologies that differ not only in what they do but also in where they came from, which philosophies they represent, and how they are implemented. Nevertheless, Mac OS X presents a cohesive and consistent picture to the end user. The fact that Apple computers have a well-defined, limited hardware base is conducive to Apple's success in maintaining a mostly positive user experience despite the underlying software eclecticism seen in Mac OS X.

From a high-level standpoint, Mac OS X may be seen as consisting of three classes of technologies: those that originated at Apple, those that originated at NeXT, and "everything else." The latter consists mostly of third-party[1] open source software. On the one hand, such confluence makes it somewhat hard to clearly visualize the structure of Mac OS X and might even be a stumbling block for the new Mac OS X programmer. On the other hand, Mac OS X programmers have a rather colorful environment to give vent to their creative fervors. The end user is the bigger beneficiary, enjoying a range of software that is not seen on any other single platform. In particular, Mac OS X provides the benefits of a typical Unix system, while maintaining the traditional ease of use of a Macintosh. The Mac OS X Unix environment is standard enough so that most portable Unix softwaresuch as the GNU suite and X Window applicationsruns easily. Mac OS X is often dubbed a mass-market Unix system, and yet, traditionally non-Unix, mainstream software, such as Microsoft Office and the Adobe Creative Suite, is available natively for Mac OS X. Apple's own software repertoire is wide ranging in that it includes offerings such as the following:

[1] The other two categories also contain open source components.

  • Everyday applications such as those for managing email, instant messaging, and web browsing

  • "Digital-lifestyle" applications such as those for managing digital photos, music, and movies

  • "Office" applications for creating presentations, slide shows, and other documents

  • High-end professional software for animation, movie editing and effects, music editing and generation, DVD creation, and photography postproduction

This chapter is a whirlwind tour of the high-level architecture of Mac OS X. We will identify the main technologies that constitute Mac OS X and see how they fit in the overall picture. Manybut not alltopics that are mentioned in this chapter will be discussed in greater detail in subsequent chapters.

Figure 21 shows a layered view of the important components of the Mac OS X architecture. The picture is approximate since it is impracticalif not impossibleto divide various components into cleanly separated layers. Sometimes there is overlap between the layers. For example, OpenGL is functionally the hardware abstraction layer (HAL) of the graphics subsystem and logically sits atop the graphics hardwarethis is not obvious from Figure 21. As another example, the BSD application environment, which includes the standard C library, logically sits atop the kernel but is shown alongside other application environments in Figure 21. In general, the following statements apply to the layered view shown here.

  • Lower layers, which are shown closer to the kernel, provide functionality that is more fundamental than that provided by higher layers. Typically, higher layers use lower layers in their implementation.

  • A layer may consist of applications, libraries, and frameworks.[2]

    [2] In the simplest sense, a framework is a packaged dynamic shared library. We will discuss frameworks in Section 2.8.3.

  • Entities may exist with the same (or similar) name in multiple layers. For example, QuickTime is both an application environment and an application service. Similarly, we have a layer named Core Services in Figure 21, but there is also a similarly named framework (CoreServices.framework). Moreover, many critical components of Mac OS X reside in the /System/Library/CoreServices/ directory.

  • End users interact with the highest layers, whereas developers additionally interact with one or more lower layers, depending on the kind of development they do. For example, a developer creating an end-user Cocoa application may not need[3] to go any "lower" than the Cocoa application environment.

    [3] In most cases, it would still be to a developer's advantage to understand how the system works.

Figure 21. The high-level architecture of Mac OS X





Mac OS X Internals. A Systems Approach
Mac OS X Internals: A Systems Approach
ISBN: 0321278542
EAN: 2147483647
Year: 2006
Pages: 161
Authors: Amit Singh

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net