-
Why we study
-
History
-
Came from pdp-11
-
Wanted virtual addressing
-
could loose segments and handle larger problems
-
Currently runs on VAX and Alpha
-
Memory management
-
Overall scheme
-
Memory divided into 0...2**31 (user) and 2**31 .. 2**32 (system)
-
has 512 byte pages
-
Small to reduce fragmentation
-
Probably would choose bigger now
-
Has normal page table
-
Paging
-
Always keep a few free pages.
-
Pager keeps idea of "maximum working set size" based on page
fault rate. (why??)
-
When page gets replaced, if not above max size, use a free page else
replace in fifo order
-
FIFO because doe snot have a LRU bit.
-
When clean page released, put at end of free page list.
-
Free page list is checked on page fault for fast reclaim.
-
If page is dirty, put on "modified" list.
-
When modified list gets to max size, all elements are dumped.
This clustering reduces I/O.
-
When new program starts, VMS gets several page all at once.
-
Swapping
-
Goal: keep a mix of I/O and CPU bound processes
-
Choose victum based on (1) priority (2) status and (3) expiration of
time slice.
-
Swapping more effecient that paging due to clustering.
-
Never swap out processes on their initial time quantum or processes
with inbound pages.
-
Scheduling
-
Has 32 leves from 0 (low) to 31 (high).
-
Levels 0-15 are interactive and background. Scheduled by
modified premeptive scheduler.
-
Levels 16-31 are real time. Scheduled on strict priority basis
-
Data structure is an array of 32 linked lists of Process Control Blocks
with a 32 bit summary vector.
-
No level is scheduled unless all other levels are EMPTY.
-
When process finishes time slice, put at end of queue for round robin
within level.
-
Interactive processes can change levels
-
Never cross the 15-16 boundry
-
Never be lower than the original assignment
-
Gets increased when a WAIT condition is satisfied. Amount depends
on condition. Largest is terminal READ, then TERMINAL WRITE, then disk/tape
stuff.
-
Gets decrease for using the whole quantum.
-
The swapper is level 16 process.