- Instructors: Adam Bates
- Textbook: Operating Systems: Principles & Practice (2nd Edition)
- URL: https://courses.engr.illinois.edu/cs423/sp2018/
- Introduction
- Kernels and processes: overview
- Kernels and processes: system programming
- Kernels and processes: the kernel abstraction
- Kernels and processes: interrupts
- Kernels and processes: the programming interface
- Concurrency and threads
- Thread abstraction
- Context switch
- yield()
- User-level thread vs. kernel-level thread
- Fork/join concurrency
- Synchronization: synchronization I
- Too-much-milk problem
- Bounded buffer
- Synchronization: synchronization II
- Barrier
- Semaphores
- Locks
- Condition variables
- Mesa vs. Hoare semantics
- Synchronization best practices
- Atomic instructions
- Synchronization: OS support for sync
- Multi-cores
- Spinlock
- Mutex
- Semaphores
- Bounded buffer
- Implementing CVs with semaphores
- Scheduling: Intro
- Scheduling: scheduling in Linux
- Scheduling: scheduling priodic tasks in embedded systems
- Memory: memory background
- Memory: virtual memory management
- Memory: virtual memory 2
- Memory: virtual memory wrap-up
- Virtualization: intro
- Virtualization: emulation-based virtualization
- Virtualization: dynamic binary translation
- Virtualization: process VMs
- File systems: disk scheduling
- File systems: linux disk scheduling
- File systems: file system design
- File systems: directory structures
- File systems: reliable storage
- Security: OS security overview
- Security: epic security fails in OS history
- Security: abusing hardware for fun and profit
- Security: access control in OSes
- Special topics: security wrap-up
- Special topics: energy and power considerations
- Special topics: the Linux audit system