(Latest Revision:
Mon Sep  6 15:43:00 PDT 2004
)  
Chapter Two -- Computer-System Structures -- Lecture Topics   
-  What is the typical configuration of the modern computing system?
	  How do the controllers and memory manager fit in the model?
	  
-  What does it mean to say that a modern operating system is
	  "interrupt driven?"  
 -  How do interrupts work?  
 -  What are system calls?  How are they implemented?  
 
 -  What roles do the OS and controllers play to implement I/O in a
     multiprogramming operating system?  How does the OS communicate with
     an I/O controller?  How does a controller communicate with the OS?
     
 -  How does an OS keep track of which processes are waiting for I/O to
     complete on which devices?  How does the OS keep track of which
     processes are waiting their turn to use which I/O devices?  What is
     the typical interaction of the OS with the device table during the
     servicing of an interrupt?  
 -  How do synchronous and asynchronous I/O work?  
 -  How does DMA differ from ordinary I/O?  
 -  A DMA in progress typically causes the process currently executing in the
     CPU to be delayed.  What is the nature of this delay?  Why and how does
     it happen?  
 -  Access (read or write) to primary memory takes a lot of time compared
     to CPU speed.  Caching helps.  Because of "locality" the system
     performs almost as well with a small amount of cache as it would with
     a much larger amount.  That's fortunate because cache is expensive.
     
 -  Storage Hierarchies -- cost per bit versus speed, volatility,
     capacity.  
 -  Memory Coherency problems -- between levels -- in parallel systems.
     Consider a multiprocessor with a data cache for each CPU when several
     caches contain a copy of the same word of primary memory.  (This
     particular cache coherency problem is typically handled by hardware.)
     A similar problem arises when there are many copies of a file in
     existence in a distributed file system.  This situation has to be
     handled by software.  
-  Hardware Protection mechanisms: The hardware and OS should prevent
     processes from harming the system and each other.  The OS must be
     protected.  We must be concerned about illegal I/O, illegal memory
     access, and "hogging" of the CPU.  Tools: traps -- dual mode operation
     -- memory protection -- base and limit registers -- privileged
     instructions -- timers.  
 
 -  Check your understanding.  Is monitor mode the same as superuser
     status in Unix?  No!  Superuser is a user -- it does not run in
     monitor mode.  
-  Important to distinguish between the operating system and the
     hardware: What entity checks every address against the base and limit
     registers?  
 
 -  Does the monitor *need* to access user memory?  
 -