- Critical Section
- mutual exclusion: only one has access
- forward progress: if no one is accessing, then can access
- bounded waiting: eventually will access, not wait for ever
- n threads - 1 CPU
- n threads, n CPUs (every CPU has its own intr line; need hardware support for SMP (atomic operations))
- test_and_set: ts(x): if 0, set 1. return x.
-
- compare and swap: if !eq swap
- Semaphore: Busy Waiting
- 1 CPU
-
- n CPUs
- Semaphore: Blocking
- Read Write Lock
Or: