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
- Protection
- 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!)
Locality: the past often predicts the future (e.g. scheduling, TLBs, paging, file caches, etc.)
Atomic operations: take a collection of operations and make them appear as a single indivisible operation (synchronization, file system consistency)
Layering: build higher-level abstractions to hide messy details (e.g. synchronization, file systems, etc.)
System builder as martyr
What to try next
If you enjoyed this, try:
- CS 144: Networking (A bit more hardware-ish)
- CS 240: Graduate Operating Systems
- CS 244B: Distributed Systems
- CS 190: Software Design
Final comments (after TFW):
- Tried to convey my excitement about this field
- Maybe some of you will feel inspired to work in Systems