Computer Science

Operating Systems Design

Operating Systems Design
Principles and concepts of operating systems design and the implementation of an operating system.
 Hours3.0 Credit, 3.0 Lecture, 0.0 Lab
 PrerequisitesC S 224 & C S 240
 NoteStudents are allowed only 1 retake of C S 345. This includes students who have failed or withdraw (received a "W" grade). If after 1 retake, a student needs to retake the course again, the student must wait 1 semester/term before being allowed to take any C S course and must follow the petition process at This policy does not apply to classes dropped before the add/drop deadline. Petitions for exceptions to the policy can be completed at
 TaughtFall, Winter, Spring even years, Summer odd years
 ProgramsContaining C S 345
Course Outcomes: 

Operating System Basics

Describe the basic components of an operating system and their role in implementations for general purpose, real-time, and embedded applications.

Basic Concepts

Define the concepts of processes, threads, asynchronous signals and competitive system resource allocation.


Show how a shell works.

Scheduling Algorithms for Multi-Tasking

Explain what multi-tasking is and outline standard scheduling algorithms for multi-tasking.

Mutual Exclusion Principles

Discuss mutual exclusion principles and their use in concurrent programming, including semaphore construction and resource allocation.

System Memory Management

Give an overview of system memory management.

Implementing File Systems

Explain how file systems are implemented.

Competing Operating Systems

Discuss the features and strengths of various contemporary operating systems.

Implement an Operating System

Implement a functional, pre-emptive, multi-tasking operating system written in C, including a shell, scheduler, file manager, memory manager, and synchronization components.