Course Overview

This is an introductory graduate-level course in operating systems. The course assumes a basic level of OS knowledge (successful completion of an undergraduate course in operating systems), continuing the study of operating systems by examining the more advanced and intricate aspects of modern OSes.

Through this course, students will gain an understanding of the key concepts of modern OS architecture and its implications on libraries and software. Specifically, the course will concentrate on the memory, scheduler, and storage abstractions, giving students the necessary tools to understand the internals of modern OSes and to reason about their capabilities.

The best way to understand why systems are built the way they are built is to build such systems. To that end, this is primarily a project-oriented course. The lectures will be dominated by a discussion of OS components, with the explicit goal of enabling students to create their own non-trivial operating system that boots on and manages real hardware.

Course Topics

What Software Expects of the OS, What Hardware Provides to the OS, Virtual Memory, Interrupts, DMA, PCI, Device Drivers, Terminals, Scheduling, Storage, Filesystems, Swapping, Caching, Networking, Binary Formats, Kernel Modules, Access Control, Multi-threading, and Multi-processing.

Office Hours

CS 1419, Thursdays, 4:00PM-5:30PM or by appointment

Evaluation

  • Quiz – 0
  • Homework – 20
  • Warm-up Project – 10
  • Course Project – 100
  • Final Exam – 30
  • Participation – 10

Only the Quiz and Course Project are required, the rest of the components are optional. Students will need to attain a total of 100 points to receive an A. Participation will be judged by the instructor based on active interaction during lecture and on the course mailing list.

Prerequisites

An undergraduate course in operating systems is an informal prerequisite for this class, as is proficient knowledge of C programming and debugging. Students without prior operating systems experience or working knowledge of C will be expected to triple their time commitment in the course in order to pass. Prior coursework in computer architecture, networking, and/or storage systems will likely be of help. If you are unsure whether or not you have the necessary background or if you are unable to sign up via the web, please contact the instructor.

Books

The books recommended for this course are Operating System Concepts by Silberschatz, Galvin, Gagne and Operating Systems: Principles and Practice by Anderson and Dahlin. Any editions are fine. Students who do not know C should get a copy of The C Programming Language by Kernighan and Ritchie and study it cover-to-cover.

Assignments

Project assignments

Lecture Slides

These lectures have been developed in parts by Professors Ferdman and Porter of Stony Brook University.

  • (pdf) Introduction (class 1)
  • (pdf) What Software Expects of the OS (classes 2,3,4
  • (pdf) What Hardware Provides to the OS (classes 5,6,7)
  • (pdf) Memory Management (classes 8,9,10)
  • (pdf) Processes and Scheduling (classes 11,12,13)
  • (pdf) Terminals (class 14)
  • (pdf) Physical Page Reclamation (class 15)
  • (pdf) Virtual File System (classes 16, 17, 18)
  • (pdf) Block Cache (class 19)
  • (pdf) PCI & Device Drivers (class 20)
  • (pdf) File Systems (class 21)
  • (pdf) Disk Scheduling (class 22)
  • (pdf) Networking & NFS (classes 23, 24)
  • (pdf) Multiprocessing (classes 25, 26, 27)
  • (pdf) Security

Policies

The collaboration and academic integrity policy in this class is likely to be significantly different from other courses you’ve taken in the past. Absolutely all forms of collaboration are permitted, including collaboration with other students in and outside of class, as well as outside of the university. There are only three explicit requirements for all submitted work:

  • All submitted work must have an explicit Copyright label containing your name.
  • All submitted work must have an explicit license.
  • All Copyright laws of the United States must be respected.

For example, for all submitted materials, you must include a label similar to one of the following:

  • Copyright © 2013 by (Your Name). All rights reserved.
  • Copyright © 2013 by (Your Name). Permission to copy and distribute verbatim copies permitted.
  • Copyright © 2013 by (Your Name). This work is licensed under GPLv3, details in accompanying COPYING file.

Applying open-source licenses to your work (BSD, GPL, or others) is encouraged, but not required. Any willful violations of this policy will result in a failing grade being assigned for the course.

Course Mailing List

Subscription to the course mailing list is required.
Subscribe at http://lists.cs.stonybrook.edu/mailman/listinfo/cse506.