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