Operating Systems

CS 3013 and CS 502
Summer 2006

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:

  1. Introduce the major components present in many operating systems
  2. Expose students to operating system design choices, tradeoffs and their consequences
  3. Give students some programming experience with operating systems
  4. Introduce students to operating systems issues and research literature.

Index


Course Information

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.


General Outline

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:–

  • Project 1, assigned May 18, due June 1.
  • Project 2, assigned June 1, due June 15.
  • Project 3, assigned June 15, due June 29.

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.


Grading Policy

Final grades will be computed as follows:

  • Exams and quizzes: (total 30 points)
  • Programming Projects: (total 50 points)
  • Class Participation : (20 points)

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.


Topics

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 (CS 502 students only)

Term Project Description (.doc) (.htm)
Term Project Overview Slides (.ppt) (.htm)


Programming Projects (all students)

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)


Lecture Slides

Here are the electronic versions of slides for what we have so far:

Week 1

Course Introduction &
What is an Operating System

html

.ppt

 

Concurrency and Processes

html

.ppt

 

Unix Processes

html

.ppt

Week 2

Review and Discussion of Week 1

html

.ppt

 

Scheduling

html

.ppt

 

Interprocess Communication,
Synchronization,
Monitors

html

.ppt

 

Threads

html

.ppt

 

Two Digressions – Stacks & Producer-
Consumer Model

html

.ppt

Week 3

OS Organization

html

.ppt

 

Linking & Loading

html

.ppt

 

Memory Management

html

.ppt

 

Paging

html

.ppt

Week 4

Virtual Memory

html

.ppt

 

Input/Output (Part 1)

html

.ppt

Week 5

Input/Output (Part 2)

html

.ppt

 

Networks

html

.ppt

 

Disks

html

.ppt

Week 6

File Systems

html

.ppt

 

More on Disks and File Systems

html

.ppt

Week 7

Review Topics

html

.ppt

Week 8

Multimedia System Issues

html

.ppt

Week 9

Multimedia systems (continued)

html

.ppt

 

Multiprocessor and Distributed Systems

html

.ppt

 

Security (not included in lecture)

html

.ppt

Week 10

Virtual Machine Systems

html

.ppt

 

Windows XP

html

.ppt


Reference Material                                

The following papers are relevant to the material presented in class:–

Anderson, Ross, “An Update on the BMA Security Policy,” 1996. (.pdf)

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, D. D., “Experience with Processes and Monitors in Mesa,” Communications of ACM, vol. 23, Feb. 1980, pp. 105-117. (.pdf)

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, D. D. et al. “Pilot: An Operating System for a Personal Computer,” Communications of ACM, vol. 23, Feb. 1980, pp. 81-91. (.pdf)

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)