|Table Of Contents
Table of Contents ………………………………………………………. Page 1
Overview …………………………………………………………………Page 2
Scheduling………………………………………………………………... Page 4
Data Structures and File Management………………………………… Page 4
SMP………………………………………………………………………. Page 5
Deadlock Prevention……………………………………………………. Page 5
Memory Management………………………………………………….. Page 6
Processor Manager……………………………………………………… Page 7
Bibliography…………………………………………………………….. Page 8
Mac OS X (pronounced “ten”) is the latest version in Apple’s line of operating systems. Apple’s goal in creating OS X was to make an OS that has “the power of UNIX with the simplicity and elegance of Macintosh.” Mac OS X is the first Apple OS that was built almost entirely from the ground up. Apple developed a new kernel, Darwin, which based on Mach 3.0 from Carnegie-Mellon University and FreeBSD 3.2 (derived from the University of California at Berkeley’s BSD 4.4-Lite). Darwin supports a number of new features for Macs, such as protected memory architecture, symmetrical multiprocessing, preemptive multitasking and a virtual memory management. Additionally, OS X runs on a new graphical user display, Aqua.
In a first for Apple, OS X is released under an Open Source License. To encourage development, OS X comes with a full set development tools. “Carbon” to help programmers covert existing applications and “Cocoa” to help programmers develop new applications are both included as part of the tool set. Mike Musgrove of the Washington Post points out Apple is exceedingly successful in encouraging development: “10,000 developers are creating applications for the new system, with about 20,000 programs in development, compared with about 18,500 products available for the previous Mac OS 9.1.” In addition to attempting to encourage software developers to produce products that can run on OS X, Apple is attempting to encourage developers to improve the OS itself. According to Apple, this makes them “the first major computer company to make open source development a key part of its ongoing software strategy.”
The main Mac OS X application is a Client version of a single user operating system, although a Server edition is also available, and the Client version does support multiple users of a single computer. The OS was intended to please both personal and professional users. OS X is designed to support what Apple calls “killer graphics” with three levels of graphic technology: OpenGL (for 3D), Quartz (for 2D) and QuickTime (for streaming). OS X is also designed to support quick and easy internet access, with connection, e-mail, browsing, and publishing capabilities. Apple hopes all this will attract a larger market share, such as gamers and home users, and maintain its current market share, such as graphics developers. OS X does have some hefty system requirements. These include a Macintosh computer with 128MB of RAM and 1.5GB of free hard drive space.
Mac OS X did not advance the state of the art in operating systems, since it is merely a merge of Macintosh and UNIX, however it is the widely considered Apple’s first “modern operating system,” combining the power of UNIX with the user friendliness of Mac. General impressions from the public are mixed, with almost all critics agreeing that OS X did a large amount right, and some critics thinking it did an equal amount wrong.
Critics like Stephen Wildstrom of BusinessWeek, insist that “Mac hits another home run” with OS X. One of the most highly publicized abilities of OS X is crash protection, which allows an application to crash without bringing down the whole machine. Apple claims that this allows OS X to “take a licking and keep on ticking.” OS X is completely backwards compatible with the previous OS 9.1. This means an entire old operating system, with all its programs and files, can stay in the background and then open and run in OS X. OS X installation, moving, deletion and utilization of applications is made easier by “bundling” all the files a program needs in one folder. OS X also supports “services” that allow one program to offer its tools for use in others; for instance, one service lets you grab text and open it in an editing program.
Other critics, such as Rob Pegoraro of the Washington Post, insist that OS X, is a “fascinating and frustrating work in progress.” There are some glitches that Apple readily recognizes, including that OS X will not support CD writing or DVD reading or writing until later this year, and occasionally the OS becomes frozen when trying to awake from a “sleep.” In addition to glitches, a number of critics have mentioned that Mac users may find the transition to the “modern” OS a bit difficult. As beta tester Gary Krakow of MSNBC mentioned, “parts of the operating system have different names, they look and feel different, and they’re in different places.” Some users have stated that the memory requirements are not high enough to provide an acceptable speed that users of 9.1 may expect. Lastly, some critics have expressed displeasure that OS X is “open software” that must be paid for.
Although Mac OS X was available as a beta version in October of 2000, the full version was not available until March 24, 2001. Consequently, it remains to be seen whether the OS X will be a commercial or economic success. OS X will not be bundled with Mac computers until later in the year so initial customers must purchase it separately for $129.00. Although the economic outlook is uncertain, investors hope that OS X will boost Apple’s profitability, especially after the company recorded its first quarterly loss in several years at the end of 2000. Despite Wall Street worries, Steve Jobs stated on March 22, 2001, “Apple is very strong right now. And it is wonderful, because we can afford these new initiatives without worrying about the short-term effects of the economy.”
Previous versions of the Mac OS used cooperative multitasking. Cooperative multitasking allows the application to take control of the CPU, which often starves other applications that are running in the background. With cooperative multitasking applications are supposed to share the CPU and it is the programmers responsibility to insert calls at suitable points in their code to allow for the application to be descheduled.
Unix has a preemptive multitasking environment where the operating system decides what gets to use what portion of your overall resources. Mac OS X uses this type of preemptive multitasking environment. A specific part of memory is allocated to this specific application. This can improve system performance dramatically because whenever you switch tasks the other process that is still running does not lose its memory allocation. Not only are resources allocated to a specific application in this environment but also processes can be preempted and swapped in or out of main memory. Preemptive multitasking makes efficient use of your computer by keeping the CPU as busy as possible. Whenever one application is waiting, perhaps for I/O, Mach can schedule other operations for execution while that application is waiting.
The Mac OS X is a multithreaded environment. Mac OS X uses processes and POSIX (Portable Operating System Interface) threads (Pthreads) on top of Mach tasks and threads. A process is based on one Mach task and one or more Mach threads. Mach is an abstract layer that handles scheduling among other things such as inter-process communication. Mac OS X defines a thread as the point of control, where a task is there to provide resources for the threads it contains. This division allows for resource sharing and parallelism to be easily accomplished. A task is responsible for the resource management of its threads, which gives the threads very little overhead. Mach threads give programmers the ability to write concurrent applications that run on both uniprocessor and multiprocessor machines transparently, taking advantage of additional processors when they exist.
Mach provides a flexible framework for thread scheduling policies. Currently Mac OS X supports time-sharing and fixed-priority policies. The time-sharing policy raises and lowers a thread’s priority based on its resource consumption against other time-sharing threads. Whereas fixed-priority threads are put at the end of a queue of threads of equal priority after they are executed for a certain amount of time. The Mac OS X was constructed in a way that will allow additional scheduling policies to be added to future versions.
Data structures and File Management
NIST, or the National Institute of Standards and Technology defines a data structure as “an organization of information, usually in memory, for better algorithm efficiency, such as queue, stack, linked list, heap, dictionary, or tree.” It may include redundant information, such as the length of the list or number of nodes in a sub-tree, or other things like arrays, dictionaries, trees, bitmaps, and locks.
These data structures are common to almost all operating systems, and play major roles in process, memory and file management. A set of programming interfaces called Carbon that are carried over from previous Macintosh Operating Systems has strong influence over data structures. Carbon restricts direct access to data structures to maintain system integrity and to support access to services by using preemption. Carbon attempts to reduce wasted memory by using accessory functions to retrieve field data, instead of using pointers that can lose their references. Carbon also has methods to create and kill data structures.
Data structures are also central to Apple events; high level events which trigger message passing between an application and itself, an application and another application on the same machine, or between the application and a remote machine. These events are the primary way that applications interact in the Mac OS X. The Apple event objects use a well-defined set of data structures to request services or provide information to one another, and while the user may implement new Apple events to utilize these structures, this sometimes results in operating system errors. These events cover most basic functions like saving and closing documents, but also can have tremendous database and scripting powers. The objects composed of data structures and these event methods are the basis for Object Oriented Programming on the Mac.
These Apple events and their underlying data structures are dictated by the process manager, that controls access to shared resources and schedules processor usage. It governs the scheduling and execution of applications, and uses the data structures to make these processes more efficient.
The file manager uses data structures to access programs stored on physical media, including a hard disk, floppies, and CDs. It opens, closes and reads files, based on the data structures it is passed.
The memory manager is updated in the OS X to reduce access to system data structures. The use of zones, system memory and temporary memory has been reduced or restricted. The functions allowing direct access to the heap structure are gone, but new routines allow access to shared and persistent memory.
SMP is the capability of an operating system to schedule and integrate tasks among more than one processor. With OS X being based on UNIX it is possible to either have SMP or master/slave setup for multiple processors. This will be the first time since 1997 that Apple has offered an operating system that allows for multiprocessors. OS X is also allows the normal home PC user to run a single processor as well.
SMP is made possible through the use of the latest revision of the Unix-based Mach kernel. This kernel puts together standard virtual memory semantics with the abstraction of memory objects to enable the OS to manage separate application environments simultaneously, while providing its user with a seamless feel. It is important to note, however, that SMP is not supported in the first release of OS X. The newest version should have pre-emptive multitasking and protected, advanced, virtual memory, which will allow for SMP.
Mach is also brings other new features that had been previously unseen in the Mac world. Two of these features are a command line interface, enabled by OS X’s support of telnet, and FTP.
Deadlock prevention takes on a new look with the new OS X. Again, with UNIX as its basis, the OS uses cooperative multitasking. This type of multitasking allows any number of processes to be going on at one time but the OS decides which of these processes gets the processor power. If one program were to crash or hang up the processor the new OS X would, like UNIX, not crash but rather close out that process and flush the memory. Some believe that this is a weaker solution to multitasking than preemptive multitasking that is seen in Windows NT and the like. However, this type of tasking does not crash the system as often when one program/process experience a problem.
The kernel of the Mac OS X is composed of five components: Mach, BSD, Device Drivers and I/O Kit, Networking, and File Systems. Mach, the lowest level of the kernel, is the part of the operating system that provides implementations of tasks, threads, ports, virtual addressing, memory management, intertask communication. This component also manages processor usage, handles scheduling, and enforces memory protection. Mach provides timing services, synchronization primitives, and messaging-centered infrastructure to the rest of the operating system.
Mach supplies large portions of virtual address spaces for addressing. At initial access time, the virtual address may not correspond to a location in physical memory. Mach’s task is to connect each virtual address to its physical space in memory. This is done through demand paging. Data in an address space is made up of memory objects, which are further broken down into pages. When connecting a virtual address to a location in physical memory, Mach asks the owner of a memory object for the contents of a page, and returns the data (which may have been modified) to the owner. Another name for the owner of a memory object is a pager. Pagers provide the data of the pages in memory objects. There are two built-in pagers in the Mac OS X, the default pager and the vnode pager.
The default pager handles anonymous memory. Anonymous memory is virtual memory that is nonpersistent – it exists only as long as the task exists. The vnode pager maps files into memory objects. This is done through an interface that Mach exports to memory objects to allow their contents to be contributed by user-mode tasks. This interface is called the External Memory Management Interface (EMMI). EMMI gives handles to virtual memory, called named memory entries. By having names attached to memory, the owner can map the entry or allow others to do so. Two different tasks may map a single entry; this results in a shared memory window between them. This allows flexibility in sharing memory.
Additional methods for populating address space are direct allocation and inheritance. In direct allocation, the virtual memory object is anonymous and supported by the default pager. In inheritance, shared address space is established as new tasks are cloned from a parent. Memory address space is also cloned, and mapped memory objects may be inherited as a copy, shared, or not inherited, depending on the mapping.
In order to optimize the performance of inherited copies, Mach uses copy-on-write, a delayed form of copying. This is accomplished by protected sharing. Instead of directly copying the range of addresses, the two tasks share the memory being copied with read-only access. A portion is copied when either tasks modifies a part of the memory.
Another form of sharing memory is through the export of named regions. Named regions are forms of named memory entries, but are supported by virtual map fragments rather than virtual memory objects. These fragments hold virtual mappings that can map to other virtual maps. This enables inheritance of groups of virtual memory objects, and inheritance of existing mapping relationships, therefore optimizing task setup.
The Process Manager schedules and keeps updated information on each process. This information includes the current state, address, size, type, creator, and process serial number. The process serial number is the identifier for each process.
All processes must be either a foreground process or a background process. A foreground process is one that the user is currently interacting with. Its windows and menu are in front of all other applications. The foreground process is the active application, and only one process may be in the foreground at a time. The foreground process has first priority in accessing the CPU.
A background process is one that is not currently interacting with the user. There can be more than one background process. Applications may be background-only. These background-only applications are designed without a user interface. They do not display windows or a menu bar. Background processes may only access the CPU when the foreground process allows it.
A process may switch between foreground and background, such as when a user clicks on one of the background application’s windows. The foreground process’s context is switched to the background, and the background process is brought to the foreground. This is called a major switch. In a major switch, the Process Manager sends the foreground application a suspend event, which causes that application to suspend. This allows the user to switch to another application. That application is then in the resume or running state.
Besides suspended and running, another state that the process may be in is sleeping. If no events are pending in the application’s event queue, and a value is specified in the sleep parameter by the programmer, the application can relinquish the CPU to other processes. Once time runs out, the application is then eligible to run again, and is put in the event queue.
DeStefano, Eric (2001). “Introduction to Unix: The Buzz Words” URL:
Apple (2001). “System Overview” URL: http://developer.apple.com/techpubs/macosx/SystemOverview/SystemOverview/SystemOverview.pdf
Inside Mac OS X: The Kernel Environment
Inside Mac OS X: System Overview