Credits: 4


Prerequisite: 1 course with a minimum grade of C- from (CMSC414, CMSC417, CMSC420, CMSC430, CMSC433, CMSC435, ENEE440, ENEE457); and permission of ENGR-Electrical & Computer Engineering department; and (ENEE350, CMSC330, and CMSC351).
Restriction: Must be in Engineering: Computer program; and permission of ENGR-Electrical & Computer Engineering department.
Credit only granted for: ENEE447 or CMSC412.
The course will present the theory, design, implementation and analysis of computer operating systems. Through classroom lectures, homework, and projects, students learn the fundamentals of concurrency, process management, interprocess communication and synchronization, job scheduling algorithms, memory management, input-output devices, file systems, and protection and security in operating systems. Optional topics may include communications protocols, computer security, and real-time operating systems. The lectures will be complemented with a significant level of programming, bringing up a simple operating system from scratch, concurrently as the topics are discussed in lecture. A weekly recitation section will provide TA support and an informal laboratory atmosphere. Each student will have their own board, so development will be done largely outside the classroom at each student's pace.

Semesters Offered

Spring 2018, Spring 2019, Spring 2020, Spring 2021, Spring 2022, Spring 2023, Spring 2024

Learning Objectives

  • Understand processes and process management
  • Understand synchronization and communication
  • Given a scheduling algorithm, determine time line of actions
  • Understand internals of file system
  • Implement simple device driver

Topics Covered

  • Introduction, processes, process management
  • Inter-process communication (IPC) and synchronization, deadlocks
  • Process scheduling
  • Threads
  • Memory management
  • File system
  • File protection; access control lists
  • Input/Output System
  • Device drivers
  • Real-time operating systems
  • Introduction to multiprocessor and distributed system issues