This is first-year graduate-level course during which you will study the concepts, design, and implementation of modern operating systems. The course will:
The course includes a substantial practical component during which students will write programs that access key operating system features. This term, we hope to also provide the opportunity to program inside the kernel of a major, modern operating system.
Time and Place: Mondays, 6:00pm - 8:50pm, Fuller Labs 320
September 11 — December 11, 2006 (14 weeks, including Thanksgiving week)
Professor:
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: Silberschatz, Galvin, and Gagne, Operating Systems Concepts, Seventh Edition, John Wiley and Sons, 2005.
Supplementary textbook: Andrew S. Tanenbaum, Modern Operating Systems. 2nd edition, Prentice Hall, 2001.
Class e-mail list: cs502-all at cs.wpi.edu.
Course web site: http://web.cs.wpi.edu/~cs502/f06/
Students needing to be absent from class should notify the professor by e-mail as soon as possible.
CS-502 meets for one 3-hour class per week for a fourteen week graduate term (42 hours). Most other graduate classes this term start during Labor Day week and take a break during Thanksgiving week. CS-502, being a Monday class, skipped Labor Day and will meet on the Monday of Thanksgiving week.
This class will be a combination of lecture and class discussion, programming projects, a term project, and quizzes and tests.
There will be one final exam on December 11 of approximately 1.5–2.0 hours. This will be closed book but you may bring one 8˝´11 sheet of prepared notes. In addition, there will be several unannounced quizzes during the term of approximately 30 minutes each; these will be closed book and closed notes. Bring a calculator with you to all classes.
A term project will be assigned to investigate and report on an operating system that is not Windows, Mac, Linux, or Unix. The term project will include an investigative component, an oral report, and a written report.
There will be 4-5 programming projects during the term, each lasting 2-3 weeks. This term, we will experiment with using VMware as a teaching tool. VMware allows each student to have a virtual machine in which a kernel can be installed and debugged, even remotely. This is the first time that such an approach is being attempted at WPI; see below for more information.
Class participation is an essential part of the grade for the course. If you attend lectures but never say anything or engage in class discussions, it will be enough to reduce your grade by one full letter or more. 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:
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 makeup exams or quizzes will be given and no incomplete grades will be assigned unless exceptional, extenuating circumstances exist.
If there are any circumstances that limit or restrict your participation in the class or the completion of assignments, please contact the professor as soon as possible so that we can work something out.
Testing
In-class exams and quizzes will be closed book. For the announced final exam on December 11, students may bring one two-sided, 8˝-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 Linux. Instructions for turning in programming assignment will be included in each project assignment.
Your submission for the assignment must include not only the code for the solution, but also the test code or test cases. All code 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 your test cases and with other test cases developed separately. Your submission must include a makefile for compiling and running your program. It should also include a narrative description, preferably in Microsoft Word format or in PDF format.
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
Unless you have contacted the professor prior to the due date, late submissions 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 Silbershatz, et. al.
|
Topics |
Text Chapters |
|
Introduction, History, Overview |
1 |
|
Concurrency and synchronization |
6 |
|
Processes, Unix and Windows processes, Threads |
3, 5 |
|
Scheduling |
5 |
|
Monitors and Interprocess Communication (IPC) |
6 (again) |
|
General Organization of an Operating System |
2 |
|
Memory Management |
8 |
|
Virtual Memory and Paging |
9 |
|
Input and Output |
13 |
|
Disks |
12 |
|
File Systems and persistent storage |
10, 11 |
|
Security |
14-15 |
|
Networks |
16 |
|
Multiprocessor and Distributed Systems |
16-18 |
|
Real-Time Systems |
19 |
|
Multimedia Systems |
20 |
|
Virtual Machine Systems |
2.8 |
|
Case Study of an Operating System |
21, 22 |
The purpose of the term project is to expose students to operating systems other than the familiar ones — i.e., Windows, MacOS, Linux, and Unix. Each student will research on the web, libraries, or other resources to discover and identify at least six different operating systems that are in use today and will write one short paragraph about each one. From the operating systems identified by all of the students, the instructor will assign one to each student for in-depth research. Each student will be responsible for giving a 10-minute oral report to the rest of the class of his/her operating system, and all students will submit a written report of up to ten pages of that operating system, due at the start of the final class of the term.
Because of the large number of students enrolled in CS-502 this term, the instructor may discuss the possibility of two-person teams to work on the term project.
Term Project Description (.doc,
html)
Term Project Overview Slides (.ppt,
html)
Virtual Machines:
This term, we are attempting something new in CS-502, namely the use of a virtual machine for each student for programming projects. The purpose is to provide a platform on which a student can build, modify, and debug the kernel of an operating system.
A similar capability is already provided for undergraduate students taking CS-3013. In that course, students use the Fossil Lab (see fossil.cs.wpi.edu), a laboratory with a number of dedicated PCs on an isolated network for building and testing Linux kernels. The Fossil Lab is not practical for CS-502 because (a) it can only accommodate one course per term, and (b) it requires students to be physically present on campus to reboot or restore machines after crashes, etc. Since many students in CS-502 live far from campus and/or hold full-time jobs in the Greater Boston region, they would find this onerous.
A virtual machine, by contrast, is a simulated computer implemented on a real machine running some other operating system (called the host operating system). You can install your experimental operating system (called the guest operating system) in the virtual machine, modify it, debug it, and crash it, all without harming the host system. If the guest operating system crashes or things go bad, you can roll back to a previously stable state or replace it entirely with a known good one.
There are three ways for setting up your virtual machine:–
· You may run your virtual machine on the Computer Science Department server csopt4.wpi.edu using an application called VMware Server. To choose this option, see instructions here:– .doc, html.
· You may install and use the free VMware Player application on your own PC (or on a Macintosh that supports Windows programs). To choose, see the following instructions:– .doc, html.
· You may use VMware Workstation, an application that you must purchase, or on a VMware server system at your office. To choose this options, follow the instructions here:– .doc, html.
You may also set up a SUSE Linux 9.3 environment directly on a computer that you control or on a Macintosh Parallels system. The instructions for this are the same as for using VMware Workstation:– .doc, html.
Each student should have a CS department account. If you do not already have such an account, you can apply for one by visiting the following web page:–
If it asks you for a “certificate,” simply click “Okay.” Fill in the form, giving your CCC account, student ID, etc. Where is asks what CS systems for which you need an account, click “Other” and type in the box “VMware.” In the Notes section, specify “Professor Lauer, for CS-502.”
Programming Project Assignments:
Project #1 – Forking processes and Simple shell (.doc, .html)
Slides for assignment of
project (.ppt, .html)
Project #2 – Linux Kernel Hacking (.doc, .html)
Slides for assignment of project (.ppt, .html)
Project #3 – Message Passing in Linux Kernel (.doc, .html)
Slides for assignment of project (.ppt, .html)
Project #4 – Investigation and Report (.doc, .html)
Slides for assignment of project (.ppt, .html)
Copies of the slides and notes used for lectures will be included here prior to the start of each class:
|
Week 1 |
Course
Introduction & |
||
|
|
Process & Concurrency |
||
|
|
Unix / Windows Processes |
||
|
Week 2 |
Discussion |
||
|
|
Threads |
||
|
|
Scheduling |
||
|
Week 3 |
Two
Digressions — Stacks, |
||
|
|
Interprocess
Communication, Monitors, |
||
|
|
Linking and Loading |
||
|
Week 4 |
Outline and Discussion |
||
|
|
Memory
Management |
||
|
|
Paging |
||
|
Week 5 |
Virtual Memory |
||
|
|
Input and Output |
||
|
Week 6 |
Input-Output (continued) |
||
|
|
Disks |
||
|
Week 7 |
File Systems |
||
|
|
More on Disks and File Systems |
||
|
Week 8 |
Outline |
||
|
|
More on Disks, File Systems (continued) |
||
|
|
Networks |
||
|
Week 9 |
Networks (continued) |
||
|
|
Distributed Files Systems |
||
|
Week 10 |
Multi-processor and Distributed Systems |
||
|
Week 11 |
Virtualization |
||
|
|
Multimedia Systems (Part 1) |
||
|
Week 12 |
Multimedia Systems (Part 2) |
||
|
Week 13 |
Protection and Security (Part 1) |
||
|
|
Protection and Security (Part 2) |
||
|
Week 14 |
Final Review |
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). A slight
correction is here.
Lampson, B.W. and Redell,
Lauer, H.C. and
Liu, C. L. and
Layland, James W., “Scheduling Algorithms for Multiprogramming in a
Hard-Real-Time Environment,” Journal of
the Association for Computing Machinery (JACM), vol. 20, #1, January 1973,
pp-46-61. (.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)
Rosenblum, M, and Ousterhout, J. K.,
“The Design and Implementation of a Log-Structured File System,” Proceedings of 13th ACM Symposium
on Operating Systems Principles, Pacific Grove, California, October 1991,
pp. 1-15. (.pdf)
Thompson, Ken, “Reflections on
trusting trust,” Communications of ACM,
vol.27, #8, August 1984, pp. 761-763 (.pdf)