Review of VAX/VMS Virtual Memory (by levy & Lipman)

From: Prasanna Kumar Jayapal (prasak_at_winse.microsoft.com)
Date: Tue Feb 17 2004 - 23:17:07 PST


This paper ("Virtual Memory Management in VAX/VMS") describes the
structure of a Virtual Memory management system in the VAX/VMS OS. The
authors address the problem of designing a virtual machine system to
work efficiently on systems with diverse memory sizes and workloads.

The VAX/VMS virtual memory system supports a 32 bit address space which
is divided into 512 byte pages. The space is partitioned with the system
occupying the higher half of all process addresses spaces, and each
process having its own process space in the first 2GB. The system space
consists of the procedures and data structures of the operating system
itself, so that programs can directly call OS routines by references to
their own address space. The process address space is in turn
partitioned into the program region (P0) and the control (P1) regions.
P0 and P1 are private to each process and contain the user program and
process specific data structures, respectively.

The authors set forth several mechanisms in the implementation of the
system. The first is "Paging", which is handled separately for the
operating system and program regions (which makes sense, since a context
switch changes only the program region). The OS page table exists
directly in physical memory, and the program page table exists in
virtual memory in the OS region. Paging is local to a process, so a
heavily-paging process cannot drive other processes out of physical
memory. The second is the "Page Caching", where the page is marked for
removal from main memory significantly before it is actually paged out.
Thus, part of main memory acts as a cache for the backing store. The
third is the "Clustering", where the system attempts to read and/or
write a group of pages with spatial locality in a single disk operation,
rather than a multitude of small operations. The last mechanism is a
"Local Replacement Policy", where when a process hits its page limit it
must free one of its own pages to get the new page in. This provides
protection and process isolation.

The swapper process executes at OS requests and swaps (at removal/resume
time) all process's resident set of pages between memory and disk. it
also swaps a process shell when crating new processes in the system. The
system also provides copy of pages on reference, zero pages on demand as
well as memory control facilities for real-time processes.

Some statistics about page accesses and faults are given in the paper,
which were nice to go through. Considerable description is given to show
how putting the evicted pages in a queue before writing them back to
disk helps improve performance towards LRU. It was successful is showing
how the page system worked in VAX/VMS.

On the whole, the paper appears to be a seminal work on Virtual Memory
Managment. The idea was clearly expressed and explained. Mechanisms that
enhanced the performance were well introduced. I think many of the
features described in this paper are still used in current VM systems,
which shows how pervasive the ideas that they have introduced become.



This archive was generated by hypermail 2.1.6 : Tue Feb 17 2004 - 23:17:01 PST