|
CPS 210 |
|||||||||
|
|
|||||||||
|
Threads and concurrency
The classical OS view from Multics to Unix
The goal is to understand the basics of protection and the segmented memory model, dynamic linking, segment naming and binding, and the relationship between segments and permanent storage. The Unix effort was launched by Multics rejectionists:
Servers
Discussion questions for SEDA What is "resource virtualization" and why do the authors claim that it is bad? How do the experiments support this point? Why was resource virtualization considered good in the past, and what do the authors claim has changed to make it less useful now? What is the basis for the implicit claim that applications should have "an opportunity to participate in system-wide resource management decisions"? How does SEDA reflect this philosophy? Compare/contrast the SEDA staged-event model to Unix pipes. How do the schemes for allocating resources (e.g., CPU and memory) to the pipe stages differ in these approaches? What does SEDA offer that is new? How does "load conditioning" in SEDA help to improve performance? How does it help to improve fairness as measured by the Jain index? How is the resulting system better or worse from the point of view of a user (client)? Kernel structure: microkernels to exokernels and beyond
Discussion questions for OS structure Exokernel and SPIN share similar goals, but their approaches differ radically. What are the strengths and limitations of each approach? What forms of extensibility do they support well? (E.g., look at the Cheetah example for Exokernel, and the protocol forwarding and video server examples for SPIN.) How does this power interact/interfere with other goals of the OS? Exokernel and SPIN were reactions to the microkernel approach of Mach, V, and other earlier systems, as discussed in the related work sections of the papers listed above. What are the strengths and limitations of the microkernel structure? All three structures reflect a philosophy that flexibility dominates ease of application programming as a goal of kernel interface design. The architects of each approach expect that other system components provide the primary APIs (Application Programming Interfaces) for their systems. Compare/contrast their views about where the important APIs are in their proposed structures. How might these choices affect the future evolution of the systems or affect their robustness as they evolve? What does the second (1997) Exokernel paper teach us about the Exokernel structure that was not known in 1995? Does their experience add weight to their original vision, or does it detract from it? What might Matt Welsh and the other SEDA architects say about these alternatives today? Resource management and scheduling
RAID and network storage
Energy-aware operating systems
Metrics
OS robustness and evolution
Virtual Machines
Additional readings TBD
|
|||||||||