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