All papers are accessible online from the UCSD network. To access the papers from a non-UCSD computer, use the campus web proxy with your web browser.
(Additional historical background on semaphores in Wikipedia.)
Q: Dijkstra explicitly states their goals for the THE operating system. How do these goals compare to, say, Microsoft's goals for the Windows operating system? Why do we no longer build operating systems with the same goals as THE?
Optional related paper on a deployment experience of RC 4000:
P. B. Hansen, The RC 4000 Real-Time Control System at Pulway, BIT 7, pp. 279-288, 1967.
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: What are the concepts in HYDRA that correspond to Lampson's definitions of "Domain", "Object", and "Access Matrix"? What about Multics?
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: The paper says that an important goal of Mach is to support extensibility, stating: "The actual system running on any particular machine is a function of its servers rather than its kernel." What does the paper mean by this statement (e.g., as compared with traditional Unix)?
Q: What are the three distributed OS structures outlined in the paper, which structure does Medusa use, and why?
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 "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: What is the argument for diskless workstations, and do you agree/disagree with the argument?
Optional historical retrospective:
J. K. Ousterhout, Sprite Retrospective
Q: How do the caching policies in Sprite differ from those in the V Kernel?
Q: In what ways was Grapevine explicitly designed to handle scalability?
Q: How does the implementation of the GMS page replacement algorithm approximate the ideal algorithm?
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: Compare and contrast an exokernel with a microkernel.
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?
Optional related papers on lottery scheduling:
David Petrou, John W. Milford, Garth A. Gibson, "Implementing Lottery Scheduling: Matching the Specializations in Traditional Schedulers", In Proceedings of the USENIX Annual Technical Conference, 1999.
Carl A. Waldspurger and William E. Weihl, "Stride Scheduling: Deterministic Proportional-Share Resource Management", Technical Report: TM-528, MIT, Cambridge, MA, 1995.
Q: In what ways do the authors optimize connection management?
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: Do you believe the underlying argument in Rio? Why or why not? Would you use a system that recovered data using Rio?