Virtual Memory Management in the VAX/VMS Operating System

From: Greg Green (ggreen_at_cs.washington.edu)
Date: Tue Feb 10 2004 - 22:05:09 PST

  • Next message: Steve Arnold: "Review: Levy & Lipman, VMM in VAX/VMS"

    This paper describes the VMS memory management. The VAX machines had
    32 bit addresses. The VMS system partitioned the 32 bits into a 9 bit
    offset, a 21 bit virtual page number, and the final 2 bits stating
    whether the page is in one of 3 regions of address space. The regions
    were P0, which grew up for a per-process address space, P1, which grew
    down for a per-process address space, and System for addresses that
    access the same physical memory location for every process.

    Page tables are 32 bits per virtual page. The physical page frame
    number is the lower 20 bits, the rest are used for various
    flags. There is a page table for each process region. There is only 1
    page table for the system region.

    The memory management system was designed to meet the following
    criteria: Had to run on small CPU's with small memories and slow
    disks. There were 2 processes, the pager and the swapper. The pager
    maintained 3 data structures, a resident set of pages, a free list of
    pages, and a modified page list. The resident set had an upper and
    lower bound of size that could be modified. The page removal algorithm
    was per-process and first-in-first-out instead of least recently
    used. This was mitigated by placing the removed page on the free
    list. If the page was faulted again before being written to disk, it
    was moved from the free-list back to the resident set which was a fast
    operation. The modified pages were clustered together and written to
    disk in as large of groups as allowed. This reduced the number of
    I/O's required to place it into or remove them from swap.

    System pages were also managed the same way as process pages except
    that the process page tables, in system memory, when faulted were
    moved into the processes resident set and not allowed to be removed
    until it had no more valid entries. Some system memory was also not
    paged at all.

    The swapper moved pages to/from the disk. It also moved entire
    resident sets with some process os information to disk. There was also
    some real-time control of the memory process to help with applications
    that needed more control.

    This paper described a interesting algorithm for page-swapping instead
    of the LRU method which is the only one I was familiar with. It was
    interesting that the pages were so small. There was no discussion on
    why this page size was chosen.

    I was able to understand how a virtual memory manager would work from
    this paper. I still don't understand what a 'tagged' translation
    buffer is though. Also there was an intriguing reference to 'reference
    bits' and how that would allow the system to keep track of relative
    ages. I didn't quite understand that. Finally, It didn't describe how
    shared memory would work. I suppose that's because it didn't exist at
    that time.

    -- 
    Greg Green
    

  • Next message: Steve Arnold: "Review: Levy & Lipman, VMM in VAX/VMS"

    This archive was generated by hypermail 2.1.6 : Tue Feb 10 2004 - 22:05:11 PST