Skip to main content

Reference and Selective Reading

You do not need to read the source books front-to-back for this module. Use the concept pages and practice pages first. Open these local chunks only when you need alternate exposition, more worked examples, or a deeper exercise lane.

Source Roles

SourceRoleWhy it is here
Operating Systems: Three Easy Pieces (OSTEP)Primary teaching sourceBest overall arc for threads, locks, condition variables, semaphores, classic problems, and deadlock
Operating System Concepts (Silberschatz)Selective supportStrongest short reinforcements for the critical-section theorem, monitors as a formal construct, and deadlock handling methods
Unix Network Programming (Stevens)Selective supportUseful for pthread API details, cross-process synchronization, and race-condition case studies in network contexts

Read Only If Stuck

Race Conditions and the Critical Section

Locks and Hardware Primitives

Coordination Primitives

Classic Concurrency Problems

Deadlock and Modern Concurrency

Optional Deep Dive

Concept-to-Source Map

Primary conceptBest source if stuckWhy this source
Threads, shared state, and non-atomic operationsOSTEP 26.2: Shared DataThe canonical counter example
Race conditions and the critical sectionOSTEP 26.3: The Heart of the ProblemScheduling as the root cause
Hardware foundationOSTEP 28.6: Test-and-SetPrimitive constructively introduced
Spinlocks vs blocking mutexesOSTEP 28.14: Sleeping Instead of SpinningBest trade-off discussion
Test-and-set / CAS / lock implementationsOSTEP 28.7: Building a Working Spin LockEnd-to-end construction
Lock granularityOSTEP 29.4: Concurrent Hash TableStriping in practice
Condition variablesOSTEP 30.1: Definition and RoutinesClearest formal statement
SemaphoresOSTEP 31.4: Producer-Consumer with SemaphoresCounting semaphores in their natural setting
MonitorsOSC 6.7.1: Monitor UsageFormal monitor construct
Producer-consumerOSTEP 30.2: Producer-Consumer (Part 1)Canonical reference implementation
Readers-writersOSTEP 31.5: Reader-Writer LocksReference implementation with starvation discussion
Dining philosophersOSTEP 31.6: The Dining PhilosophersThe classical walk-through
Deadlock (necessary conditions and strategies)OSTEP: Conditions for DeadlockCoffman conditions presented clearly
Lock-free data structures and memory orderingPreshing: Acquire and Release SemanticsShortest accurate external treatment
Async/await and event loopsOSTEP 33.7: State ManagementWhy single-threaded is not bug-free