CMPSCI 691J: Advanced Operating Systems (Fall 2005)


Basic Information

Instructor: Mark Corner

Class lectures: T,Th 2:30-3:45
Office Hours: By appointment, Room 330
Credits: 3
Mailing List: cs691j@cs.umass.edu

Textbook: (not required, but helpful) Silberchatz, Galvin, and Gagne Operating Systems Concepts


Project Description

Project 1

Make sure you have an edlab account ASAP!


Papers

General
G-1 Lampson: Hints for Computer System Design

Threads and Synchronization

LM-TS Review Material on Threads and Mutual Exclusion
TS-1 Hoare: Monitors: An Operating System Structuring Concept
TS-2 Anderson: Scheduler activations: Effective kernel support for the user-level management of parallelism
TS-3 Coffman: System Deadlocks

Processor Scheduling

LM-PS Review Scheduling
PS-1 Waldspurger: Stride Scheduling: Deterministic Proportional-Share Resource Management

Additional Reading: PS-2  Waldspurger: Lottery scheduling: Flexible proportional-share resource management

 

Events vs. Threads
CO-1 von Behren: Capriccio: Scalable Threads for Internet Services

CO-2 SEDA: An Architecture for Well Conditioned, Scalable Internet Services


Memory
LM-VM1 Review Virtual memory and page tables
VM-1 Appel: Virtual memory primitives for user programs
VM-2 Chase: Sharing and protection in a single-address-space operating system
VM-3 Hertz: Garbage Collection Without Paging


File Systems
LM-FS Review Material on File Systems
FS-1 McKusick A Fast File System For UNIX
FS-2 Rosenblum: The design and implementation of a log-structured file system
FS-3 Lumb: Towards higher disk head utilization: Extracting free bandwidth from busy disk drives

OS Organization
OS-1 Liedtke: On micro-kernel construction
OS-2 Bershad: Extensibility: Safety and Performance in the SPIN Operating System
OS-3 Engler: Exokernel: An operating system architecture for application-level resource management

Embedded OS

EO-1 Han: A dynamic operating system for sensor nodes

EO-2 Gay: The nesC Language: A Holistic Approach to Network Embedded Systems


Reliability
RB-1 Satyanarayanan: Lightweight recoverable virtual memory
RB-2 Yang: Using Model Checking to Find Serious File System Errors

RB-3 Enhancing Server Availability and Security Through Failure-Oblivious Computing


Virtual Machines
VI-1 Waldsperger: Memory Resource Management in VMware ESX Server
VI-2 Sapuntzakis:  Optimizing the Migration of Virtual Computers

Security

SE-1 Chen:  Detecting Past and Present Intrusions Through Vulnerability-Specific Predicates


General Advice
GA-1 Oakley: Dealing with bad group members
GA-2 Patterson: How to Give a Bad Talk
GA-3 Levin: An Evaluation of the Ninth SOSP Submissions
GA-4 Gabriel: "Worse is better" paper. (more)
GA-5 Davidson: Why you must participate in class, or why you should take more seminars.

 


Course Overview

This course covers advanced topics and current issues in operating systems. The objective of the course is threefold. First, it will expose you to many of the important prior results in the field. Second, it will illustrate current trends in operating systems. Third, it will give you practical experience in the area through the design and execution of a modest research project.

 

This is a graduate-level course; it is meant for CS graduate students, particularly those with a research interest in software systems. The prerequisite for the course is a strong undergraduate course in operating systems.  This means you should know how threads and synchronization work, as well as some elementary facts about disks, file systems, security and virtual memory.  If you do not have these skills I insist that you take CS377 first.

 


Course Requirements

The work of this course consists of:

 

  • Critically reading, analyzing, and actively discussing papers.
  • Completing a programming assignment that the instructor provides.
  • Designing a new programming assignment.
  • Completing a programming assignment that another student has designed.
  • Completing an in-class midterm, and one take home exam.

 

Paper Summaries and Discussion – 15%

 

This course has a textbook; however we will primarily focus on a number of original research papers. It is critically important that you read and digest each paper before it is discussed in class so that you can be an active participant in the discussion. You will need to email a short summary of each paper on the day it is due.  Please email the summary to 691j@cs.umass.edu.  Each summary should be no more than 10 sentences in length. These will be graded on a simple 0-2 scale (no effort, adequate, insightful). All papers are available on line.

 

Class participation is mandatory.  The grade is subjective, so if you have any questions about how you are doing, please see the instructor.


Projects – 45%

 

In addition to reading and presenting papers, you will complete three projects.

 

Project 1

 

The first project is a programming assignment used in our undergraduate course on operating systems.  For the graduate course, this is meant to be a warmup.  The project involves writing a multithreaded program, as well as creating a user-level threading library.  Although this is an undergraduate assignment, it can be quite difficult, even for an experienced programmer.  I urge you to start early.

 

You will be submitting your projects electronically using a script. Projects are due at 6:00 pm on the due date. To account for short-term unexpected events like computer crashes, submission problems, and clock skew, we will allow 6 hours of slack and accept projects until exactly 11:59 pm.  There will be no late assignments accepted.

 

Project 2

 

For project 2, you will design, and complete a new programming project similar to the first in this course.  The first project will give you an idea of the scope and type of project that is required.  It is the kind of project that should take a graduate student two weeks, and a small team of undergraduates a month to complete.  You will be required to design an online grading test apparatus for the project.  I will give you the shell for the grader.

 

