Review: Virtual Memory Management in the VAX/VMS OS

From: Sellakumaran Kanagarathnam (sellak_at_windows.microsoft.com)
Date: Wed Feb 11 2004 - 16:55:09 PST

  • Next message: Chuck Reeves: "Virtual Memory Management in VAX/VMS"

    The authors discuss the Virtual Memory Management in the VAX/VMS OS.

    VAX-11 and its OS were designed to provide extended address space and
    enhanced performance for PDP-11 customers. Also VAX/VMS had to operate
    on a variety of processors having different performance characteristics
    and physical memories (from 250K to 8M bytes). This paper discusses the
    concerns that developers had at that time and what mechanisms were
    selected to deal with them in VAX/VMS.

     

    Each process in VAX-11 system has a byte-addressable, 32-bit virtual
    address space with 512-byte pages. And page is the basic unit of
    mapping and protection. The high address space (bit 31 = 1) is used by
    system and this space is shared by all processes. The low address space
    (bit 31 = 0) is called the process space and this is unique for each
    process. This space is further divided into p0 and p1 (using bit 30). P0
    - program region grows towards higher addresses and P1 - control region
    grows in the opposite direction. Each region has a page table. A page
    table is a contiguous array of 32 bit page table entries. A PTE contains
    a valid bit, a protection field, a modify bit, a field used by OS and
    the physical page frame number.

    The system space contains all executive code and data, process specific
    data structures and process page tables. First few pages are called the
    vector regions and they contain pointers to executive service routines
    in system space. Since the system space is shared by all processes, all
    these routines are available to all processes. The program region
    contains the user's executable program.

    The next section talks about the memory management implementation. In
    the process the authors discuss some of the design decisions. The
    VAX/VMS memory management system is divided into pager and swapper.
    Pager is an OS procedure that executes as a result of a page fault and
    is responsible for moving pages into and out of memory. Swapper is a
    separate process responsible for loading and removing entire processes
    into and out of memory. VAX/VMS uses a process-local page replacement
    policy. There is a limit on the set of pages currently in memory for a
    process - resident set limit. Simple first-in first out replacement is
    used to select the page to be removed in case of faulting. Trade-offs
    were made in favor of reducing processor usage at the possible cost of
    increased memory requirements. The free page list and modify page list
    help retain the pages for some time after they are removed from resident
    set. The swapper handles the swapping of entire resident set between
    memory and store. It's primary objectives include keeping the highest
    priority processes resident. Swapping is needed when a process in
    memory is blocked (because of an I/O) or when a process not in memory is
    ready to execute (I/O completed). It will not load a process when
    sufficient physical memory is available for entire resident set for the
    process.

    This paper is neatly organized, simple to read and it explains the basic
    concept around memory management in the VM systems.

    It gives a good introduction to paging and swapping.


  • Next message: Chuck Reeves: "Virtual Memory Management in VAX/VMS"

    This archive was generated by hypermail 2.1.6 : Wed Feb 11 2004 - 16:55:19 PST