From: Justin Voskuhl (justinv_at_microsoft.com)
Date: Wed Feb 11 2004 - 15:09:44 PST
The VAX operating system was designed to run on a wide range of
hardware, from inexpensive machines with relatively little in the way of
specialized hardware and with limited memories (limited at this time was
250K) to much larger machines with many megabytes of memory. The
addresses in the VAX system were 32 bits, allowing for 4 gigabyte
address spaces. Some bits in each address were used for special
purposes. The 2 most significant bits were used to distinguish between
addresses in the "P1" and "P0" regions of memory, as well as regions of
memory reserved for the operating system itself. The P0 region was the
user's program and the head; the P1 region was the stack, executive
per-process stacks, the command language, and state the executive needed
to maintain for each process. Pages were 512 bytes, so the least
significant 9 bits were reserved as a byte offset within a page. The
remaining bits identified individual pages. The first page in a process
was always set to generate an exception when referenced. This was used
as a debugging facility to detect programs that had bugs.
The VMS memory manager is divided into two main components: the Pager
and the Swapper. The Pager is the set of code that runs when a page
fault occurs. In VMS it is designed to minimize the amount of thrashing
in the system by choosing page fault victims from the same process that
generated the page fault. This prevented processes that were paging
heavily from imposing an unfair penalty on other processes. Pages were
marked as dirty so that if a page was not dirty since it had been paged
in, then it didn't need to be written back and could be returned to the
free list immediately.
The Swapper was used during context switches to bulk move pages from
memory to disk and back. It is used to start processes and swaps in an
empty process shell to start a new process. The Swapper guarantees that
the pages in the resident set before the swap are exactly the same pages
swapped back in when the process resumes.
The VMS system also exposes a lower level interface for programs that
need to manage their virtual memory resources to handle real-time
applications or for other needs. Processes can pin pages in memory,
modify their P0 and P1 regions sizes, and get access to the page fault
history for the application.
This archive was generated by hypermail 2.1.6 : Wed Feb 11 2004 - 15:09:51 PST