Operating Systems Design
|Hours||3.0 Credit, 3.0 Lecture, 0.0 Lab|
|Prerequisites||C S 224 & C S 240|
|Note||Students 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/.|
|Taught||Fall, Winter, Spring even years, Summer odd years|
|Programs||Containing C S 345|
Operating System Basics
Describe the basic components of an operating system and their role in implementations for general purpose, real-time, and embedded applications.
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.