From: shearerje_at_comcast.net
Date: Wed Feb 11 2004 - 06:38:34 PST
This paper discusses a research effort into the separation of software memory management from hardware support. The test case was built on the Mach operating system using a heterogeneous mix of hardware platforms from various vendors. The VAX platform was used for benchmarking so that a direct performance comparison could be made between the test case and the commodity VMS virtual memory scheme.
Where the basic element of virtual memory management in VMS is the fixed-size page, the Mach implementation used a “memory object” concept. The memory object is not exactly of arbitrary size in that it must be a power of 2 multiple of the underlying hardware page size. But the experiment showed that this could be largely hidden from the application so that changing between platforms with different underlying hardware can be accomplished with the modification of a well contained set of elements. The paper presented the astonishing perspective that physical memory can be treated as a cache for the contents of virtual memory pages. This is exactly the inverse of the standard hardware-oriented view of the relationship!
One surprising focus of this research is on the notion that virtual memory management can be integrated with a message oriented inter-process communication facility. As I understand it, the mechanism works by remapping the virtual memory handles to memory objects rather than copying the memory objects themselves. I can see how this would work on a single node (sort of a temporally-shifted shared memory), but I don’t understand how this works between processes on heterogeneous nodes. A variation on this concept, which the paper called “inheritance”, allows for a parent process to create or fork a child process and specify whether the child process has a reference to the parent’s memory object or a copy to it. Interestingly, “copied” objects are not actually copied until either party tries to write to it, at which time that party gets their own copy. This prevents needless replication of identical copies.
Much of this system’s surprising capabilities are facilitated by moving the handling of page faults out of the kernel to where the applications have visibility and control. This is accomplished by associating each memory object (essentially a file) with a “pager” task. This allows the memory object to be treated like an active object, with a port and interface methods. I’m not clear on whether the pager task is replicated when a “shadow” object is constructed or whether the shadow is treated like an extension of the original object.
The paper reads well, and yet is as confusing as it is enticing. I look forward to the class discussion and hope it sheds some light on the nuances.
This archive was generated by hypermail 2.1.6 : Wed Feb 11 2004 - 06:38:41 PST