G22.3250-001 Honors Operating Systems
Spring 2008
Class: Tuesdays and Thursdays, 3:30-4:45pm, WWH 102
Office hours: Wednesdays, 2:00-3:00pm, 715 Broadway, room 711
Robert Grimm
rgrimm@cs.nyu.edu
[ Overview |
Schedule |
Resources ]
Overview
Honors Operating Systems is a graduate course on operating
and distributed systems. It covers a wide range of systems research,
ranging from historical perspectives to internet-scale services and
mobile/pervasive computing. The class has two major components: (1)
reading, reviewing, and discussing research papers, and (2) performing
a term-long class project. The goals are to expose students to a
wide variety of systems research, to provide them with an opportunity
to perform systems design and implementation of their own, and to
develop their communication skills.
Readings
Readings cover a wide range of research papers and must be
completed before the corresponding class. Students also need to write
a review for each assigned paper (to make sure everyone keeps up with
the readings). Each review should be about a paragraph long and
discuss in the student's own words (1) the main idea(s) of
each paper, (2) the student's main criticisms (regarding soundness,
methodology, presentation, etc.), and (3) relevance to current systems
or future research directions. David Wetherall at the University of
Washington has written a
great guide to reviewing
papers.
Reviews are submitted by emailing them in plain-text format (with
hard line breaks after each line)
to g22_3250_001_sp08@cs.nyu.edu.
Please make sure the subject specifies the paper title. The archive
of all reviews
is here. Paper
reviews are due at 8am on the day of the corresponding class!
Projects
The goal for the projects is to gain experience with designing,
implementing, and evaluating real systems. Projects are term-long and
performed in groups of two or three students. Each group produces a
final report, structured like a conference paper, and presents their
results at the end of the course. Projects can either explore a new
systems challenge, focusing more on design and implementation, or try
to replicate a previously published paper's results, focusing more on
implementation and evaluation. Topics are picked by students in
consultation with the instructor.
To guide project groups through the term, there are several
milestones along the way:
- Project proposal. In about two pages, describe the problem
you intend to address and your proposed solution. You should also
identify non-goals and resources you need to completing the project.
- Literature search. In about a page, identify related work
and compare it with your own work. This milestone should form the
foundation of the related work section of your final paper.
- Mid-term report. In about five pages, describe what you
have achieved so far and the work still left to do. You should also
describe problems you encountered and surprising or unexpected
issues.
- Final report. The final report is a full-length paper (of
10-14 pages) and structured like a conference paper. Motivate your
work, review related work, describe the design and implementation of
your system, and provide an evaluation of its effectiveness. You also
need to give the corresponding talk, with 20 minutes for the
presentation and 10 minutes for questions.
Exams
There is an open book, take home mid-term, but no final exam.
Prerequisites
Undergraduate operating systems. Additionally, experience with
building large software systems and the ability to digest and review
research papers are highly helpful.
Grading Policy
Roughly: 50% for readings, class participation, and mid-term, and
50% for class project. Missed reviews, however, will have a
disproportionate negative impact on the final grade.
Collaboration Policy
Students are encouraged to discuss class topics and readings with
each other. However, each student must write his/her reading review
individually. Students in different project groups may help each
other with general programming questions. However, students in
different groups must not exchange code or use code from
outside sources (such as the Internet) without explicit permission by
the instructor.
Schedule
Introduction
- (Jan 22) Overview of the
course. Slides.
Historical Perspective
Further readings:
Structure and Organization
- (Jan 31) Slides
- W. Wulf, E. Cohen, W. Corwin, A. Jones, R. Levin, C. Pierson, and
F. Pollack. HYDRA: The Kernel of a
Multiprocessor Operating System. Communications of the ACM,
17(6):337-345, June 1974.
- R. Levin, E. Cohen, W. Corwin, F. Pollack, and W. Wulf. Policy/Mechanism
Separation in Hydra. In Proceedings of the 5th ACM Symposium
on Operating Systems Principles, pages 132-140, Austin, Texas,
November 1975.
- (Feb 5) Slides
- (Feb 7) Slides
- M. Frans Kaashoek, Dawson R. Engler, Gregory R. Ganger,
Héctor Briceño, Russel Hunt, David Mazières, Tom
Pinckney, Robert Grimm, and Ken Mackenzie. Application Performance and
Flexibility on Exokernel Systems. In Proceedings of the 16th
ACM Symposium on Operating Systems Principles, pages 52-65, Saint
Malo, France, October 1997.
- Brian N. Bershad, Stefan Savage, Przemyslaw Pardyak, Emin Gün
Sirer, Marc E. Fiuczynski, David Becker, Craig Chamgers, and Susan
Eggers. Extensibility, Safety and
Performance in the SPIN Operating System.
In Proceedings of the 15th ACM Symposium on Operating Systems
Principles, pages 267-283, Copper Mountain, Colorado, December
1995.
- (Feb 12) Slides
- Edouard Bugnion, Scott Devine, and Mendel Rosenblum. Disco: Running Commodity Operating
Systems on Scalable Multiprocessors. In Proceedings of the
16th ACM Symposium on Operating Systems Principles, pages 143-156,
Saint Malo, France, October 1997.
- Paul Barham, Boris Dragovic, Keir Fraser, Steven Hand, Tim Harris,
Alex Ho, Rolf Neugebauer, Ian Pratt, and Andrew Warfield. Xen and the Art of Virtualization.
In Proceedings of the 19th ACM Symposium on Operating Systems
Principles, pages 164-177, Bolton Landing, New York, October
2003.
- (Feb 14) Slides
- Michael M. Swift, Brian N. Bershad, and Henry M. Levy. Improving the Reliability of Commodity
Operating Systems. In Proceedings of the 19th ACM Symposium on
Operating Systems Principles, pages 207-222, Bolton Landing, New
York, October 2003.
- Michael M. Swift, Muthukaruppan Annamalai, Brian N. Bershad, and
Henry M. Levy. Recovering
Device Drivers. In Proceedings of the 6th USENIX Symposium on
Operating Systems Design and Implementation, page 1-16, San
Francisco, CA, December 2004.
Further readings:
- Ellis Cohen and David
Jefferson. Protection in
the Hydra Operating System. In Proceedings of the 5th ACM
Symposium on Operating Systems Principles, pages 141-160, Austin,
Texas, November 1975.
- Dawson R. Engler, M. Frans Kaashoek, and James O'Toole
Jr. Exokernel: An Operating
System Architecture for Application-Level Resource Management.
In Proceedings of the 15th ACM Symposium on Operating Systems
Principles, pages 251-266, Copper Mountain, Colorado, December
1995.
Managing Concurrency
Further readings:
- Carl A. Waldspurger and William
E. Weihl. Lottery
Scheduling: Flexible Proportional-Share Resource Management.
In Proceedings of the First USENIX Symposium on Operating Systems
Design and Implementation, pages 1-11, Monterey, California,
November 1994.
- Vivek S. Pai, Peter Druschel, and Willy
Zwaenepoel. Flash: An Efficient and
Portable Web Server. In Proceedings of the 1999 USENIX Annual
Technical Conference, pages 199-212, Monterey, California, June
1999.
- Atul Adya, Jon Howell, Marvin Theimer, William J. Bolosky, and
John R. Douceur. Cooperative
Task Management without Manual Stack Management. In Proceedings
of the 2002 USENIX Annual Technical Conference, Monterey,
California, June 2002.
Communication
Further readings:
- Andrew D. Birrell and Bruce Jay
Nelson. Implementing Remote Procedure
Calls. ACM Transactions on Computer Systems, 2(1):39-59, February
1984.
- J. H. Saltzer, D. P. Reed, and D. D. Clark. End-to-End Arguments in System
Design. ACM Transactions on Computer Systems, 2(4):277-288,
November 1984.
- Amitanand S. Aiyer, Lorenzo Alvisi, Allen Clement, Mike Dahlin,
Jean-Philippe Martin, and Carl
Porth. BAR Fault Tolerance for
Cooperative Services. In Proceedings of the 20th ACM
Symposium on Operating Systems Principles, pages 45-58, Brighton,
UK, October 2005.
- Bjarne Steensgaard and Eric Jul. Object and Native Code Thread
Mobility Among Heterogeneous Computers. In Proceedings of the
15th ACM Symposium on Operating Systems Principles, pages 68-77,
Copper Mountain, Colorado, December 1995.
Virtual Memory
- (Mar 13) Slides
- Henry M. Levy and Peter
H. Lipman. Virtual Memory Management
in the VAX/VMS Operating System. IEEE Computer, 15(3):35-41,
March 1982.
- Richard Rashid, Avadis Tevanian, Michael Young, David Golub,
Robert Baron, David Black, William Bolosky, and Jonathan Chew. Machine-Independent Virtual Memory
Management for Paged Uniprocessor and Multiprocessor
Architectures. In Proceedings of the Second International ACM
Conference on Architectural Support for Programming Languages and
Operating Systems, pages 31-39, Palo Alto, California, October
1987.
- (Mar 25) Slides
- Andrew W. Appel and Kai Li. Virtual Memory Primitives for
User Programs. In Proceedings of the 4th International ACM
Conference on Architectural Support for Programming Languages and
Operating Systems, pages 96-107, Santa Clara, California, April
1991.
- (Mar 27) Slides
- M. Satyanarayanan, Henry H. Mashburn, Puneet Kumar, David C.
Steere, and James J. Kistler. Lightweight Recoverable Virtual
Memory. In Proceedings of the 14th ACM Symposium on Operating
Systems Principles, pages 146-160, Asheville, North Carolina,
December 1993.
Further readings:
File Systems
- (Apr 1) Slides
- Adam Sweeney, Doug Doucette, Wei Hu, Curtis Anderson, Mike
Nishimoto, and Geoff Peck. Scalability in the XFS File System.
In Proceedings of the USENIX 1996 Annual Technical Conference,
pages 1-14, San Diego, California, January 1996.
- (Apr 3) Slides
- (Apr 8) Slides
- Michael N. Nelson, Brent B. Welch, and John K. Ousterhout. Caching in the Sprite Network File
System. ACM Transactions on Computer Systems, 6(1):134-154,
February 1988.
- John H. Howard, Michael L. Kazar, Sherri G. Menees, David A.
Nichols, M. Satyanarayanan, Robert N. Sidebotham, and Michael
J. West. Scale and Performance in a
Distributed File System. ACM Transactions on Computer Systems,
6(1):51-81, February 1988.
- (Apr 10) Slides
- Atul Adya, William J. Bolosky, Miguel Castro, Gerald Cermak,
Ronnie Chaiken, John R. Douceur, Jon Howell, Jacob R. Lorch, Marvin
Theimer, and Roger P. Wattenhofer. FARSITE: Federated, Available, and
Reliable Storage for an Incompletely Trusted Environment.
In Proceedings of the 5th USENIX Symposium on Operating Systems
Design and Implementation, pages 1-14, Boston, Massachusetts,
December 2002.
Further readings:
- Marshall K. McKusick, William N. Joy, Samuel J. Leffler, and
Robert S. Fabry. A Fast File System for
UNIX. ACM Transactions on Computer Systems, 2(3):181-197, August
1984.
- Chandramohan A. Thekkath, Timothy Mann, and Edward K. Lee. Franigpani: A Scalable Distributed
File System. In Proceedings of the 16th ACM Symposium on
Operating System Principles, pages 224-237, Saint Malo, France,
October 1997.
- Sanjay Ghemawat, Howard Gobioff, and Shun-Tak
Leung. The Google File System.
In Proceedings of the 19th ACM Symposium on Operating System
Principles, pages 29-43, Bolton Landing, NY, October 2003.
Security
- (Apr 15) Slides
- Jonathan S. Shapiro, Jonathan M. Smith, and David
J. Farber. EROS: A Fast Capability
System. In Proceedings of the 17th ACM Symposium on Operating
Systems Principles, pages 170-185, Kiawah Island, SC, December
1999.
- (Apr 17) Slides
- Stephen Chong, Jed Liu, Andrew C. Myers, Xin Qi, K. Vikram,
Lantian Zhen, and Xin Zheng. Secure
Web Applications via Automatic Partitioning. In Proceedings
of the 21st ACM Symposium on Operating Systems Principles, pages
31-44, Stevenson, WA, October 2007.
- (Apr 22) Slides
Further readings:
- Butler
W. Lampson. Protection.
In Proceedings of the 5th Princeton Symposium on Information
Sciences and Systems, pages 437-443, Princeton, NJ, March 1971.
Reprinted in ACM Operating Systems Review, 8(1):18-24, January
1974.
- Andrew C. Myers and Barbara
Liskov. Protecting Privacy
Using the Decentralized Label Model. ACM Transactions on Software
Engineering and Methodology, 9(4):410-442, October 2000.
- Petros Efstathopoulos, Maxwell Krohn, Steve VanDeBogart, Cliff
Frey, David Ziegler, Eddie Kohler, David Mazières, Frans
Kaashoek, and Robert
Morris. Labels and Event Processes
in the Asbestos Operating Systems. In Proceedings of the 20th
ACM Symposium on Operating Systems Principles, pages 17-30,
Brighton, UK, October 2005.
- Nickolai Zeldovich, Silas Boyd-Wickizer, Eddie Kohler, and David
Mazières. Making Information
Flow Explicit in HiStar. In Proceedings of the 7th USENIX
Symposium on Operating Systems Design and Implementation, pages
263-278, Seattle, WA, November 2006.
- Maxwell Krohn, Alexander Yip, Micah Brodsky, Natan Cliffer,
M. Frans Kaashoek, Eddie Kohler, and Robert
Morris. Information Flow Control for
Standard OS Abstractions. In Proceedings of the 21st ACM
Symposium on Operating Systems Principles, pages 321-334,
Stevenson, WA, October 2007.
Mobile and Pervasive Computing
- (Apr 24) Slides
- (Apr 29) Slides
- Douglas B. Terry, Marvin M. Theimer, Karin Petersen, Alan
J. Demers, Mike J. Spreitzer, and Carl H. Hauser. Managing Update Conflicts in
Bayou, a Weakly Connected Replicated Storage System.
In Proceedings of the 15th ACM Symposium on Operating Systems
Principles, pages 172-182, Copper Mountain, Colorado, December
1995.
- Karin Petersen, Mike J. Spreitzer, Douglas B. Terry, Marvin
M. Theimer, and Alan J. Demers. Flexible Update Propagation
for Weakly Consistent Replicas. In Proceedings of the 16th ACM
Symposium on Operating Systems Principles, pages 288-301, Saint
Malo, France, October 1997.
- (May 1) Slides
- Robert Grimm, Janet Davis, Eric Lemar, Adam MacBeth, Steven
Swanson, Thomas Anderson, Brian Bershad, Gaetano Borriello, Steven
Gribble, and David Wetherall. System Support for Pervasive
Applications. ACM Transactions on Computer Systems,
22(4):421-486, November 2004.
Further readings:
- Lily B. Mummert, Maria R. Ebling, M. Satyanarayanan. Exploiting Weak Connectivity for
Mobile File Access. In Proceedings of the 15th ACM Symposium
on Operating Systems Principles, pages 143-155, Copper Mountain,
Colorado, December 1995.
- M. Satyanarayanan. The Evolution of
Coda. ACM Transactions on Computer Systems, 20(2):85-124, May
2002.
- Athicha Muthitacharoen, Benjie Chen, and David
Mazières. A Low-Bandwidth
Network File System. In Proceedings of the 18th ACM Symposium
on Operating Systems Principles, pages 174-187, Banff, Canada,
October 2001.
Resources
Mailing List
On Papers and Presentations