You must provide a specification for the project, as well as a sample solution, test cases, and

 

The project should teach the student about some OS concept, elementary or advanced.  A good source of project ideas are the papers from class, recent papers from the field of OS, or undergraduate teaching materials available on the web.  You may design the project to be complete in either Java or C++, but the language must be appropriate for the

 

Project 2 Proposal

 

Your proposal should explicitly state the problem your project will address and generally outline your plan for the project.  We will meet individually and discuss your plan after you turn the proposal in.  You will then briefly present your plan to the class and get feedback on your project.

 

Project 3

 

For the third project, I will assign you another class member’s project at random.  You will then complete their project and provide them with ongoing feedback about how to improve their project.  At the end of the project, you will provide a written assessment of their project, and they will provide a written assessment of your performance on the project.  You may help each other with the project, but keep in mind that if you have to help them too much, your project may have been badly designed!

 

Exams - 40%

 

There will be two exams in this course:

 

The midterm will be in-class. You may use any notes, papers that you wish, but no laptops etc.

 

The exam will be take-home.  It is to be completed individually, over the course of 24 hours. You may use any notes, papers, and online materials that you wish.

 


Course Schedule

Paper summaries are due on the day shown on this schedule, though we may not always complete (or even begin) discussion of a particular paper on its assigned day. This schedule is subject to change as the course develops; changes will be announced in class.

 

Week

Tuesday

Thursday

Deadlines

Sept. 4

 

Intro, LM-TS

4th Proj. 1 Assigned

Sept. 11

G-1, LM-TS

TS-1

 

Sept. 18

TS-2

TS-3,LM-PS

 

Sept. 25

PS-1

CO-1

2nd Proj. 1 Due

Oct. 2

CO-2

LM-VM, VM-1

 

Oct. 9

VM-2

VM-3

11th Proj. 2 Proposal

Oct. 16

LM-FS, FS-1

FS-2

20th Proj. 2 Present

Oct. 23

FS-3

Midterm

 

Oct. 30

OS-1, OS-2

OS-3

 

Nov. 6

No Class (ACM-MM)

No Class (ACM-MM)

 

Nov. 13

OS-3

EO-1

18th Proj. 2 Due

Nov. 20

EO-2

RB-1

 

Nov. 27

RB-2

RB-3

 

Dec. 4

VI-1

VI-2

8th Proj. 3 Due

Dec. 11

SE-1

Reading Day

 

Dec. 18

No Class (Exams)

No Class (Exams)

21st Exam Handout

 


 

Late Work, Exam Conflicts

 

Paper summaries must be turned in via email 30 minutes prior to the beginning of class. No late summaries will be accepted.

 

All project deadlines are 6:00 PM on the day each component is due. Work submitted after 6:00 PM but before midnight is penalized 5%. Thereafter, each day is charged an additional 10%; weekend days count as “days”.   We are going by my clock, not yours, so leave yourself extra time for clock skew.

 


 

Policy on Collaboration and Cheating

 

For graduate students, I would hope that all of this goes without saying:

 

This all may sound pedantic or even harsh, but I have no sympathy for those that gain unfair advantages over their classmates and misrepresent themselves.

 

All projects in this course are to be done by you. Violation will result in a zero on the project in question and initiation of the formal procedures of the University. We use an automated program and manual checks to correlate projects with each other and with prior solutions. At the same time, we encourage students to help each other learn the course material. As in most courses, there is a boundary separating these two situations. You may give or receive help on any of the concepts covered in lecture or discussion and on the specifics of language syntax. You are allowed to consult with other students in the current class to help you understand the project specification (i.e. the problem definition). However, you may not collaborate in any way when constructing your solution—the solution to the project must be generated by you working alone. You are not allowed to work out the programming details of the problems with anyone or to collaborate to the extent that your programs are identifiably similar. You are not allowed to look at or in any way derive advantage from the existence of project specifications or solutions prepared elsewhere.  You may not use other people’s test cases with your own program.  You may not look at their code.  You may not purchase solutions off the internet, or hire people to code your project. 

 

If you have any questions as to what constitutes unacceptable collaboration, please talk to the instructor right away. You are expected to exercise reasonable precautions in protecting your own work. Don’t let other students borrow your account or computer, don’t leave your program in a publicly accessible directory, and take care when discarding printouts.

 

After this class has ended do not distribute your solution to anyone taking this class here, or anywhere else.  As these projects take considerable effort to design, we reuse these projects from year to year.  If we are forced to create new projects each year, they will invariable be much less refined, frustrating, and less educational than the current ones.  Showing your solution to another student is considered facilitating dishonesty and you will be referred to the Academic Honesty Board.  This can result in holding up your graduation, or having a notation put on your transcript.

 

Acts of cheating and plagiarism will be reported to the University Academic Honesty Board. You are responsible for knowing, and will be held to, the University Academic Honesty Policy.   This policy is available online:

 

http://www.umass.edu/dean_students/rights/acad_honest.htm

 

Discussion of course material is not considered cheating and is strongly encouraged. If you receive substantial help from another person you must acknowledge them in your work. If you use any published or unpublished source in any of your own work, you must give full citation.  If you have questions about these policies please see the instructor.