Provides an introduction to operating systems: what they do, how they are used, and how they are implemented.
CS 350 is a required course for CS major academic plans.
Prerequisites: CS 240, 241, 246, (CS 251 or ECE 222); Computer Science students only.
Antirequisites: ECE 354, GENE/MTE 241, SE 350.
Successors: CS 343, and many of the 4th year CS major courses.
Used in Course: C++.
Assumed Background: Sequential programming skills and familiarity with computer organization.
Operating Systems Concepts, 8th ed., by A. Silbershatz, P. Galvin and G. Gagne, John Wiley and Son (Required) ; Course Notes (Optional).
3 hours of lectures per week. Normally available in Fall, Winter, and Spring.
The roles of an operating system. Historical overview of operating system development. Operating system architectures.
Processes and threads, system calls, context switching. Managing processor time. Types of scheduling, scheduling algorithms.
Principles of concurrency. Mutual exclusion and semaphores. Deadlock detection and prevention.
Simple memory management techniques: partitioning, dynamic loading, simple segmentation. Virtual addressing and address translation. Virtual memory management: segmentation, paging, caching strategies. Load control, swapping, and thrashing.
Physical structure and properties of devices, device control and interaction, blocking, buffering, disk scheduling, DMA.
File naming, types and logical organization. Space allocation and management. File system interfaces. Implementation strategies. Case studies.
Terminology and issues, message passing functionality, pipes, sockets, signals, shared memory, and other communication mechanisms.
Authentication, authorization, and access control.

David R. Cheriton School of Computer Science
University of Waterloo
Waterloo, Ontario, Canada N2L 3G1
Tel: 519-888-4567 x33293
Fax: 519-885-1208
Contact | Feedback: cs-uops@cs.uwaterloo.ca | David R. Cheriton School of Computer Science | Faculty of Mathematics