Review: Machine-Independent Virtual Memory Management

From: Raz Mathias (razvanma_at_exchange.microsoft.com)
Date: Wed Feb 11 2004 - 17:14:44 PST

  • Next message: isking_at_u.washington.edu: "Review: Rashid, et al., Machine-Independent Virtual Memory Management for Paged Uniprocessor and Multiprocessor Architectures."

    This paper presents a method for implementing virtual memory by drawing a clear line between the machine-dependent and the machine-independent layers. The paper attempts to make the point that the machine-dependent component is relatively small and easy to implement and that the real value and complexity lies with the machine-independent component.

     

    The memory management system consists of a list of entries sorted by virtual address in a structure called the address map. This structure allows us to map contiguous virtual address ranges to "memory objects," protection information, and inheritance. This structure exploits some basic properties of these virtual address ranges. The ranges are ordered by virtual address and are easy to search and more importantly, scan (especially with certain "hints" mentioned in the paper). In addition, the ranges tend to be sparse, and there tend to be a small number of them (on the order of ten or fewer). A memory object is a logical repository of information index-able by byte. Unlike the VAX/VMS system, this system idiosyncratically has a pager task for each memory object whose responsibility is to bring a page back into memory after it has been swapped to disk. Interestingly, in-memory pages are managed by the kernel's paging daemon and not these individual tasks (I'm not quite sure why that is). The pager is a user-mode process that interfaces with the kernel through a fixed set of "ports." These ports essentially define an interface through which the machine-dependent portion of the system can efficiently provide services to higher levels. Pages are shared via an additional layer of indirection in the address map. Individual entries in the map can reference a shared map which contains a list of shared memory objects. In addition, there is a concept of shadow objects, which allow for copy-on-write semantics by replacing the original shared memory object entry in the address map. A major claim made in the paper was the fact that the machine-dependent portion (called the pmap) was relatively small, easy enough to implement, and did not negatively impact the overall performance of the system. The paper finished by describing several implementations of the system using inverted page tables, TLB's, and segments/page tables.

     

    This system reminds me of the Exokernel paper we've read earlier. Exokernels abstract the physical machine at a low level, providing capabilities for controlling and protecting at levels. The core of this system provides an interface for the purpose of generalized management at a higher level. Essentially the paper argues that a general virtual machine can be efficiently implemented, upon which a more general virtual memory system is built. This is a powerful that can be generalized to other components in the operating system; that is the concept behind the HAL layer inside Windows. This way an OS can be written to efficiently mange and control different kinds of hardware.

     


  • Next message: isking_at_u.washington.edu: "Review: Rashid, et al., Machine-Independent Virtual Memory Management for Paged Uniprocessor and Multiprocessor Architectures."

    This archive was generated by hypermail 2.1.6 : Wed Feb 11 2004 - 17:14:50 PST