Review: H. Levy and P. Lipman. Virtual Memory Management in VAX/VMS.

From: Richard Jackson (richja_at_expedia.com)
Date: Wed Feb 11 2004 - 14:33:16 PST

  • Next message: Justin Voskuhl: "Review for "Virtual Memory Management in the VAX/VMS Operating System""

    This 1982 paper by Levy and Lipman documents the implementation of the
    VAX/VMS virtual memory system on the VAX-11 minicomputer. This paper
    offers a historical reference, as well as general best practices for
    building a virtual memory system.
     
    The paper includes the following sections: 1)overview of VAX-11
    addressing, 3) access space use in VAX/VMS, 3) memory management system,
    4) executive services.
     
    The first section describes the addressing, which is comprised of a
    32-bit virtual address space, with 512-byte pages. The upper 2 bits are
    reserved for system use. The lower bits are split into P0 and P1
    regions, which start at the extremes and grow towards each other as
    needed. A page table exists for each of P0 and P1.
     
    The second section discusses how the address space is actually used by
    each process. The system space contains vector pointers to service
    routines, and the actual code and data for these routines. When
    processes call these routines, they do not access the data directly, but
    instead use protected interfaces. The P0 region is used to store
    program data, and the P1 region is used to store process specific
    information, such as the command interpreter.
     
    The third section was the main portion of the paper. This section
    discusses the various design decisions that were used in this system.
    The main components discussed were the pager and swapper. The purpose
    of the pager is to handle page faults by loading data into memory. The
    interesting part was that, when a page fault happens and no memory is
    available, the calling process has to give up existing memory to handle
    the new data. Therefore, one process could never consume all of the
    machine resources. Another key consideration is that the system places
    blocks removed from memory on either a free or modified list, prior to
    writing to persistent storage. In cases where this data is referenced
    again, the data can be read from these lists, as a sort of local cache.
    The idea seemed to be the reason for the system's success, even though
    it employed only a simple FIFO algorithm instead of LRU. Clustering was
    also discussed, which essentially meant reading multiple pages at once,
    as a sort of pre-fetching. This concept reduces the amount of disk
    accesses, and attempts to pipeline requests where possible. Last, the
    swapper is discussed, which is responsible for remove entire processes
    from memory and moving them to the backing store. This differs from the
    pager, which only removes pages, not entire processes.
     
    Finally, the paper discusses some of the support for executive services,
    for cases that an application wants more control over the virtual memory
    system. For example, a process can request that all pages are locked
    in memory, and cannot be swapped.
     
    The problems I saw were: 1) process-local replacement may not allow the
    best use of resources in some cases, 2) the swapper may encounter cases
    where a swapped process can never be reloaded, due to a low memory
    condition.
     
    The three key ideas from this paper are: 1) caching in free/modified
    lists, 2) clustering, 3) process-local replacement, as discussed above.
    Each of these ideas contributes to the success of the VAX/VMS virtual
    memory system, and should be considered when building similar systems.
     


  • Next message: Justin Voskuhl: "Review for "Virtual Memory Management in the VAX/VMS Operating System""

    This archive was generated by hypermail 2.1.6 : Wed Feb 11 2004 - 14:33:32 PST