Course Description

This class introduces the basic facilities provided in modern operating systems. The course divides into three major sections. The first part of the course discusses concurrency: how to manage multiple tasks that execute at the same time and share resources. Topics in this section include processes and threads, context switching, synchronization, scheduling, and deadlock. The second part of the course addresses the problem of memory management; it will cover topics such as linking, dynamic memory allocation, dynamic address translation, virtual memory, and demand paging. The third major part of the course concerns file systems, including topics such as storage devices, disk management and scheduling, directories, protection, and crash recovery. After these three major topics, the class will conclude with a few smaller topics such as virtual machines.

The class work consists of one problem set and a series of four programming projects based on the Pintos kernel. You will learn a lot from these projects, but be prepared to spend a significant amount of time working on them.

Basic Information

Lectures: MWF 11:30-12:20
Herrin T175
Instructor: John Ousterhout
Sections: See projects page
Online discussions: Piazza
Midterm Exam: Wednesday, May 10, 8:00-9:30 PM
Location TBD
Final Exam: Wednesday, June 13, 8:30-11:30 AM
Location TBD

Upcoming Lectures

Lecture 10
Mon, Apr 23
Lecture 11
Wed, Apr 25
Lecture 12
Fri, Apr 27

Full lecture schedule... »

Upcoming Projects

Due: Thursday, April 26, 2018
Due: Tuesday, May 08, 2018
Due: Thursday, May 24, 2018

All projects... »

Useful Links