24. Introduction#

One of the key responsibilities of an operating system is that of synchronization—handling concurrent events in a reasonable way, and providing mechanisms for user applications to do so as well. Synchronization occurs for multi-threaded applications and when processes share memory. We first motivate and describe basic synchronization, then discuss common concurrency bugs and introduce the concept of deadlock, where no progress is made. Finally, we discuss more advanced synchronization concepts.