Welcome to CPSC 415
Advanced Operating Systems

Instructor: Donald Acton

Course Pre-requisites One of: CPSC 313 or EECE 315

This course assumes that the majority of students will be meeting the course pre-requisite through the CPSC 313/213 stream. As a result, students meeting the course pre-requisite coming via some other route may, at times, find that material is being repeated or that they are missing some material covered in CPSC 213/313. In particular, students may need to pickup material pertaining to the X86 assembler and process stack organization that is covered in CPSC 313/213. For any needed missing topics, students will be expected to acquire that information on their own, although references can be provided if needed. Students who do not have the course pre-requsites will not be permitted to take the course.

Overview

This course deals with the structure and implementation of operating systems. Building on the material from CPSC 313, the prerequisite for this course, the course examines how operating system functions such as process control, memory protection, interprocess communication, device drivers, and file systems are actually implemented. Based on the lectures, additional references, and individual research, students will design and implement various operating system components in order to better understand the inner workings of this very critical piece of software.

The course is divided into two parts. The first part of the course examines the low level aspects of operating systems. Such topics as process control, memory management, and interprocess communication will be covered in detail. The second part of the course will focus on a high level functionality such as file systems, security, and naming mechanisms.

This course assumes that student is comfortable with the architectural concepts introduced in CPSC 313 and fluent in C. This is a very "hands-on" course and students will be required to understand complicated C code, understand the structure and operation of the underlying hardware, and write code using a mix of C and X86 assembly code. Realistically, those students who are not comfortable with C or got less than 65% in the pre-requisite course may find this course very difficult and might want to consider other options.

Topics
The following is a tentative list of topics with a rough allocation of lecture time. (Note the order of topics may vary.)

Assignments
The course will have 3 to 4 assignments. Each assignment will explore the design and implementation of one or more core operating system components. Assignments will be drawn from, but are not limited to, such areas as process scheduling, interprocess communication, and/or device drivers.

Reference Texts
There is no assigned text for this course. Students may find the following books to be helpful and they are available on course reserve from the ICICS/Reading Room.

The Design and Implementation of the FreeBSD Operating System
Authors: Marshall Kirk McKusik and George V. Neville-Neil
ISBN: 0-201-70245-2

Operating Systems (Third Edition)
Author:Gary Nutt
ISBN: 0-201-77344-9

Operating Systems Principles
Authors: Bic and Shaw
ISBN 0-13-026611-6
The University of British Columbia, A place of mind brand logo