From: Joanna Muench (joannam_at_spro.net)
Date: Tue Feb 17 2004 - 18:00:27 PST
Rashid et al. (1987) present their design and implementation of a
portable virtual memory management system. The Mach operating system
makes minimal assumptions regarding memory management hardware, enabling
it to be easily ported to at least six different architectures. They
claim their implementation is made without sacrificing system
performance, although benchmarks are provided only against the
relatively unsophisticated UNIX system.
The Mach design is essentially object-oriented, using memory objects to
represent collections of data and threads as units of CPU utilization.
Ports are the object references to these memory objects and threads;
they enable the message-passing based design to actually perform
efficiently. The integration of the VMM with message-passing allows
memory remapping of data, rather than copying. Both inheritance to child
tasks and protection are specified on a per-page basis.
The actual implementation of the design is requires division into those
sections depending on the underlying machine architecture and those that
are independent. The important virtual memory information is machine
independent. Some of the important implementation details are the use of
a memory object list, a memory allocation queue and an object/offset
hash bucket. The byte offsets in memory are important to maintain
machine independent, avoiding linking a Mach physical page with a
machine physical page.
Memory sharing is an important concept to the Mach system. Because the
system implements copy-on-write and read-write memory sharing between
tasks, multiple tasks can have address maps corresponding to a single
memory object. Mach creates shadow objects to hold modified pages
resulting from copy-on-write faults. These shadow objects create chains,
from which the original object will eventually be found. The downside to
this scheme is the potential for long chains of shadow objects which
require garbage collection to avoid chains that are longer than
necessary.
In porting the Mach system to different architectures the primary
challenge was handling multiprocessor computers. Mach was unable to
guarantee cache consistency across multiple processors. The authors
proposed three different solutions, although they didn't provide
examples of implementations.
The paper offers an interesting and sophisticated virtual memory
management system. I found the object-oriented nature of the OS
intriguing, especially in how it enabled message-passing to be an
efficient implementation.
This archive was generated by hypermail 2.1.6 : Tue Feb 17 2004 - 17:56:48 PST