All papers are accessible online via a UCSD computer. To access the papers from a non-UCSD computer, use the campus web proxy with your web browser.
Q: Dijkstra explicitly states their goals for the THE operating system. How do these goals compare to, say, Microsoft's goals for the NT operating system? Why do 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?
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?
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?
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?
Q: What are the three distributed OS structures outlined in the paper, which structure does Medusa use, and why?
Q: What are the benefits of using an upcall structure, and what are the potential drawbacks?
Q: What is the argument for diskless workstations, and do you agree/disagree with the argument?
J. K. Ousterhout, Sprite Retrospective
Q: How do the caching policies in Sprite differ from those in the V Kernel?
Q: How do the replication semantics of Grapevine and LOCUS differ?
Q: In what ways was Grapevine explicitly designed to handle scalability?
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.
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.
Q: Microkernels and virtual machine monitors are two different ways to support the execution of multiple operating systems on modern hardware. How does the microkernel approach in L4 compare and constrast with the VMM approach in Xen?
Q: The goal of scheduler activations is to have the benefits of both user and kernel threads without their limitations. What are the limitations of user and kernel threads, and what are the benefits that scheduler activations provide?
Q: At a high level, as a mechanism how does lottery scheduling provide modular resource management? Why can't the Unix scheduler provide a similar kind of management?
Q: In what ways do the authors optimize connection management?
Q: What is the argument that "local" remote procedure call performance is important? Does this argument still hold today?
Q: The paper states, "VAX/VMS, then, is a collection of procedures that exist in the address space of each process." Explain in your own words what this statement means.
Q: Why does Mach support copy-on-write, and how does it implement it?
|I/O and File Systems|
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?
Q: Which optimization in IO-Lite had the most significant performance impact? Does this optimization generalize to many applications?
Q: Do you believe the underlying argument in Rio? Why or why not? Would you use a system that recovered data using Rio?
Q: How does the implementation of the GMS page replacement algorithm approximate the ideal algorithm?
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?
Q: What is the Spin protection model for extensions, and to which systems we have read about is it most similar?
Q: How does customizability in Exokernel compare/contrast to extensibility in SPIN?