Mach is an operating system kernel developed at Carnegie-Mellon University to support operating system research, primarily distributed and parallel computation. The project at CMU ran from 1985 to 1994.
Several factors were considered in making the Mach operating system. It was important that the operating system be:
*Multi-user and multitasking.
*Network-compatible.
*An excellent program-development environment.
*Well-represented in the university, research, and business communities.
*Extensible and robust.
*Capable of providing room for growth and future extensions.
Mach minimizes kernel size by moving most kernel services into user-level processes. The kernel itself contains only the services needed to implement a communication system between various user-level processes.
Mach splits the traditional UNIX notion of a process into two abstractions, the task and the thread. A task is the environment within which program execution occurs. A thread is the basic unit of execution. It's a lightweight process executing within a task, and consists solely of the processor state such as program counter and hardware registers necessary for independent execution.
In Mach, communication among operating system objects is achieved through messages. Mach messaging is implemented by three kernel abstractions: The Port, The Port Set, and The Message.
MACH uses priority policy for scheduling tasks, and has an Exception Handling System that was designed according to the following:
1. Single facility with consistent semantics for all exceptions.
2. Clean and simple interface.
3. Full support for debuggers and error handlers.
4.