CS 380L Advanced Operating Systems

Course Objectives

Students will study advanced operating system topics and be exposed to recent developments in operating systems research. This course involves readings and lectures on classic and new papers. Topics include operating system design, virtual memory management, virtual machines,  OS interaction with the hardware architecture, synchronization and communication, file systems, protection, and security.

The course assumes an undergraduate course on operating systems (such as UT's CS 439). If you have not had any formal OS course, please see the instructor.

The course balances the following objectives.

Teaching Assistants

Youer Pu (puyouer@gmail.com) 4:00pm to 5:30pm at TA Station (GDC 1.302).


Emmett Witchel GDC 6.432 Friday 2pm (please send email and feel free to suggest an alternate time)

Course Materials

Readings. There is no textbook for this course. The course is based on a collection of journal, conference, and other papers that describe the history and state of the art in operating systems. The preliminary list of papers and schedule is available here. You must read the papers before class. At a minimum we recommend two close readings. We will provide papers online from a machine in the utexas.edu domain, but they should be available on the web.

For background reading about Linux, I would recommend Understanding the Linux Kernel (3rd Edition) by Daniel P. Bovet and Marco Cesati, Linux Kernel Development (3rd Edition) by Robert Love, and Professional Linux Kernel Architecture by Wolfgang Mauerer. I refer to all of these books in class.

Class Participation

You are allowed a maximum of two absences and must consult the instructor if there will be more.

Paper critiques. We provide a template review form for papers here. We recommend that you actually write out a reaction for each paper you read as a way to understand your own thoughts, but we will only require you to hand in a few reviews (see course schedule for details).

In-class presentation.

I have created CS 380L Witchel in piazza (piazza.com) for this course (link).

Programming assignments

This course requires several programming assignments that will give you experience in building, booting and running an operating system. The assignments will also expose you to methodological systems issues such as how to model, measure and report performance, how to design a workload to test kernel functionality, and the dependence on workload for the evaluation of a system feature. Finally the assignments will expose you to how to write about systems, their design, implementation, and measurement.

These assignments should demystify the operating system, convincing you that the OS really is just a program. Sometimes puzzling system behavior can be understood and worked around by reading and understanding the source code of the OS. Why did mmap return ENOMEM? There are several distinct possibilities that you can see in the code. These assignments might even give you a bit of practical knowledge, for example allowing you to get Linux to recognize your fancy, new USB device.

We will use Linux and the KVM virtual machine. Unfortunately, the CS machines are not set up to allow use of KVM. So the easiest solution is for you to find a machine that runs Linux on which you have root privilege. Like a laptop. Failing that, I will give out accounts on my group's machines for you to run experiments.


Your final grade for the course will be based on the following approximate weights:

Course Policies



Special offer: you can write your own exam questions! Submit a question with your solution in advance of the exam, and if we like it, it will appear on the exam.

Late Policy

Last updated: 2016-04-27 13:59:20 -0500 [validate xhtml]