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
Make sure you have an edlab
account ASAP!
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
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.
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.
The work of this
course consists of:
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
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.
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
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.