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 Textbooks

  • Operating System Concepts, A. Silberschatz, P. B. Galvin, G. Gagne, Wiley, 7th or 8th edition.
  • The C Programming Language, B. W. Kernighan, D. M. Ritchie, Prentice Hall, 2nd edition.

Course Information:

  • Instructor: Christian Poellabauer
  • - Office hours: T 11-12, W 9-10
  • - Office: 354 Fitzpatrick
  • - Email: cpoellab@cse.nd.edu

  • TA: Pramita Mitra
  • - Office hours: T 4-5, Th 11-12
  • - Location: Engineering Cluster
  • - Email: pmitra@nd.edu

  • Class location: DeBartolo 217
  • Lecture times: MWF 10.40-11.30am

News Items:

  • - There will be no lecture on Friday March 5th!
  • - The due date for the 3rd project has been pushed back to March 1st (5pm)!
  • - The TA will hold a gdb tutorial on 1/21 at 11am in the Engin. lab.