The course follows a bottom-up construction of a general-purpose operating system, beginning with the hardware interface and ending with the user interface. Specific topics covered include concurrent processes, process management, I/O, virtual memory, file management, resource scheduling, and performance measurement. Students are assumed to be familiar with general machine architecture, functions of system software (compilers, loaders, editors, etc.), and data structures and to have some experience with UNIX or another multiprogramming operating system.

The class is dual-listed as an undergraduate (COS 450) and graduate course (COS 550); graduate students will have additional reading and must prepare a presentation for the class (see below).

Prerequisites: COS 285 (Data Structures) and COS 350 (Systems Programming)

Learning Outcomes

By the end of this course, students will be able to:

  • Describe the purpose of an operating system
  • Describe major chalenges in an operating system design and implementation
  • List the functional components of an operating system
  • Characterize the typical architectures of operating systems
  • Describe how an operating system is designed and implemented
  • Develop Code that extends an existing operating systems
  • Evaluate operating system designs and functions
  • Analyze, identify, and define computing requirements

Textbook

Operating System Concepts Essentials 2nd Edition 2013, Silberschatz, Galvin, and Gagne.

Syllabus

Fall 2020

Offered

Fall semester