From: Greg Green (ggreen_at_cs.washington.edu)
Date: Tue Feb 10 2004 - 22:05:09 PST
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
This archive was generated by hypermail 2.1.6 : Tue Feb 10 2004 - 22:05:11 PST