Computer Science 432 (Detailed Information)

General Description

The purpose of CMPT 432 is to provide an in-depth understanding of operating systems principles: the parts of an operating system, how they are structured, the important policies governing their operation, and the implementation issues. There will be low-level system programming in implementing components of an operating system. Students will have the opportunity to develop systems software for virtual machine environments in which to make these low-level changes.

The lectures will explore some depth of both low-level and high-level issues in Operating Systems, from the details of context switching to security and protection issues. I intend to follow a fairly hands-on approach as much of the course material will not be delivered in lecture format. The notes are there for you to read and we will discuss particular points where clarity is needed, but substantial class time will be devoted to actual programming and design meetings.

Instructor

Dwight Makaroff
Dwight is generally accessible by email, but only for specific questions that cannot be answered on WebCT. Due to the size of the class, I expect to spend some time in the Spinks lab during the term to help with your design and implementation questions.

Time and Place

Time: TTh, 16:00 - 17:15
Room: Thorvaldson S386

Topics

A tentative topic outline is as follows:

Introduction and Overview
Subtopics: Review of CMPT 332
Duration: 1 week.
Processes/Process Management
Duration: 1.5 weeks.
Devices and Device Drivers
Duration: 2 weeks.
I/O and File Systems
Duration: 2 weeks.
IPC and Friends
Duration: 1.5 weeks.
Memory Management
Duration: 1.5 weeks.
Naming/Security/Other Issues
Duration: 1.5 weeks.

Evaluation

There will be 1 assignment, a mid-term exam (held in-class), a research project and an implementation project, and finally, a final examination during the regular examination period. 832 students will also present a research paper, exploring some innovative techniques in operating system implementation and design.

Exact dates will be announced as the course progresses. The approximate weightings for the assignments and examinations are as follows:

Component Weight for 432 Weight for 832
assignments 5% 5%
implementation project 35% 35%
research project 15% 20%
paper presentation 0% 10%
mid-term exam 15% 10%
final exam 30% 20%

Materials

The textbook for this course is

Modern Operating Systems: Third Edition by Andrew S. Tanenbaum, Pearson/Prentice Hall, 2008.

Recommended Reference Reading: Linux Kernel Programming, by Michael Beck et al., Addison Wesley, 2002.

Recommended Reference Reading: Advanced Programming in the UNIX Environment, by W. Richard Stevens and Stephen A. Rago, Addison Wesley, 2005.

Recommended Reference Reading: Operating Systems Design and Implementation (3rd Edition) , by Andrew S. Tanenbaum and Albert S. Woodhull, Pearson/Prentice Hall, 2006.

This course will be administered with BlackBoard/WebCT. There is an abundance of material, index, references, and a glossary. There is also a set of pages with links to websites with excellent tutorials.

Facilities

Students will be using the Linux machines in the Spinks laboratory to do most of their work, and are expected to be familiar with the use of these facilities. There will be access to virtual machine environments on some of the Stealth machines for programming in the Linux kernel. Details of access to these machines for kernel programming will be given early in the term.

Other

A few miscellaneous points:

  • The course will make regular use of the World Wide Web and other Internet facilities. In particular, the discussion forum capability of WebCT will be used extensively, and it is your responsibility to read it daily, as many things will be discussed in that forum that never make it to the classroom.

  • Assignment descriptions will be made available on WebCT only. Submissions will be handled electronically throught WebCT as well.