Description
This course is a graduate seminar for students who want to hack on
operating systems and more generally learn how they work. Class meetings
will cover research papers (both classic and recent) and readings on
operating systems, with a significant portion of class time devoted to
discussion. Time permitting, we will focus on security-related
questions. A crucial component of the course is the labs. Students will
implement the core of an exokernel-style operating system, called JOS.
(JOS was developed for MIT's 6.828 and has been used in courses at
several other schools, including UT.) There is an optional final project in
which students build a significant piece of new function in JOS.
Prerequisites and suggested background
- We will assume basic systems knowledge, such as an undergraduate
course in operating systems, networking, or distributed systems. An
alternative is significant systems-building experience on a large project.
- The labs assume comfort and fluency in C programming.
- The labs require some assembly programming and provide tutorials.
- If you are planning to take this class, and you do not have all of
fluency in C, some exposure to assembly, and systems-building
experience, that is okay: you will learn these things!
However, you should leave extra time to complete the labs, particularly
at the beginning of the course. As a common example, if you are not
comfortable with C-style pointers, then this item applies to you.
(If you have
never had an undergraduate course in systems, that is probably less
okay, but you can always try to take this course and see how it goes.)
A note about the labs
Regardless of whether you have the suggested background, we recommend
that you start the labs early.