From: Brian Milnes (brianmilnes_at_qwest.net)
Date: Wed Feb 11 2004 - 16:24:35 PST
Virtual Memory Management in the VAX/VMS Operating System - Levy, Lipman
The author's review the algorithms for virtual memory management in the
VAX/VMS operating system. The operating system was designed for real-time,
interactive and batch applications ranging from 250KB up to a whopping 8 MB.
Each process had 32 bits of address space with a small 512B page size for
PDP-11 compatibility. The VAX had a split system/user TLB and the page
tables were held in a system memory space whose pages could be swapped out.
The system splits the work between a pager and a swapper.
The pager uses a pseudo LRU algorithm and selects pages from the requesting
process when it has hit its page limit. The pager keeps a FIFO list of the
resident pages for each process. When a page is reclaimed it is placed on a
free or dirty list. If a process faults a page on these lists, they are
quickly mapped back into the process. The small pages caused the designers
to cluster both page reads and page writes. The dirty page writing algorithm
tries to keep a minimum number of pages around to cache and to allow
clustered writes. The pager also provides ZEFOD and copy on reference pages.
The operating system itself is paged in the same way with the exception of
the page tables. When a process faults its page table it is added to its
resident set and can be swapped with the process.
Their measurements show that clustering works well with nearly six pages per
read, over 100 pages per write and that nearly half of the page faults were
handled from lists or ZEFOD pages.
The swapper was designed to keep the highest priority processes active and
to avoid high paging rates on process restart. The swapper writes an entire
process in a continuous sequence and back fills pages waiting for I/O. The
process is read in and reconstructed when there is RAM for its entire
resident set. Weirdly, the swapper also starts a new process by swapping in
a shell process. The OS also provides interfaces for the process to increase
or decrease its regions, its resident set, lock resident set pages, lock the
whole process in RAM and map pages.
The paper is a pretty straight forward review of the virtual memory system
of an early operating system. The clustering of page IO and the programmatic
interface to memory were both ahead of their time.
This archive was generated by hypermail 2.1.6 : Wed Feb 11 2004 - 16:24:48 PST