Students are introduced to the structure of modern operating systems. Topics include virtual memory, resource allocation strategies, concurrency, and protection. The design and implementation of a simple operating system are performed. This course focuses on teaching the skills required to design and build modules of an operating system kernel. It covers key algorithms and architectures. A companion course, CSE 320, teaches complementary skills from the application programmer's point of view.
Prerequisite
C or higher: CSE 216 or CSE 219 or CSE 260; CSE 320 or ESE 380; CSE Major or ECE major.
Course Outcomes
Knowledge of fundamental concepts underlying modern operating systems, including virtual memory and multiprogramming.
Working knowledge of the components of operating systems, including file systems, the I/O subsystem, and the CPU scheduler.
An ability to design and implement simplified versions of the main modules of operating systems.
Textbook
William Stallings
Operating Systems, Internals and Design Principles (7th edition, latest)
Pearson (Prentice Hall), March 2012.
ISBN-10: 0-13-230998-X. ISBN-13: 978-0-13-230998-1
Supplementary Material:
Tanenbaum, Modern Operating Systems, (3rd edition), Prentice Hall, 2007. ISBN-10: 0-13-600663-9. ISBN-13: 978-0136006633.
Abraham Silberschatz, Peter Galvin, Greg Gagne Operating System Concepts (seventh edition), Wiley, 2004. ISBN 0-471-69466-5.
Major Topics Covered in Course
Computer architecture
Memory management
I/O subsystem
Resource allocation strategies
Concurrency
Threads and processes
CPU Scheduling
Laboratory Projects
Implementation of various modules of operating systems. Typically 3-4 projects that span the period of 8 weeks. The projects are based on either NACHOS or OSP software.