This course introduces students to the principles, design, and implementation of operating systems. The lectures focus primarily on the principles and design of operating systems; a course project exposes students to the implementation aspects of operating systems, and large software systems in general. The main concepts taught in this class include (1) concurrency and synchronization; (2) the principle of locality and caching as a technique that exploits locality; (3) layering as a technique to control complexity and to achieve interoperability and portability; (4) virtualization and scheduling of resources; and, (5) building reliable services from unreliable components.
The project is to implement a simple operating system; it is based on the Nachos system from the University of California, Berkeley. The project has four stages: (1) thread management and synchronization, (2) multiprogramming, (3) virtual memory, and (4) filing services. Each stage builds on services that students implemented in previous stages of the project. To make it possible to complete the project in one semester, some code is provided that implements a subset of the required functionality. Students are required to make major extensions to the existing design and implementation, adding missing functionality and improving performance. In stages 2, 3, and 4, students are also required to evaluate their design choices experimentally.
||Th 12:05-12:35 (12-1)
||T (TTh) 2:30-3||DH 3006
||F 2-2:30 (2-3)
||M 11:30-12 (11-12)
||W 1-1:30 (1-2)
||W 7-7:30p (7-8p)
(*) on weeks before project due dates.
Instructor office hours: TTh 2-3pm, DH3020
Spring 2003 course materials: