A Port may have multiple senders but only a single receiver. More on this later. The Mach kernel implements tasks and threads. The basic unit of memory management is the memory object. A memory object, like all objects, can send and receive messages.
Tasks allocate regions of memory by allocating memory objects anywhere in their address space.
Because memory objects are like all other objects, user-level tasks can handle the memory management of virtual memory directly by handling the messages sent to the memory object by the kernel, and by sending messages to the kernel via the memory object. For example, when a page fault happens, the kernel determines which part of the memory object is not in memory, and contacts the memory object to get the data. Maps a memory object into an address space. Callable by anyone. Initializes a memory object the first time it is mapped into any address space.