This course considers advanced operating system topics and exposes students to recent developments in operating systems research. The course involves readings and lectures on classic and recent papers on a range of topics, including OS design, virtual memory management, virtualization, concurrency and synchronization, file systems, cloud systems, heterogeneity, and security. The course also exposes students to basic system-building and evaluation methodologies through a handful of programming assignments and a final project.
The course assumes background commensurate with that provided by an undergraduate course on operating systems such as UT's CS 439. If you have not had a formal OS course, please discuss with the instructor before committing to the course.
The course objectives include:
Amanda Raybuck | amandaja2013 AT gmail DOT com | zoom | Wednesdays 10-11am, or by appointment |
Chris Rossbach | rossbach AT cs DOT utexas DOT edu | GDC 6.508 OR | Zoom Mondays 3pm-4pm, or by appointment |
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 the majority should be available on the web.
For background reading about Linux, I recommend the three books below. While I will likely refer to materials from these books in class, they are not required. That said, these books are all very much a worthwhile investment and great references for anyone doing systems research.
Online resources. I have created CS 380L Rossbach in piazza (piazza.com) for this course (here). I will use it mostly for announcements and as a discussion forum, but feel free to provide feedback, and suggestions. Similarly, feel free to use email for questions and discussion.
Class participation is vital to the success of the course. Class time will not be used to rehash the material in the papers, and the instructor will avoid lecturing directly on the material. Rather, class time will be devoted highlighting important ideas and promoting deeper discussion about interesting features. The reading load is heavy, and depending on your level of experience reading technical papers, the load can be as high as 10-15 hours of reading per week. So...only take this course if you are willing and able to do a lot of reading.
If you cannot do the reading for a particular class, please contact me. In general, I would prefer students who haven't done the reading do not come to class. You are allowed two absences but you must consult me if there will be more. I will ask direct questions about the paper and will expect you to be able to answer, and in-class quizzes should be expected. If a paper is too confusing to understand, please write a critique (according to guidelines below) to demonstrate your effort to engage, and hopefully encourage discussion from others who struggled similarly.
The 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.
The goal of the assignments is to demystify the operating system and convince you that the OS really is just another (super-interesting) 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. 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:
The student code of conduct is here. Intellectual dishonesty can end your career, and it is your responsibility to stay on the right side of the line. If you are not sure about something, ask.
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.
Last updated: 2022-01-14 10:40:14 -0600 [validate xhtml]