Course Review
Major class topics
Managing Concurrency:
- Processes and threads
- Creating, dispatching
- Synchronization: races, inconsistency, locks, condition variables, monitors, lock implementation
- Scheduling
- Deadlock
Memory management:
- Linking (static and dynamic)
- Dynamic memory allocation
- Static relocation
- Dynamic relocation: base and bound, segmentation, paging
- TLBs
- Demand paging
- Thrashing
File systems:
- Disks
- Block layout: FAT, multi-level indexes, etc.
- Free space management
- Buffer cache, delayed writes
- Disk scheduling
- Directories
- Crash recovery
- Flash memory
Virtual machines
Major ideas to take away
Virtualization: make one thing look like something else, or many of them
Managing concurrency (synchronization is hard!)
Atomic operations: take a collection of operations and make them appear as a single indivisible operation (synchronization, file system consistency)
Locality: the past often predicts the future (e.g. scheduling, TLBs, paging, file caches, etc.)
Layering: build higher-level abstractions to hide messy details (e.g. synchronization, file systems, etc.)
- Solving hard problems so other people have a better world in which to work
What to try next
If you enjoyed this, try:
- CS 143: Compilers
- CS 144: Networking (A bit more hardware-ish)
- CS 145: Databases
- CS 240: Graduate Operating Systems
- CS 244B: Distributed Systems
- CS 190: Software Design