Modified from Silberschatz, Galvin and Gagne & Stallings Lecture 11 Chapter 6: Process Synchronization (cont)