From: Manish Mittal (manishm_at_microsoft.com)
Date: Tue Feb 17 2004 - 11:55:05 PST
This paper discusses the design and implementation of a virtual
management system for the Mach OS. The major goal of this paper is to
create a machine-independent virtual memory system without compromising
on performance.
The primary approach the authors take is to divide up the virtual memory
subsystem into two parts: a machine-dependent part and a
machine-independent part. The two parts are loosely coupled and highly
modular. Mach VMM makes little assumptions about the hardware support
that exists for virtual memory, but instead defines a rich interface
between the independent/dependent layers. To do this, an extra level of
indirection is required in the mapping from virtual memory to physical
memory.
Mach tasks use "address maps" which map to contiguous regions of memory
objects. Memory objects are basically memory mapped backing stores. The
mapping between physical memory and memory objects is maintained in
pmaps. The address space is divided into pages, and inheritance &
protection can be specified on a per-page basis. The inheritance
attribute allows pages to be shared across tasks. Mach also does garbage
collection to reclaim memory objects which are no longer referenced by
any address map. For implementing copy-on-write, Mach creates shadow
copies of memory objects, which only keep track of modified pages. A
chain of shadow objects may result, since tasks may inherit a shadowed
page. To prevent excessive shadow chaining, the Mach garbage collection
reclaims intermediate shadow objects that are no longer needed. Mach is
very flexible about the mappings contained in the pmap. The pmap is not
required to store all valid mappings, since most of these can be
constructed from memory objects when required. Only the mappings for the
kernel are required to be valid at all times. Mach can handle page
faults and page-out requests outside of the kernel by usage of external
pagers associated with memory objects.
The paper goes into considerable depth on the implementation of the
copy-on-write mechanism in Mach. Another interesting approach taken by
the authors was to describe the various issues in implementing the Mach
VM on various uni-processors and multi processors. This helps to gauge
the authors' initial goal of making Mach VM as hardware independent as
possible. Finally, they give some performance measurements to show that
the hardware independence does not come at the cost of performance.
This archive was generated by hypermail 2.1.6 : Tue Feb 17 2004 - 11:55:09 PST