cs591: Networks and Distributed Systems

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.)

Networks book cover 3rd edition

This is a good networking book from which I will teach some of the course. The companion site with slides, exams, etc. is here.

Networks book cover 4th edition

A brand new 4th edition just came out, but I have not seen it yet.

Here is the companion site.

Unix Environment book cover

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
1August 21, 2007 Class overview, introductions
2August 23, 2007 Course planing: Exam topics overview
3August 28, 2007 End-to-end arguments Papers 2 and 3
4August 30, 2007 Log-structured file systems and journaling Paper 4
5September 4, 2007 Brave New World; Why C? Paper 5
6September 6, 2007 Memory consistency models Paper 6
7September 11, 2007 Memory consistency models
8September 13, 2007 Time, clocks, and the ordering of events Paper 7
9September 18, 2007 Systems programming languages Paper 8
10September 20, 2007 More on consistency
11September 25, 2007 Finish memory consistency models Paper 9
12September 27, 2007 BSD file system and soft updates
13October 2, 2007 No class Paper 10
14October 4, 2007 Test 1
15October 9, 2007 Discuss paper 10: Mutual exclusion
October 11, 2007 Fall Break, no class
16October 16, 2007 Finish paper 10: Mutual exclusion
17October 18, 2007 Discuss Test 1 Paper 11 and 11b
18October 23, 2007 Discuss paper 11: Paxos
19October 25, 2007 Byzantine Generals Paper 12
20October 30, 2007 More on Byzantine Generals and consensus
21November 1, 2007 Network File Systems
22November 6, 2007 The Google File System Paper 13
23November 8, 2007 The Transport Layer Paper 14
24November 13, 2007 Test 2 (take-home)
25November 15, 2007 Networking; finish transport layer
26November 20, 2007 Internet routing
November 22, 2007 Thanksgiving, no class
27November 27, 2007 Machine virtualization Paper 15
28November 29, 2007 Discuss Test 2
29December 4, 2007 Virtual memory/paging Paper 16
30December 6, 2007 Test 3 (take-home). LaTeX source

 


Last updated December 6, 2007 by riesen@cs.unm.edu

Valid HTML 4.01 Valid CSS! Made with cascading style sheets Promote VI and the Gimp to create WEB pages!