Useful Links
Sys Comps Page
To select topics for this class, I sorted, categorized, and weighted
previos systems exams questions. The results are available
here.
Mailing List
Sign up for the class
mailing list.
I will use the list for announcements and we can all use it for discussions.
Books
(Click on the book cover to go to its site.)
This is a good networking book from which I will teach some of the course.
The companion
site with slides, exams, etc. is
here.
A brand new 4th edition just came out, but I have not seen it yet.
Here is the
companion site.
Steven's
updated book is great for Unix programming
The
table of contents,
and a review.
|
General Information
The papers on this site are now password protected. Use "cs591" as the user
name, and "papers" as the password.
A syllabus for this class
is available in pdf.
This course will cover some of the material usually taught
in cs587 (Advanced Operating Systems) and cs585 (Networking)
and help prepare students for the systems portion of the
comprehensive exam.
We will read published papers in the areas of distributed
systems, networking, systems design, and operating systems
and discuss them in class. We will solve and analyze past
comprehensive exam problems in these areas and use them to
guide the paper selection. Lectures will fill in background
material needed to understand the papers and solve comprehensive
exam questions.
Reading Assignments
This BibTeX file has bibliographic information for the papers
below. Note, that it contains more papers than just the ones we will read.
|
Num.
|
Paper Title and Author(s)
|
Due Date
|
Note Form
|
Notes
|
| 1 |
How to Read a Paper by S. Keshav |
Aug. 28, 2007 |
|
|
| 2 |
End-To-End Arguments in System Design
by J. H. Saltzer, D. P. Reed and D. D. Clark |
Aug. 28, 2007 |
Form 2 |
|
| 3 |
Programming Language Challenges in Systems Codes: Why Systems Programmers Still Use C, and What To Do About It by Jonathan Shapiro |
Aug. 28, 2007 |
Form 3 |
|
| 4 |
The Dawn of the Stupid Network by David S. Isenberg |
Aug. 30, 2007 |
Form 4 |
|
| 5 |
Rethinking the Design of the Internet: the End-to-end Arguments vs. the Brave New World by Marjory S. Blumenthal and David D. Clark |
Sept. 4, 2007 |
Form 5 |
|
| 6 |
Memory Consistency Models by David Mosberger |
Sept. 6, 2007 |
|
|
| 7 |
Time, Clocks, and the Ordering of Events in a Distributed System by Leslie Lamport |
Sept. 13, 2007 |
Form 7 |
|
| 8 |
Modula-2 and Oberon by Niklaus Wirth |
Sept. 18, 2007 |
Form 8 |
Ben |
| 9 |
A Theory of Memory Models by Vijay Saraswat et. al. |
Sept. 25, 2007 |
Form 9 |
|
| 10 |
Lamport on Mutual Exclusion: 27 Years of Planting Seeds by James H. Anderson |
Oct. 2, 2007 |
Form 10 |
Lena |
| 11 and 11b |
The Part-Time Parliament and
Paxos Made Simple by Leslie Lamport |
Oct. 18, 2007 |
Form 11 |
|
| 12 |
The Byzantine Generals Problem by Leslie Lamport et. al. |
Oct. 25, 2007 |
Form 12 |
|
| 13 |
The Google File System
by Sanjay Ghemawat, Howard Gobioff and Shun-Tak Leung |
Nov. 6, 2007 |
Form 13 |
|
| 14 |
The Transport Layer: Tutorial and Survey by Sami Iren et. al. |
Nov. 8, 2007 |
Form 14 |
David |
| 15 |
Xen and the Art of Virtualization
by Paul Barham et. al. |
Nov. 27, 2007 |
Form 15 |
ThanhVu |
| 16 |
Virtual Memory: Issues of Implementation by Bruce Jacob and Trevor Mudge |
Dec. 4, 2007 |
Form 16 |
Mark |
Supplemental Reading
|
Topic
|
Resource
|
| Comps |
Previous comprehensive exams:
Spring 1997,
Fall 1997,
Fall 1998,
Fall 1999,
Fall 2000,
Spring 2001,
Fall 2001,
Spring 2003,
Fall 2003,
Spring 2004,
Fall 2004,
Spring 2005,
Fall 2005,
Spring 2006,
Fall 2006,
Spring 2007, and
Fall 2007.
Some solution files:
Fall 2003, and
Spring 2005.
A studying guide
for the systems portion of the comprehensive exam by Prof. Patrick Bridges.
|
| Paper 2 |
The End-To-End Arguments in System Design paper is a classic and
has been read and cited many times. One of our students found this more
recent update:
A Critical Review of "End-to-End
Arguments in Systems Design" by Tim Moors. It gives some examples of
where the end-to-end argument does not make sense.
|
| Paper 3 |
We have read the paper Programming language challenges in systems codes: why
systems programmers still use C, and what to do about it. The author,
Jonathan Shapiro, is not the only one to propose a successor to C for systems
programming. In Thirty years is long enough:
getting beyond C Eric Brewer et. al. lament the same problem (but are less
straight forward about why C is so important and favored among systems programmers).
|
| Paper 4 |
David Isenberg in The Dawn of the Stupid Network states that the
intelligence of a network should be at its edges. Vrsalovic disagrees in
Intelligent, Stupid, and
Really Smart Networking.
|
| Log-structured file systems |
We covered this in class on August 30th. Rosenblum and Ousterhout
proposed the log-structured file system in
The Design and Implementation
of a Log-Structured File System.
In
Security and log
structured file systems the author points out that it is nearly
impossible to overwrite file data in a log-structured file system.
While overwriting file data in a standard file system is not a secure
or reliable way of destroying data, a log-structured file system makes
it impossible.
Jambor et. al. describe a Linux implementation of a log-structured
file system in Implementation
of a {Linux} Log-Structured File System with a Garbage Collector.
Wikipedia has a nice short article about
log-structured and another about
journaling
file systems.
|
| Memory Consistency (Paper 6) |
Sarita Adve provides a very nice tutorial on shared memory consistency models
in Shared Memory Consistency Models: A Tutorial.
Online, Joe Pfeiffer from NMSU has some nice
class notes.
Peter Druschel's
class notes
are also good and put consistency into a broader context.
The paper
A Unified
Theory of Shared Memory Consistency by Robert
C. Steinke and Gary J. Nutt is quite theoretical but
may help with understanding the relationships among
the various consistency models.
I post the paper about slow memory here
because it is referenced by the main papers on consistency models and it answers the
question about physical exclusion that came up on the mailing list.
|
| More Memory Consistency (Paper 9) |
A good companion to A Theory of Memory Models is
Threads Cannot Be Implemented as a Library.
Also, be sure to look at the Java memory model description which explains what memory models
are in the context of a well-known programming language.
The examples in the paper are expressed in Java code at
this web site.
|
| BSD File System and Soft Updates |
On September 27 we discussed the BSD file system in class and briefly
covered soft updates as an alternative to a log or journal on disk.
The basic structure of the Unix (BSD) file system is explained in
A Fast File System for UNIX.
In Extent-like Performance
from a UNIX File System the authors discuss a variety of
improvements that can make a file system faster. McKusick gives a
nice summary of the changes to the Unix file system over time in
A Brief History of the BSD
Fast File System. The idea of soft updates is introduced in Soft Updates: A Technique for
Eliminating Most Synchronous Writes in the Fast Filesystem.
|
| Paxos (Paper 11 and 11b) |
Lamport explains why he wrote Paxos Made Simple
here.
The story behind the publication
of the original paper, published with an eight-year delay, is
here.
Butler Lampson gave a talk about Paxos on the occasion of celebrating Leslie Lamport's 60th birthday.
The write-up is
here. Not necessarily easy reading...
|
| Mutual Exclusion |
Peterson's algorithm is one of the simplest to guarantee mutual exclusion.
This
web site
has a nice description of the individual elements of the algorithms. By
building the algorithm from scratch, it shows the purpose of each piece
of the algorithm.
|
| Byzantine Generals and Consensus |
In addition to The Byzantine Generals Problem,
this web page.
gives a nice explanation of the algorithm. The history of achieving consensus in
a distributed system is concisely explained in
A
brief history of Consensus, 2PC and Transaction Commit by Mark McKeown.
Wikipedia has good explanations for the
Two-Phase Commit Protocol, the
Three-Phase Commit Protocol. the
ACID properties, and the
Two Generals' Problem.
|
| Network File Systems |
The unpublished paper
A Survey of Distributed File Systems
by Fabio Kon gives a nice overview of several distributed file systems and compares some of the main
features of a distributed file system.
The technical report
Prefix Tables: A Simple Mechanism for Locating Files in a
Distributed System by Welch and Outserhout explains prefix tables in the Sprite
network file system.
|
| Virtual Machines |
While reading Xen and the Art of Virtualization, you may want to
visit
this web page, which has a list of papers the Xen developers recommend to come
up to speed on the topic. (Thanks Ricardo.)
The May 2005 issue of IEEE Computer had a feature on virtualization with
very readable articles:
The Architecture of Virtual Machines,
Virtual Machine Monitors: Current Technology and Future Trends,
Intel Virtualization Technology, and
Rethinking the Design of Virtual Machine Monitors.
|
| Distributed Operating Systems |
We did not really talk about distributed OSes in class, but if you would
like to catch up, the paper
Distributed Operating Systems
by Andrew Tanenbaum and Robbert Van Renesse would be a good start.
|
| Memory Management |
The classic Peter Denning paper
Virtual Memory gives a good introduction to the topic.
In Before Memory was Virtual
Peter Denning describes the evolution of virtual memory and the problems
it solves. A very nice read with a little bit of history woven in.
Page coloring is an important concept and shows up on the comps
once in a while. The paper
The Effect of Page Allocation
on Caches describes the topic.
It is interesting to learn how memory management units work and implement the
principles of paging and virtual memory. The paper
Microprocessor
Memory Management Units provides a nice introduction and
then compares various MMUs.
This is a newer paper that describes the implementation of memory
management units:
Virtual Memory in
Contemporary Microprocessors. It makes a good companion to
our class paper.
|
Calendar
This is tentative and subject to change.
|
Lesson
|
Date
|
Topic
|
What is due
|
| 1 | August 21, 2007 |
Class overview, introductions |
|
| 2 | August 23, 2007 |
Course planing: Exam topics overview |
|
| 3 | August 28, 2007 |
End-to-end arguments |
Papers 2 and 3 |
| 4 | August 30, 2007 |
Log-structured file systems and journaling |
Paper 4 |
| 5 | September 4, 2007 |
Brave New World; Why C? |
Paper 5 |
| 6 | September 6, 2007 |
Memory consistency models |
Paper 6 |
| 7 | September 11, 2007 |
Memory consistency models |
|
| 8 | September 13, 2007 |
Time, clocks, and the ordering of events |
Paper 7 |
| 9 | September 18, 2007 |
Systems programming languages |
Paper 8 |
| 10 | September 20, 2007 |
More on consistency |
|
| 11 | September 25, 2007 |
Finish memory consistency models |
Paper 9 |
| 12 | September 27, 2007 |
BSD file system and soft updates |
|
| 13 | October 2, 2007 |
No class |
Paper 10 |
| 14 | October 4, 2007 |
Test 1 |
|
| 15 | October 9, 2007 |
Discuss paper 10: Mutual exclusion |
|
| October 11, 2007 |
Fall Break, no class |
|
| 16 | October 16, 2007 |
Finish paper 10: Mutual exclusion |
|
| 17 | October 18, 2007 |
Discuss Test 1 |
Paper 11 and
11b |
| 18 | October 23, 2007 |
Discuss paper 11: Paxos |
|
| 19 | October 25, 2007 |
Byzantine Generals |
Paper 12 |
| 20 | October 30, 2007 |
More on Byzantine Generals and consensus |
|
| 21 | November 1, 2007 |
Network File Systems |
|
| 22 | November 6, 2007 |
The Google File System |
Paper 13 |
| 23 | November 8, 2007 |
The Transport Layer |
Paper 14 |
| 24 | November 13, 2007 |
Test 2 (take-home) |
|
| 25 | November 15, 2007 |
Networking; finish transport layer |
|
| 26 | November 20, 2007 |
Internet routing |
|
| November 22, 2007 |
Thanksgiving, no class |
|
| 27 | November 27, 2007 |
Machine virtualization |
Paper 15 |
| 28 | November 29, 2007 |
Discuss Test 2 |
|
| 29 | December 4, 2007 |
Virtual memory/paging |
Paper 16 |
| 30 | December 6, 2007 |
Test 3 (take-home).
LaTeX source |
|
|