Mach's ?virtual memory subsystem uses memory objects for supplying the content of regions of virtual memory in an virtual address space.

All of these objects are managed by memory managers, that are also called pagers. These can be implemented as user-space processes.

Both the memory objects, and their managers are kernel objects, and are accessed by ports.

A system's physical memory is conceived as a memory cache that contains memory cache objects. So when a thread accesses a page in its task's address space, the memory object that includes this page is cached in the memory cache. Memory objects are paged out and paged in by the aforementioned memory managers. The decision when they should be paged in or paged out is left to Mach. Each memory object has an ordered list of memory managers that provide paging. The last one tried is the default memory manager that resides in the microkernel, in contrast to most of the others. The default memory manager is needed because the microkernel can't wait infinitely for someone else to free the memory cache: it just calls the next memory manager hoping it to succeed.

Read about GNU Mach's memory management.