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.
|Professor:||Jerry Breecher, firstname.lastname@example.org|
|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|
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.
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.
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.
|- - - Fat File System||Fat File System.pptx|
|- - - Unix File System||Unix File System.pptx|
|- - - Z502 File System||Z502 File System.pptx|
|Virtual Memory||Virtual_Memory.pptx Intel.pptx|
|Distributed File System||Distributed_File_System.ppt|
|August 23, 6:00PM
|October 21, 11:59 PM
||Project Part 1 Due
|December 09, 11:59 PM||Project Part 2 Due
This link will take you to information about a number of programs and code used as Class Demonstrations
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