From: David V. Winkler (dwinkler_at_windows.microsoft.com)
Date: Wed Feb 11 2004 - 16:44:00 PST
Review: Machine-Independent Virtual Memory Management for Paged Uniprocessor and Multiprocessor Architectures
We've hear about the MACH OS as part of several other papers during this course (OPAL, EMERALD, etc.), but this is really the first time that we've actually looked at it.
MACH, similar to linux, has been widely ported, and it appears that the authors have been quite involved in this porting. But from the description everybody handled memory differently, making the MACH memory manager interesting.
MACH like other flavors of UNIX allows for processes to fork. This colors the memory manager by requiring efficient copy-on-write. A large portion of the paper is devoted to the special bookkeeping that is necessary to make this work right, including sharing maps and shadow objects. Special garbage collection must be done on these objects.
Different memory architectures allow for different amounts of accessible address space. MACH appears to support them all. (while not mentioned in this paper we saw in the opal paper that MACH can handle 64 bit addressing)
Protection is specified on a virtual page basis, as "all addresses within a range mapped by a [address map] entry must have the same attributes"
MACH uses a linked list sorted in order of address, with hints. Hints are interesting and apparently useful.
"An important feature of Mach's virtual memory is the ability to handle page faults and page-out requests outside of the kernel."
Machine independence is cool. The machine dependent portions are said to be isolated and small.
There are impressive comparisons of how easy it was to implement these machine dependent portions.
Some of the discussion in the Multiprocessor Issues section scares me: "allow temporary inconsistency".
This archive was generated by hypermail 2.1.6 : Wed Feb 11 2004 - 16:44:07 PST