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