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