Operating Systems: Principles and Practice
This course is an introduction to the basic principles underlying current operating systems. Operating systems have evolved over a few decades and have led to a few well accepted abstractions. We will study those concepts and how they fit together: the purpose of an operating system, processes and threads, synchronization between multiple processes, process scheduling, deadlocks, the address space concept, virtual memory, file systems, I/O systems, security, and the basics of networking. The corresponding (weekly) labs cover the "practice" portion of the class, where the students are required to write programs which interact with the operating system, and implement simplified versions of some of the OS modules. The labs require a knowledge of the C programming language and a working knowledge of the Linux operating system, which is introduced in the first lab.
- Week 1: Intro/Review
- Week 2: Memory / Models (No classes Monday)
- Week 3: Models / Threads
- Week 4: Threads
- Week 5: Mutual Exclusion & Semaphores
- Week 6: More semaphores & Deadlock
- Week 7: Deadlock
- Week 8: Midterm 1
- Week 9: Process Scheduling
- Week 10: Spring Break
- Week 11: Memory Management
- Week 12: More Memory Management
- Week 13: File Systems
- Week 14: OS Security
- Week 15: Midterm 2: April 24, 2015
- Week 16: Deadweek: Advanced Topics / Review
- Week 17: Final Exam: May 4, 2015; 7:30-9:30 AM