Review for "Virtual Memory Management in the VAX/VMS Operating System"

From: Justin Voskuhl (justinv_at_microsoft.com)
Date: Wed Feb 11 2004 - 15:09:44 PST

  • Next message: Manish Mittal: "Virtual Memory Management in VAX/VMS"

    The VAX operating system was designed to run on a wide range of
    hardware, from inexpensive machines with relatively little in the way of
    specialized hardware and with limited memories (limited at this time was
    250K) to much larger machines with many megabytes of memory. The
    addresses in the VAX system were 32 bits, allowing for 4 gigabyte
    address spaces. Some bits in each address were used for special
    purposes. The 2 most significant bits were used to distinguish between
    addresses in the "P1" and "P0" regions of memory, as well as regions of
    memory reserved for the operating system itself. The P0 region was the
    user's program and the head; the P1 region was the stack, executive
    per-process stacks, the command language, and state the executive needed
    to maintain for each process. Pages were 512 bytes, so the least
    significant 9 bits were reserved as a byte offset within a page. The
    remaining bits identified individual pages. The first page in a process
    was always set to generate an exception when referenced. This was used
    as a debugging facility to detect programs that had bugs.

     

    The VMS memory manager is divided into two main components: the Pager
    and the Swapper. The Pager is the set of code that runs when a page
    fault occurs. In VMS it is designed to minimize the amount of thrashing
    in the system by choosing page fault victims from the same process that
    generated the page fault. This prevented processes that were paging
    heavily from imposing an unfair penalty on other processes. Pages were
    marked as dirty so that if a page was not dirty since it had been paged
    in, then it didn't need to be written back and could be returned to the
    free list immediately.

     

    The Swapper was used during context switches to bulk move pages from
    memory to disk and back. It is used to start processes and swaps in an
    empty process shell to start a new process. The Swapper guarantees that
    the pages in the resident set before the swap are exactly the same pages
    swapped back in when the process resumes.

     

    The VMS system also exposes a lower level interface for programs that
    need to manage their virtual memory resources to handle real-time
    applications or for other needs. Processes can pin pages in memory,
    modify their P0 and P1 regions sizes, and get access to the page fault
    history for the application.


  • Next message: Manish Mittal: "Virtual Memory Management in VAX/VMS"

    This archive was generated by hypermail 2.1.6 : Wed Feb 11 2004 - 15:09:51 PST