Operating Systems

CS 502
Spring 2006

CS502 is graduate level course in which you will study and compare the design and implementation of modern operating systems. The course covers the key parts that are present in most operating systems and outlines the design tradeoffs of various implementations. Students also will learn to compare a number of the major contemporary operating systems. 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: Monday, 6:00pm - 8:50pm, Fuller Labs 246 (Beckett Room)

Professor: Hugh C. Lauer

Email: <my last name>@cs.wpi.edu

Office hours: (by appointment) but I will try to be in my office by mid-afternoon on class days

Office: Fuller Labs, room 239

Required Textbook:

  • Modern Operating Systems. 2nd edition. by Andrew S. Tanenbaum. Prentice Hall, 2001.

Similar :

  • Operating Systems Concepts. Sixth Edition. by Silberschatz, Galvin, and Gagne. John Wiley and Sons, 2001.

Class Email List: cs502-all at cs.wpi.edu


Grading Policy

Final grades will be computed as follows:

  • Exams: (total 40%)
    • Mid-Semester: 20%
    • Final: 20%
  • Programming Projects: (total 30%)
  • Term Project: (total 25%)
  • Class Participation : (5%)

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 there exist exceptional, extenuating circumstances. Similarly, no makeup exams will be given unless there exist exceptional, extenuating circumstances.

Testing

There will be two in-class exams. The first is roughly mid-way through the semester and the second is during the last week. Exams will be closed book and closed notes, unless otherwise indicated. The majority of each exam will cover basic ideas and objectives of the class with a few questions testing additional understanding and insight.

·         Mid-term exam - Monday, February 27, 2006 starting at 6:00 PM - this exam will cover all the topics assigned and covered in class from the beginning of the course through the class of February 20, 2006.

·         Final exam - Monday, April 24, 2006 starting at 6:00 PM - this exam will cover all the topics assigned and covered in class from the class of March 13, 2006 through the class of April 18, 2006, AND any key high-level concepts from any other topic assigned or covered in class.

Programming Projects

There will be 2 to 4 programming assignments to be done in C/C++ on Unix or Linux systems. 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.

"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.

Term Project

Since this is a graduate course, becoming familiar with current operating systems issues and research literature are part of the goals for this course. There will be one term project in which class members will investigate some operating system related topic and write a term paper.

Class Participation

Students are expected to have read the assigned material before the start of class and should be able to ask and answer relevant questions during the class. In addition, some students may be asked to discuss or compare various design aspects or tradeoffs during a class. Also, the term project will involve making at least one presentation.

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.


Schedule

Classes will start at 6:00PM and end by 8:50PM on Monday's from January 16, 2006 to April 24, 2006. There will be two 5-minute breaks at approximately 7:00 PM and 8:00 PM. The mid-term exam will be on March 6, 2006 and the final exam will be on April 24, 2006.

Because of the cancellation of classes on January 23, 2006, due to the snowstorm, there will be no skipped class on March 6 as previously planned.


Term Project

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

Term Project Presentations (.ppt) (.htm)


Programming Projects

Project 1 – fork (.doc) (.htm)

Project 1 slides (.ppt) (.htm)

 

Project 2 – threads (.doc) (.htm)

Project 2 slides (.ppt) (.htm)

 

Project 3 – Page replacement Algorithms (.doc) (.htm)

Project 3 slides (.ppt) (.htm)

 

Project 4 – Simple Web Server (.doc) (.htm)

Project 4 slides (.ppt) (.htm)


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

Deadlocks

3

Memory Management

4.1, 4.2

Virtual Memory

4.3 - 4.8

File Systems and persistent storage

6

I/O Devices

5

Multiprocessor and Distributed Systems

8

Multimedia Systems

7

Security

9

Networks

TBD

Operating System Design

12


Lecture Slides

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

Week 1

Course Introduction

html

.ppt

 

What is an Operating System?

html

.ppt

 

Concurrency and synchronization

html

.ppt

Week 2

Processes

html

.ppt

 

Scheduling

html

.ppt

 

Unix/Windows processes

html

.ppt

Week 3

Digression on Stacks

html

.ppt

 

Threads

html

.ppt

 

Monitors and other forms of
Interprocess Communication (IPC)

html

.ppt

 

Operating System Organization

html

.ppt

Week 4

Linking and Loading

html

.ppt

 

Memory Management

html

.ppt

 

Paging

html

.ppt

Week 5

Virtual Memory

html

.ppt

Week 6

Input-Output (part 1)

html

.ppt

Week 7

Mid-term Exam

 

 

Week 8

Disks

html

.ppt

 

File Systems

html

.ppt

Week 9

More on File Systems

html

.ppt

 

Networks

html

.ppt

Week 10

Reminder – Term Project

html

.ppt

 

Distributed and Multiprocessor Systems

html

.ppt

 

Distributed File Systems

html

.ppt

Week 11

Introduction to Computer Security

html

.ppt

Week 12
Week 13

Multimedia Systems

html

.ppt

Week 13

Virtual Machine Systems

html

.ppt

Week 13

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)

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)