Course Overview

An operating system is a layer of software that manages hardware resources and that provides user programs with a simple and consistent interface to the computer. In this course, we will examine services and abstractions commonly provided by operating systems, and we will study the underlying mechanisms used to implement them. Topics will include processes and threads, synchronization, CPU scheduling, deadlocks, memory management, segmentation and paging, storage and file systems, security, and virtualization.

The concepts presented in class will be explored through a series of several intensive programming assignments. The assignments will make use of the C proramming language, which is the univeral language for implementing and accessing operating systems at the lowest level. The projects will give students ample practice in manipulating pointers, managing memory, invoking system services, and dealing with error conditions. Although the course will offer some technical guidance on these matters, students should expect to spend significant time debugging, consulting reference materials, and revising the projects until they work properly.

The goals for each student in this course are:
  • To understand the abstractions and services provided by an operating system.
  • To understand the mechanisms and algorithms used to implement these services.
  • To get practical experiences using and implementing operating system services.
The course materials will test each student's achievement of these goals at several levels. For each topic in the course, students must be able to:
  • Describe traditional operating system structures and algorithms.
  • Demonstrate in detail how they apply to various programs and data.
  • Evaluate the strengths and weaknesses of related structures and algorithms.
  • Propose and evaluate a variety of improvements upon traditional methods.
  • Implement basic methods in a working computing system.

Required Textbook

  • Operating System Concepts, A. Silberschatz, P. B. Galvin, G. Gagne, Wiley, 7th or 8th edition.

Recommended Book for C Programming

  • The C Programming Language, B. W. Kernighan, D. M. Ritchie, Prentice Hall, 2nd edition.

Course Information:

  • Instructor: Christian Poellabauer
  • - Office hours: Mon 1-2 & Tue 11-12
  • - Office: 325D Cushing Hall
  • - Email: cpoellab@cse.nd.edu

  • TAs: Hongsheng Lu and Yihua Zhang
  • - Office hours: Tue 1-2 & Thu 3-4 (Yihua) and Wed 2-3 & Fri 12-1 (Hongsheng)
  • - Location: Engineering Cluster
  • - Email: yzhang16@nd.edu, hlu@nd.edu

  • Class location: Hayes Healy Center 129
  • Lecture times: TR 9.30-10.45am

News Items:

  • - The fifth project is now available (deadline: 5/1/12)!
  • - The fourth project is now available (deadline: 4/12/12)!
  • - Note that the deadline for the third project has been extended!
  • - The third project is now available (deadline: 3/22/12)!
  • - The second project is now available (deadline: 2/23/12)!
  • - The first project is now available (deadline: 2/7/12)!