This is a combined undergraduate and graduate level course during which you will study and compare the design and implementation of modern operating systems. Undergraduate students register for CS 3013 (seven weeks) and graduate students register for CS 502 (ten weeks).
The course covers key components and principles found in most modern operating systems, and outlines the design tradeoffs of various implementations. The course will:
Time and Place: Thursdays, 6:00pm - 9:50pm, Fuller Labs 311
CS 3013: May 18 — June 29, 2006
CS 502: May 18 — July 20,
2006
Professor: Hugh C. Lauer
Email: <my last name>@cs.wpi.edu
Office hours: (by appointment) but I will try to be in my office at least by 5:00 PM on class days
Office: Fuller Labs, room 239
Required Textbook: Andrew S. Tanenbaum, Modern Operating Systems. 2nd edition, Prentice Hall, 2001.
Supplementary textbook: Silberschatz, Galvin, and Gagne, Operating Systems Concepts, Seventh Edition, John Wiley and Sons, 2005.
Class e-mail lists: cs3013-all at cs.wpi.edu and cs502-all at cs.wpi.edu. E-mails should be sent to both lists in order to reach all students
Students needing to be absent from class should notify the professor by e-mail as soon as possible.
Traditionally, CS 3013 meets for four 1-hour classes per week for a seven-week undergraduate term (28 hours). CS 502 meets for one 3-hour class per week for a fourteen week graduate term (42 hours); generally, CS 502 meets in the evenings for the convenience of part-time students. This combined course will meet for one 4-hour evening class per week — CS 3013 students will attend for the first seven weeks (28 hours), and CS 502 students will attend for the full ten weeks (40 hours).
During the first seven weeks, CS 3013 and CS 502 students will do the same work, same projects, and same exams and quizzes.
There will be one “final” exam on June 29 for all students. This will be approximately 1.5–2.0 hours, and it may include lecture material introduced earlier the same evening. In addition, there may be one or more unannounced quizzes during the term; these would be approximately 30 minutes.
There will be three programming projects during the first seven weeks:–
In addition, I expect to assign at least one more programming project to CS 502 students on June 29, due on or before the final class on July 20. CS 502 students will also be assigned a term project at the start of the term, to be presented orally and in writing during the final three weeks of the course.
Class participation is a key part of this course and a non-trivial part of the grade. Students will be expected to be familiar with and to discuss the relevant sections of the textbook and with other papers assigned during the term.
Final grades will be computed as follows:
In addition, project work and quizzes during the final three weeks will comprise an additional 30 points for CS 502 students.
Final grades will reflect the extent to which you have demonstrated understanding of the material, and completed the assigned projects. The base level grade will be a "B" which indicates that the basic objectives on assignments and exams have been met. A grade of "A" will indicate significant achievement beyond the basic objectives and a grade of "C" will indicate not all basic objectives were met, but work was satisfactory for credit. No incomplete grades will be assigned unless exceptional, extenuating circumstances exist. Similarly, no makeup exams or quizzes will be given except in the case of similarly extenuating circumstances.
Testing
In-class exams and quizzes will be closed book. For the announced final exam on June 29, students may bring one two-sided, 8.5-by-11 inch sheet of prepared notes. For unannounced quizzes, no notes will be permitted.
Each student should have a calculator
available for quizzes and exams.
Programming Projects
The programming assignments are to be done in C/C++ on Unix, Linux, or other POSIX-compliant system. Projects may be developed on any system, but they must be eventually compiled and tested on the CCC Linux systems and submitted using the turnin facility. See each project assignment for more details.
The code for the assignment includes not only the solution, but also the test code or test cases and it must be well commented and easy to read by others. Similarly, any output must be cleanly formatted and easy to read by others.
Be sure to put your name at the top of every file submitted as part of a programming project.
The instructor or grader will typically recompile your program and test it with the test cases of other students and test cases developed separately. Your submission must include a makefile or other instructions for compiling and running your program. It should also include a narrative description, preferably in Microsoft Word format or in PDF format.
"Getting the correct answer" on a programming project is not sufficient to meet the objectives of the assignment. Since operating systems are typically long-lived, frequently revised, complex programs that are used (and maybe abused) by a diverse population of programmers and users, successfully meeting the programming projects' objectives will include designing, developing and testing the programs as if they were part of an operating system.
Academic Honesty
Unless explicitly noted, all work is to be done on an individual basis. While you are encouraged to talk with each other about ideas and course material, all work (i.e. code, test or homework answers) that you submit for grading must be your own work. Any violation of the WPI guidelines for academic honesty will result in no credit for the course and referral to the Student Affairs Office. More information can be found at WPI Policies.
Late Policy
Late anything will be penalized 10% of total assignment value per day (with the weekend counting as one day) or partial day, and no assignments will be accepted after seven days beyond the due date. All assignments are due at the start of class on the due date. Projects will be submitted as directed in class. Exceptions to these rules can be made only beforehand.
The following outlines the topics that will be covered and the corresponding readings from Tanenbaum.
Topics |
Tanenbaum |
Introduction, History, Overview |
1 |
Concurrency and synchronization |
2.3 |
Processes, Unix and Windows processes |
2.1 |
Scheduling |
2.5 |
Monitors and Interprocess Communication (IPC) |
2.3 |
Memory Management |
4.1, 4.2 |
Virtual Memory and Paging |
4.3 - 4.8 |
Input and Output |
5 |
Disks |
5.4 |
File Systems and persistent storage |
6 |
Networks |
TBD |
Multiprocessor and Distributed Systems |
8 |
Security |
9 |
Multimedia Systems |
7 |
Virtual Machine Systems |
TBD |
Case Study of an Operating System |
TBD |
Term Project Description (.doc)
(.htm)
Term Project Overview Slides (.ppt) (.htm)
Project 1 – fork (.doc) (.htm)
Project 1 slides (.ppt) (.htm)
Project 2 – Threads (.doc) (.htm)
Project 3 – Simple Web Server (.doc) (.htm)
Project 3 slides (.ppt) (.htm)
Here are the electronic versions of slides for what we have so far:
Week 1 |
Course
Introduction & |
||
|
Concurrency and Processes |
||
|
Unix Processes |
||
Week 2 |
Review and Discussion of Week 1 |
||
|
Scheduling |
||
|
Interprocess
Communication, |
||
|
Threads |
||
|
Two
Digressions – Stacks & Producer- |
||
Week 3 |
OS Organization |
||
|
Linking & Loading |
||
|
Memory Management |
||
|
Paging |
||
Week 4 |
Virtual Memory |
||
|
Input/Output (Part 1) |
||
Week 5 |
Input/Output (Part 2) |
||
|
Networks |
||
|
Disks |
||
Week 6 |
File Systems |
||
|
More on Disks and File Systems |
||
Week 7 |
Review Topics |
||
Week 8 |
Multimedia System Issues |
||
Week 9 |
Multimedia systems (continued) |
||
|
Multiprocessor and Distributed Systems |
||
|
Security (not included in lecture) |
||
Week 10 |
Virtual Machine Systems |
||
|
Windows XP |
The following papers are relevant to the material presented in class:–
Dijkstra, E. W., “Solution of a Problem
in Concurrent Programming Control,” Communications
of the ACM, vol. 8, #9, Sept. 1965, p 569. (.pdf)
Dijkstra, E. W., “The Structure of the ‘THE’-Multiprogramming System,” Communications of the ACM, vol 11, #5, May 1968, pp.341-346 (.pdf)
Hoare, C.A.R., “Monitors: An
Operating System Structuring Concept,” Communications of ACM, vol. 17,
Oct. 1974, pp. 549-557. (.pdf)
Lampson, B.W., and Redell,
Lampson, B.W., and Sturgis, H. E.,
“Crash Recovery in a Distributed Data Storage System.”
This widely
referenced paper was not published anywhere. A copy of an original Xerox PARC
report dated April 27, 1979 is here (.pdf).
A later version dated June 1, 1979 appears here (.pdf). This
later version carries the following footnote:– “This paper was circulated in several drafts, but it was never
published. Much of the material appeared in Distributed Systems—Architecture
and Implementation, ed. Lampson, Paul, and Siegert, Lecture Notes in
Computer Science 105, Springer, 1981, pp 246-265 and pp 357-370.
Lauer, H.C. and Needham, R.M., “On
the Duality of Operating System Structures,” Operating Systems Review,
vol 13, #2, April 1979, pp. 3-19. (.pdf)
Redell,
Ritchie, D. M. and Thompson, K.,
“The UNIX Time-Sharing System,” Communications
of ACM, vol 17, #7, July 1974, pp. 365-375. (.pdf)
Thompson, Ken, “Reflections on
trusting trust,” Communications of ACM,
vol.27, #8, August 1984, pp. 761-763 (.pdf)