Covers locks for achieving mutual exclusion in concurrent programs. Discusses lock implementation using hardware primitives like test-and-set, compare-and-swap, fetch-and-add. Explains spin locks, ticket locks, and techniques to avoid spinning using yield and blocking.
Explains semaphores combining locks and condition variables for thread synchronization. Covers binary semaphores for mutual exclusion, semaphores for ordering events, producer-consumer bounded buffer problem, throttling threads, and implementing semaphores using locks and CVs.
Introduces semaphores as synchronization primitives invented by Dijkstra. Covers binary semaphores as locks, semaphores for ordering, producer-consumer problem, reader-writer problem, dining philosophers, and implementing semaphores using locks and condition variables.
Explores evolution of virtual machine monitor technology from 1960s mainframes to modern cloud computing. Covers VMM implementation including paravirtualization, full virtualization, binary translation, CPU and memory virtualization, and I/O device virtualization.