- Instructors: Ion Stoica
- Textbook: Operating Systems: Principles and Practice
- URL: https://inst.eecs.berkeley.edu/~cs162/fa18/
- Introduction
- Process
- Processes, fork
- I/O, files, sockets, networking
- Concurrency: processes and threads
- IPC
- Client-server
- Socket
- Context switching
- Process lifecycle
- Process scheduling
- Process queues
- Shared vs. per-thread state
- Thread API
- yield()
- Cooperating threads, synchronization
- I/O blocking and thread switching
- Thread abstraction
- Thread lifecycle
- Use cases of multi-threading
- User-level thread vs. kernel-level thread
- Multicore
- Hyperthreading
- Mutual exclusion, lock implementation
- User-kernel mode switching
- In-kernel threads
- Thread switch
- Example: threaded web server
- Example: ATM server
- Event-driven vs. multi-threading
- Too-much-milk problem
- Synchronization: lock, semaphores
- Locks
- Semaphores
- Monitors
- Send/receive
- Disable/enable interrupts
- Producer-consumer problem
- Atomic instructions
- Synchronization: condition variables, readers/writers
- Mesa vs. Hoare monitors
- Readers/writers problem
- CPU scheduling (beginning)
- Advanced scheduling
- Deadlock, address translation, virtual memory
- Address translation (1)
- Address translation (2)
- Caching, demand paging
- Demand paging
- I/O
- Input/output, I/O layers, storage devices, I/O performance, low-level optimization
- File systems design: FAT, FFS, NTFS, COW
- File systems, MMAP
- Reliability, transactions, distributed system
- Layering, end-to-end argument
- TCP flow control