Revised June 4, 2014
CS 350: Operating Systems
General description
This course introduces operating systems, what they do, how they are used, and how they are implemented.
Logistics
Audience
- 3A or 3B CS major students
Normally available
- Fall, Winter, and Spring
Related courses
- Pre-requisites: CS 240, 241, 246, (CS 251 or ECE 222)
- Successors: CS 343 and many of the 4th year CS major courses
- Anti-requisites: ECE 254, MTE 241, SE 350
For official details, see the UW calendar.
Software/hardware used
- C programming language
Typical reference(s)
- Operating Systems: Three Easy Pieces, Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, Arpaci-Dusseau Books, 2014
Required preparation
At the start of the course, students should be able to
- Use sequential programming skills
- Understand computer organization
- Write, test, and debug programs of a moderate size
Learning objectives
At the end of the course, students should be able to
- Extend complex programs written by others
- Choose appropriate data structures and algorithms to solve a variety of programming problems
- Select and use suitable editors and development environments (to some extent) and use the tools provided as part of the programming process
- Test if a program runs properly and correct faults by debugging
- Explain the main components of modern operating systems and construct simple implementations of those components
- Produce prose of a technical nature
- Demonstrate awareness of fundamental trade-offs in algorithm design, including time versus space
- Create correct concurrent programs of moderate complexity
- Explain the concepts of threads and processes and address spaces
- Describe memory management (as related to operating systems) and virtual memory
- Discuss issues related to processor scheduling
- Explain how file systems work and how they interact with disk drives
- Describe how operating systems work and how applications interact with devices
- Explain how processes can communicate within the same machine
Typical syllabus
Operating system introduction (2 hours)
- Roles of an operating system
- Three views of an operating system (application, system, and implementation)
- Operating system interaction with devices
Multi-programming (7 hours)
- Processes and threads, system calls, context switching
- Managing processor time
- Types of scheduling, scheduling algorithms
Concurrency (6 hours)
- Principles of concurrency
- Mutual exclusion and semaphores
- Deadlock detection and prevention
Memory management (8 hours)
- Virtual addressing and address translation
- Principal of locality, spatial locality, and temporal locality
- Virtual memory management: segmentation, paging, caching strategies
- Load control, swapping, and thrashing
Device management (3 hours)
- Physical structure and properties of devices
- Device control and interaction, blocking, buffering, disk scheduling, DMA
File systems (5 hours)
- File naming, types, and logical organization
- Space allocation and management
- File system interfaces
- Implementation strategies
Interprocess communication (5 hours)
- Terminology and issues
- Message passing functionality, pipes, sockets, signals, shared memory, and other communication mechanisms