Computer Science
 

Operating Systems Design

Operating Systems Design
Principles and concepts of operating systems design and the implementation of an operating system.
C S
345
 Hours3.0 Credit, 3.0 Lecture, 0.0 Lab
 PrerequisitesC S 224 & C S 240
 NoteStudents are allowed 1 repeat of each C S undergraduate course (all 100-, 200-, 300- or 400-level courses). This includes all students who received any grade including those who withdraw (receive a "W" grade) from a C S course. Students must wait 1 semester/term before being allowed to take a course they have failed twice. Petitions for exceptions to the policy can be completed at cs.byu.edu/undergraduate-handbook/retake-policy-cs-courses/.
 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.

Shells

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.