- Richard Rashid of Carnegie Mellon University (CMU)
Based on the Mach 3, Mac OS X should perform well in:
- Memory management
- Preemptive / Real-time operating system
- System call redirection - integration with other operating systems, e.g. BSD
1984
The Mach project started in 1984 with several specific goals to achieve:
- Provide full support for multiprocessing
- Support diverse architectures, include shared memory access scheme such as Non-uniform Memory Access (NUMA) and Non-Remote Memory Access (NORMA)
- Support transparent and seamless distributed operation
- Reduce the number of features in the kernel. Although system programmers will have a very small number of abstractions to work with, the abstractions would be general enough to allow several operating system to be implemented on top of Mach
- Provide compatibility with UNIX
- A task is a container for the resources of one or more threads. Examples of resources include virtual memory (through memory object), ports, processors, and so on.
- A thread is a basic unit of execution in a task. A task provides an execution environment for its threads, i.e., threads of task share its resources includes the program counter and various registers.
- A port is an in-kernl message queue with capabilities. Ports form the basis for Mach's IPC facilities.
- A message is a collection of data that threads in the same or different tasks can send to each other using ports.
The virtual memory architectures of FreeBSD is based on Mach
1993
Although Mach was designed to run as the operating system for various operating systems, Mach 3 was the first true microkernel version. The Mach 3 project was started at CMU and continued by OSF (Open Software Foundation). In Mach 3, BSD ran as a user-space task, with only fundamental features being provided by the Mach kernel. Changes and improvements in Mach 3 include the following:
- Kernel preemption and a real-time scheduling framework to provide real-time support
- Low-level device support wherein devices were presented as ports to which data or control messages could be sent. It supports both synchronous and asynchronous I/O.
- A completely rewritten IPC-implementation
- System call redirection - allow a set of system calls to be handled by user-space code running within the calling task
- Use of continuations, a kernel facility that gives a thread the option to block by specifying a function (the continuation function) that is called when the threads runs again
- The cost of maintaining separate protection domains, including the cost context switching from one domain to anther
- The cost of kernel entry and exit code
- Data copies in MIG-generated stub routines. Mach Interface Generator (MIG) generates client stubs for Mach IPC - RPC code for client-server-style Mach IPC from specification files
- The use of semantically powerful but implementation-heavy IPC mechanisms, even for RPC on the same machine.