Another characteristic of Mach is its use of tasks instead of processes. A process contains resources and a flow of control. Mach separates resources into tasks and flow control into threads. More than one thread may be associated with a task. Thus threads are lightweight and switching between threads of the same tasks requires very little overhead.
Threads also provide an efficient way to take advantage of the parallelism of multiple processors.
Yet another characteristic of Mach is it blends memory management and communication. Memory objects are represented as ports, and Mach passes messages by moving pointers in shared memory, eliminating the overhead of message passing. The Mach microkernel permits very fine grained control because of its basic nature. For instance, Mach does not provide a syncronization model. Different models of syncronization can be built optimized for the task.