Welcome to graduate operating systems! This course will cover an exciting range of materials from the broad field of operating systems, including basic operating system structure, file systems and storage servers, memory management techniques, process scheduling and resource management, threads, distributed and peer-to-peer systems, security and a few other hot topics. We will examine influential historical systems and important current efforts, extracting lessons both on how to build systems as well as how to evaluate them.
The course will center around two basic entities: readings and a final project. For every class, you will have to read one or more papers (as assigned), which we will then discuss in class. You will also have to think and write a little bit about each paper. During the first half of the semester, you will also have to perform a mini-assignment, just to get warmed up for the project. Then, finally, you will work on your project, which is the real key to the class: a mini-research project. I can give ideas for the research project. More details will be available below in the weeks to come.
The expected background for this course is an undergraduate operating systems course, in which you learned the basics of an OS: virtualizing the CPU, virtualizing memory, file systems, and so forth. Probably you learned it out of some book like Silberschatz or Tanenbaum or the free OS book from Wisconsin.
You should also have some hardware background, as in a basic understanding of how a machine works, what caches and TLBs are, and things like that. This knowledge is particularly useful because the OS sits at the lowest levels of the system, and thus we sometimes need to know things about the hardware.
The reading list is determined by the schedule. You will have three basic responsibilities for the readings covered in the course:
The reading load will be heavy, so make sure not to fall
ScheduleWho: Vijay Chidambaram
When: MW - 3:30-5:00.
Where: GDC 4.304
First class: Aug 24!
Office Hours: Tue Thurs - 1:30-2:30 PM
TA: Jeremy Hintz
A rough outline of grading is: reading and other assignments (10%), exam (20%), and final project (70%). As you can see, its the project that really determines your grade.
We will be using Canvas for course administration. Check out the course page here. You will need your UT EID to log in.
I will be making all important announcements on Canvas (although some of it may be on this page as well). Check Canvas regularly!
The project list has been partially updated. More projects will be added soon. You need to log in with your UT ID to access the project list.
The final project is the main focus of the course. You are expected to perform work which could eventually be suitable for publication in a major operating systems conference; indeed, each year one or two projects end up becoming published works in some major OS conference! In general, people should work in groups of size two or three. I will provide some suggestions for you to pick from, although you are encouraged to think of a project on your own, which I can then help to refine. Project write-ups will be similar in format to a conference submission. The best papers will receive some kind of recognition. More details are forthcoming.
There will be a midterm to test if you've really been paying attention. The exam will be open book, and will cover the papers read to date, as well as topics discussed in class.
In addition to reading, exams, and your final project, there will be a few assignments. Stay tuned for details. The topics will be things like how to measure systems, how to build/modify/debug a kernel, and how to simulate a system.
This course is inspired by a similar course taught in Wisconsin by one of my advisors.