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: M 1-2pm, W 8.30-9.30am
  • - Office: 354 Fitzpatrick
  • - Email: cpoellab@cse.nd.edu

  • TA: Pramita Mitra & Everaldo Aguiar
  • - Office hours: T 3.30-4.30pm (Everaldo) & R 5-6pm (Pramita)
  • - Location: Engineering Cluster
  • - Email: pmitra@nd.edu & eaguiar@nd.edu

  • Class location: 356A Fitzpatrick Hall
  • Lecture times: TR 9.30-10.45am

News Items:

  • Project 5 is now available (due 5/10/11 5pm)!
  • Project 4 is now available (due 4/14/11 5pm)!
  • Project 3 is now available (due 3/24/11 5pm)!
  • The submission deadline for project 2 has been changed to 2/28/11 5pm!
  • Project 2 is now available (due 2/24/11 5pm)!
  • Project 1 is now available (due 2/8/11 5pm)!