CSE 291 (E00): Advanced Studies in Classical Operating Systems (Winter 2021)

Date and Time: Mondays and Wednesdays, 3:30-4:50, via Zoom

Course Instructor: Prof. Joseph Pasquale

Teaching Assistant: Shaobo Cui


Current operating systems research is sometimes characterized as "polishing a round ball," meaning that as most of the great ideas in operating systems were developed a long time ago, all we are doing today is refining them. This is somewhat unfair, but there is a grain of truth, and looking back at the development of those great ideas is a worthy and illuminating pursuit. Toward this end, we will study some of the most influential operating systems, where most of the modern-day abstractions, mechanisms, and policies were first developed. These systems are especially interesting because of their focus on justifying the design and implementation decisions they made -- Why a particular overall structuring of the kernel? Why a certain notion of process, or synchronization mechanism, or scheduling policy? How do these decisions interact? -- which are mostly either lost or taken for granted today. It is instructive to see what predictions they made, whether they came true or not, and how their thinking process might inform us as to how we might go about making such predictions today, based on changing user interests, application demands, and technological trends. Some of the systems we will look at include the early "classical" ones: MIT's Multics, Dijkstra's THE, Hansen's RC 4000, Bell Labs' UNIX, CMU's Hydra, etc. We will also read some "reflection" papers, i.e., retrospective studies on lessons learned regarding overall operating system design. The pace will be informal and relaxed, about one paper per week, so that we have the time to really understand and get into the details. Grading will be based mostly on class participation and a short final paper or exam.

Class Attendance