McGill University
School of Computer Science

Computer Science 308-310
Operating Systems

Instructor: Carl Tropper
324 McConnell
Phone: 398-3743
E-mail:carl@cs.mcgill.ca
Office hours
Tuesday,Thursday : 11-1, McConnell

Teaching assistants

Jun Wang
e-mail:jwang90@cs.mcgill.ca
Office hours:Thursday, 1-3 PM, ENGTR TA room, 3rd floor

Qing Xu
e-mail:qxu2@cs.mcgill.ca
Office hours:Wednesday, 10-12 AM, ENGTR TA room, 3rd floor
e-mail:qxu2@cs.mcgill.ca


Course Outline:

Viewed from the outside, an operating system (OS) is an interface for the user of a computer to the hardware which actually comprises the computer. Its job is to allow the user to make use of the hardware without actually acquainting himself with the details of its operation. Hence high-level abstractions for such functions as the reading and writing of files are necessary for someone to be actually able to use a computer. Another way of saying this is that the user is presented with a virtual machine to make use of. However, the OS also has the fundamental job of managing the hardware, i.e. providing access to the many programs which compete for the hardware (processors, disks, memory) in an efficient and fair way.

Operating systems have a long and interesting history from the first batch systems to our present generation of personal computer OS's, distributed OS's, and "specialized" systems such as real-time and embedded systems. They continue to evolve and be the subject of active research.

Major topics to be covered in this course are:
Processes and threads- process and thread models, process and thread creation,implementation.....
Deadlocks-their detection and how to deal with them.
Memory management-swapping,virtual memory,page replacement algorithms...
Scheduling-strategies, implementation
File Systems-directories, implementation.....
If time topic: remote files.

It is assumed that any student taking this course can program in C. One reason for this is that OS internals are still written in C. There is some supplementary material available on-line (see below) which is intended to provide a refresher for those of you who have been primarily programming in other languages. The course itself is "systems-oriented", i.e. it is not a course in theory. I intend to emphasize basic concepts in lectures, and will expect a fair amount of programming in the form of assignments, which will comprise a heavy portion of the grade. Expect to work hard.

Textbook
Operating Sytems,third edition, by Gary Nutt. This will be our text book. I intend to follow it for the most part.
Supplementary material is available at supplementary This material includes study questions for each chapter and a review of basic C programming. The slides used for the course are located in slides

Course Evaluation
Mid-term:10%. The mid-term is scheduled for Thursday, November 3. It will cover chapters 1 through 9 (including 8) in the text. You should try to prepare for the exam by doing problems at the end of each chapter. I suggest that you try the following problems: chapter3-3,4 chapter5-3,12,chapter6-6,7,chapter7-6,10,chapter8-3,10, chapter9-7,10. A good way of preparing for this exam is to work with your colleagues/friends together. That way you will learn from one another (and make friends as well). You should eat a lot while doing these problems. It's good for you. Some more problems to practice on are: chapter 10-problem 11, chapter 11-problems 10,11, chapter 12-problem 11, 13, chapter 13-problems 12, 13, chapter 14-problems 8, 10, chapter 15-problems 8, 10.

The grades for assignment 1 are in assign1 The grades for assignment 2 are in assign2 The grades for the midterm are in midterm The grades for assignment 4 are in assign4
Final:40%. The final will cover all of the material in the course up to and inlcluding the bitter end. This means the last day of lectures.
Solutions to the problems are in a word document answers Solutions to the midterm are in a text document midtermanswers Solutions to the second group of problems are in a word document secondsolutions
Projects: 50%

Course assignments and Projects:
We will have several programming assignments listed below. You will be graded via a demo conducted with the TAs.
The assignments for this course are individual. Talk to your colleagues, but don't hand in the same project(s). My policy for copying is simple: all of the parties get a zero on the assignment, and I don't want to hear any stories or excuses.
And now a word from our institution (yada yada yada). "McGill University values academic integrity. Therefore, all students must understand the meaning and consequences of cheating, plagiarism and other academic offences under the Code of Student Conduct and Disciplinary Procedures (see www.mcgill.ca/integrity for more information)."
Grading of the assignments will be done by demonstrating the projects in person to the TA's. We will provide you with sign-up sheets for the appointments. The projects are as follows:
Project 1
Project 2
Project 3
Project 4
Project 5