This course introduces the key principles underlying modern computer operating systems. The first part of the course (about 25%) will cover processes, threads, and CPU scheduling. The second part (about 25%) will discuss issues related to concurrency, synchronization, and deadlock handling. The third part of the course (about 25%) will focus on memory, memory management, and virtual memory systems. The final part of the course (about 25%) will discuss file, I/O, and storage systems.
In general, we will cover about one chapter of the textbook each week, for the first 10 weeks. We will then jump around a bit in the book, picking and choosing the final topics that we cover in the last 2 weeks or so.
Course Syllabus and Schedule
Week 1: Introduction and Overview
Course overview. Admin details. General overview of operating systems and basic concepts. Chapter 1.
Week 2: Operating System Structures
OS organization. OS services. System calls. User interface. Shell command interpreter. OS design and implementation. Virtual machines. Chapter 2.
Week 3: Processes
Process concept. Process state. Process management. Chapter 3.
Week 4: Threads
Threads concept. Threads versus processes. P-Threads. Multi-threaded applications. Chapter 4.
Week 5: Scheduling
Short-term CPU scheduling. Longer-term scheduling. Priority scheduling. Size-based scheduling. Chapter 5.
Week 6: Concurrency and Synchronization
Concurrent processes. Contention. Synchronization issues. Critical sections. Chapter 6.
Week 7: Deadlocks
Deadlock. Livelock. Progress. Correctness. Deadlock detection and prevention. Chapter 7.
Week 8: Memory Systems
Memory layout. Memory management. Hardware and software support for addressing. Segmentation versus paging. Chapter 8.
Week 9: Virtual Memory
Virtual memory systems. Memory hierarchy. Hardware and software support. Page tables. Page faults. TLBs. Chapter 9.
Week 10: File System Interface
File system concepts. File operations. Basic storage. File management issues. Chapter 10.
Week 11: File System Implementation
File system design issues. Original Unix file system. Unix fast file system. Inodes. Caching. File system optimization. Chapter 11.
Week 12: Storage and I/O Systems
Storage systems. Speed. Capacity. Reliability. RAID systems. Chapter 12. Input/output. Memory-mapping. Peripheral devices. Networked I/O. Storage Area Networks. Chapter 13.
Week 13: Advanced Topics
Selected topics: computer system security, multimedia systems, real-time systems, OS research. Wrap up and review.