| Course Introduction |
(9/20)
| Historical Perspective |
(9/25)
Q: Dijkstra explicitly states their goals for the THE operating system. How do these goals compare to, say, Microsoft's apparent goals for the NT operating system? Why don't we no longer build operating systems with the same goals as THE?
Q: How does synchronization in the RC 4000 system compare with synchronization in the THE system?
(9/27)
Q: What features in TENEX are reminiscent of features in Unix (a later system)?
Q: How is a Hydra procedure different from the procedures we are familiar with in a typical language and runtime environment?
(10/2)
Q: Compare and contrast protected subsystems in Multics with procedures in Hydra.
Q: What aspects of Unix as described in the 1974 paper do not survive today, or have been considerably changed?
| Structure |
(10/4)
Q: What are the concepts in HYDRA that correspond to Lampson's definitions of "Domain", "Object", and "Access Matrix"? What about Multics?
Q: How do the requirements of the Pilot operating system differ from the systems we have read about so far, and how does the design of Pilot reflect those differences?
(10/9)
Q: One goal of StarOS is to support concurrent execution whenever and wherever possible. What are examples of support for this goal?
Q: Compare and contrast the abstraction of task forces in StarOS and Medusa.
(10/11)
Q: Do you agree with the central argument of this paper that message-passing and procedure-oriented systems are equivalent?
Q: What are the benefits of using an upcall structure, and what are the potential drawbacks?
| Distribution |
(10/16)
Q: What are the design constraints/goals of Accent that we haven't seen before in an operating system?
Q: How does the network transparency of LOCUS compare with the network transparency of Accent?
(10/18)
Q: What is the argument for diskless workstations, and do you agree/disagree with the argument?
Q: How do the caching policies in Sprite differ from those in the V Kernel?
(10/23)
(10/25)
Q: In what ways was Grapevine explicitly designed to handle scalability?
Q: In what ways did the Emerald language support mobility?
| OS/Architecture Interaction |
(10/30)
Q: Note that the remote penalty is high. Does this invalidate the V Kernel's claim that remote penalty for file access is acceptable?
Q: Compare and contrast the L4 microkernel with the RC4000 Nucleus and the HYDRA kernel in terms of their goals to provide a basis on which higher level OS functionality can be implemented.
| Synchronization |
(11/1)
Q: What are "monitor invariant" I and "condition" B, and why are they important in the discussion of monitors?
Q: Compare and contrast synchronization in Java with Hoare monitors and Mesa monitors.
| Communication |
(11/6)
Q: Classify the following types of communication using Spector's taxonomy: message passing, sending mail, RPC, streaming video, remote fork.
Q: In what ways do the authors optimize connection management?
(11/8)
Q: What is the argument that "local" remote procedure call performance is important? Does this argument still hold today?
Q: In your own words, describe what a Threaded Abstract Machine is, and why it can benefit from the use of Active Messages.
| Virtual Memory |
(11/13)
Q: Why must segments be "Made Known", and how is it done?
Q: Why does Mach support copy-on-write, and how does it implement it?
(11/15)
Q: Why is it important to have a pool of free pages? How does their implementation of Unix VM maintain a free pool of pages?
Q: How does the implementation of the GMS page replacement algorithm approximate the ideal algorithm?
| I/O and File Systems |
(11/20)
Q: In FFS, reading is always at least as fast as writing. In old UFS, writing was 50% faster. Why is this?
Q: When we want to read a block in LFS on disk, how do we figure out where it is?
(11/22)
(11/27)
Q: In what way are coroutines used to implement the new version of stream I/O? Why are they useful?
Q: Which optimization in IO-Lite had the most significant performance impact? Does this optimization generalize to many applications?
(11/29)
Q: Do you believe the underlying argument in Rio? Why or why not? Would you use a system that recovered data using Rio?
Q: Do you think versioning would be a useful feature in contemporary file systems? Both the VMS file system and the Andrew File System had versioning. Why do you think Unix FFS and NTFS do not?
| Final Project Presentations |
(12/4)