Worcester Polytechnic Institute

Computer Science Department


CS 502
Operating Systems

Fall Semester 2018

Welcome to CS 502.  For this course, we will centralize the distribution of information to students here at the course web page. This page can be found on the WPI CS department web server at http://web.cs.wpi.edu/~jb/CS502/ We will also post any necessary announcements regarding class or the project work to the class email list.

*Basic Information
*Course Description
*Significant Dates
*Class Example Code
*The Project

Basic Information

Professor: Jerry Breecher, jb@cs.wpi.edu
Student Assistant:
Meeting Time: Thursday 6:00 p.m. - 8:50 p.m.
Location: Fuller Labs 320
Office Hours: By appointment - usually before or after class; 24 hour response by email

Course Description

This course provides a graduate-level introduction to the theory and design of multi-programmed operating systems. Some of the topic areas covered include concurrent processes, process communication, input/output supervisors, memory management, resource allocation, and process scheduling. Selected topics in distributed operating systems will also be addressed.


Back when I designed the lecture material for this course, I followed a book by Silberschatz, Glavin and Gagne.  The latest version of this book is described below.  This book has now been around for a long time and it doesn't change much from edition to edition.  So if you like to read from a textbook, any of these versions work great.  Over the years, the course material has diverged from what is found in any particular book;  I'm constantly updating the lecture notes, so that those notes may look less and less like any particular book.  You can certainly learn about any of these topics via the power of the Internet.


Silberschatz, Abraham, Peter B. Glavin and Greg Gagne,
Operating System Concepts, Enhanced e-text Tenth Edition, 2018, John Wiley ISBN: 978-1-119-32091-3
Operating System Concepts, Ninth Edition, 2012, John Wiley ISBN: 978-1118063330
Operating System Concepts, Eighth Update Edition, 2011 ISBN: 978-1-1181-1273-1
Operating System Concepts, Eighth Edition, E-Book: Wiley Desktop Edition ISBN 978-0-470-47298-9
I expect that you can use the Eighth or Ninth edition at a considerably lower price than the current edition.

Final Grade

Your final grade will be based on   Projects = 50%, Final Exam = 50%.


As I'm sure you know, Plagiarism is the act of submitting work that you did not do. For us, it means that you submit code for your project that you obtained from someone else.

What are the rules? The rules for this class are very simple. You can talk about the project with anyone and everyone. You can share ideas, you can share understanding. But you can NOT share code. Do NOT show anyone your code, and do not look at anyone else's code. Do NOT say to someone else, "Write it like this. if (true) then ...". You get the idea. Talk with your friends about concepts, but not about code.

Sadly, there are people in past classes who have plagiarised. It is very temping to get help from your friends. It is difficult to say "no" to a friend who asks you for help.

What will happen? If you are caught plagiarising, both people involved will receive an "F" for the course and this will become part of your academic record here at WPI. This is a SERIOUS offense. I have, unfortunately, had to take this action in the past and I hope to not have to do so this semester.

Here is an example of an incident that happened in the class this last year:

The student who GAVE the code says -->

I have a public repository for the project phase 1 on github. It might be due to I forget to make it private. I recalled that XXX asked me to teach him about the working flow of phase 2 and I took my code as an example to show the working flow and concepts involved in phase 2. I did not expect that he would copy the code or structure.

The student who RECEIVED the code says -->

I'm very sorry for this, it has nothing to do with YYY. For the second part, I want to learn from YYY, So I used some of his code in Phase 1 and did the other part like Paging Algorithm and File allocation by myself, I think what you will test in the second part are only those test from test 20 to test 28. I really don't mean to copy his work, I know the results are serious, I just thought it would be Ok if you test parts are original. Please forgive me for this, I'm really really sorry.

The RESULT of this action - both students received an "F" in the course.

Project Assignment Submission

The tool we will be using for project submission is Instruct Assist developed by Professor Craig Shue here at WPI. It's a great tool and makes it easy for you to submit your files. You can access it at https://ia.wpi.edu/cs502/ I would recommend you try it before the project deadline. It's one more tool you should be familiar with as part of your assignment.


In the Table below are pointers to the notes for the course.  The format available can be read by Microsoft PowerPoint.  Lectures generally will be from these notes. Feel free to print them out and use them during class to avoid extensive scribbling.

Lecture Title PowerPoint
Overview Overview.pptx
Project StartHere.pdf
Components Structures.pptx
Processes Processes.pptx
Threads Threads.pptx
File Systems File_Sys.pptx
- - - Fat File System Fat File System.pptx
- - - Unix File System Unix File System.pptx
- - - Z502 File System Z502 File System.pptx
Deadlocks Deadlocks.pptx
Memory Management Memory_Management.pptx
Virtual Memory Virtual_Memory.pptx   Intel.pptx
IO Systems IO_Systems.pptx
Security Security.pptx
Distributed Systems Distributed_System_Structures.pptx
Distributed File System Distributed_File_System.ppt
Distributed Coordination Dist_Coord.pptx
Virtual Systems Virtualization.pptx

Significant Dates

August 23, 6:00PM
First Class
October 21, 11:59 PM
Project Part 1 Due
December 09, 11:59 PM Project Part 2 Due
December 13
Final Exam

Class Example Code

This link will take you to information about a number of programs and code used as Class Demonstrations

The Project

A significant component of the CS 502 course is the course project, in which you will design and implement a basic operating system for a Z502 processor (this is a hypothetical processor architecture and a simulator is provided). The overall project is divided into two project phases.  The first phase builds necessary data structures and implements multi-program scheduling.  The second phase adds virtual memory management to the core implemented in phase 1. 

The project requires substantial programming in C, (3 to 4 thousand lines of code is not atypical), thus students should already have a sound programming foundation. CS 502 is not the place to "pick up" C. For more information, including project phase assignments and Z502 documentation, see the

Project Web Page