Deadlock
A deadlock is a situation in computer science and concurrency theory where two or more processes or threads are unable to proceed with their execution because they are waiting for resources held by each other, causing a standstill. In a deadlock, none of the processes can make progress, leading to a system that is effectively frozen.
Let's illustrate a deadlock situation using two semaphores and two processes:
Scenario: Two Processes and Two Semaphores
Imagine we have two processes, Process A and Process B, and two semaphores, Semaphore X and Semaphore Y. These processes need access to two shared resources, Resource 1 and Resource 2, to complete their tasks. To avoid conflicts and ensure mutual exclusion, they use semaphores. Here's how a deadlock can occur:
Process A starts executing and acquires Semaphore X to access Resource 1.
Process B starts executing and acquires Semaphore Y to access Resource 2.
Now, both processes need access to the other's resource to complete their tasks. Process A needs Resource 2 (guarded by Semaphore Y), and Process B needs Resource 1 (guarded by Semaphore X).
Since neither process can proceed without the other releasing the necessary resource, they both enter a waiting state, where they are blocking for the resources held by the other process.
As a result, both processes are stuck, unable to make progress, and this is a deadlock situation.
Real-World Examples to Motivate Students:
Traffic Intersection Deadlock:
Imagine two roads intersecting with a four-way stop sign.
Cars from one road (Process A) arrive at the intersection and stop, expecting to cross.
Cars from the other road (Process B) also arrive and stop, expecting to cross.
Since both sets of cars cannot move without the other yielding, a deadlock occurs, and traffic comes to a standstill.
Resource Allocation in a Bank:
Consider a bank with two customers (Process A and Process B) who need to access their safety deposit boxes.
The bank uses two keys (Semaphore X and Semaphore Y) to access the respective deposit boxes (Resource 1 and Resource 2).
If both customers arrive at the bank simultaneously and try to access their boxes using their keys, they may end up in a deadlock if they need each other's keys to unlock their deposit boxes. Neither customer can complete their transaction.
In both cases, it becomes evident how a lack of coordination and proper resource management can lead to a deadlock scenario.