Description and goals
This course is for students who want to hack on operating systems and
more generally learn how they work. Class meetings will cover operating
systems, advanced topics in systems, and research papers (both classic
and recent). A significant fraction of classes will involve discussion.
A crucial component of the course is the labs: students will implement
the core of an exokernel- or microkernel-style operating system, called
JOS.
The work
The class consists of lectures, discussion days, labs, exams,
readings, homeworks, and background sections:
- The lectures will cover topics in operating systems and
advanced topics in systems.
- Some class meetings will be discussion days instead of
lecture. On those days, students are expected to come prepared, and will
be randomly called on. This ensures equitable participation and
encourages students to keep up. The format and expectations for these
classes are described here.
- The labs are described in more detail here. You will
implement (the interesting pieces of) a real operating system that will
boot on a PC.
- The exams are described here.
- The readings
should be completed before class. Some are assigned, and some are
called background. The latter type provides background
that we will assume you have. See below for more detail.
- The homeworks serve a similar function to the background
readings (and some of you will have seen the homework problems before).
Unless a problem is announced as specifically required (in which case it
counts in the participation and preparedness component of your grade),
it is not required. However, we will build on this material.
Moreover, if the homework problems are new to you, then they will be
valuable and perhaps necessary exercises. Note in that case that
delaying the homeworks with the intent of accumulating them and solving
them at once before the exams is not likely to be an effective strategy.
Do them on time! (These homeworks shouldn't be confused with the labs
and their included exercises.)
- The background sections, led by Jason, serve a similar
function to the background readings and the homeworks. Attendance is not
required, but if you did not take 439H or 372, you should go. You should
also go if you feel a bit shaky on the knowledge that we are assuming.
Finally, you are responsible for checking the announcements (either on the site
or by RSS) every 24 hours.
A note about the labs
We recommend that you start the labs long before they are due. The
standard advice is "Start the labs early", but that is not quite right.
The best advice that we know of is "Start the labs on time, but on time
is probably much earlier than you think".
Readings and references
There will be two kinds of readings in this class: required and
background. The background reading covers foundational material that we
will assume that you know. Do you have this background? Should you do
this reading? One guideline is this: if you've taken CS439H, CS372, or
the equivalent, you probably already have this background. However, you
may wish to look over this reading anyway just to make sure. If you've
taken only CS352 or CS352H, then you should probably do this reading.
- Required: readings listed on the schedule page
- Background: readings listed on the schedule page, most of which will
be from this textbook:
- Modern Operating Systems (third
edition), Andrew S. Tanenbaum. (Prentice Hall, Inc., 2008. ISBN:
0-13-600663-9.) If you don't want to buy this edition, note that it
should be on
reserve at PCL. Also, the second edition of the book will probably be
fine, but we cannot guarantee that.
- Optional: Principles of Computer System Design: An
Introduction, Jerome Saltzer and M. Frans Kaashoek (Morgan
Kaufmann, 2009. ISBN: 0-12-374957-3.) This book may be a useful reference. It too
is on reserve at PCL.
- Optional: Operating System Concepts (eighth edition), Abraham
Silberschatz, Peter Baer Galvin, and Greg Gagne. (John Wiley & Sons,
2008. ISBN: 0-47-012872-0.) This book may be a useful reference. It too
is on reserve at PCL.
- Optional: The C programming language (second edition), Brian W.
Kernighan and Dennis M. Ritchie. (Prentice Hall, Inc., 1988. ISBN:
0-13-110362-8.) This book is a classic reference to C. It too is on
reserve at PCL.
We made the reserve requests in the first week of class. If you
have problems retrieving the books, please let the course staff
know.