The duality of memory and communication in the implementation of a multiprocessor operating system
ACM SIGOPS Operating Systems Review
Mach is a multiprocessor operating system being implemented at Carnegie-Mellon University. An important component of the Mach design is the use of memory objects which can be managed either by the kernel or by user programs through a message interface. This feature allows applications such as transaction management systems to participate in decisions regarding secondary storage management and page replacement. This paper explores the goals, design and implementation of Mach and its external
... ry management facility. The relationship between memory and communication in Mach is examined as it relates to overall performance, applicability of Mach to new multiprocessor architectures, and the structure of application programs. The Mach design grew out of an attempt to adapt Accent from its role as a network operating system for a uniprocessor to a new environment that supported multiprocessors and uniprocessors connected on high speed networks. Its history led to a design that provided both the message passing prevalent in Accent and new support for parallel processing and shared memory. There are four basic abstractions that Mach inherited (although substantially changed) from Accent: task, thread, port and message. Their primary purpose is to provide control over program execution, internal program virtual memory management and interprocess communication. In addition, Mach provides a fifth abstraction called the memory object around which secondary storage management is structured. It is the Mach memory object abstraction that most sets it apart from Accent and that gives Mach the ability to efficiently manage system services such as network paging and filesystem support outside the kernel. 3 Execution Control Primitives Program execution in Mach is controlled through the use of tasks and threads. A task is the basic unit of resource allocation. It includes a paged virtual address space and protected access to system resources such as processors and communication capabilities. The thread is the basic unit of computation. It is a lightweight process operating within a task; its only physical attribute is its processing state (e.g., program counter and registers). All threads within a task share the address space and capabilities of that task. Inter-Process Communication Inter-process communication (IPC) in Mach is defined in terms of ports and messages. These constructs provide for location independence, security and data type tagging. A port is a communication channel. Logically, a port is a finite length queue for messages protected by the kernel. Access to a port is granted by receiving a message containing a port capability (to either send or receive messages). A port may have any number of senders but only one receiver.