What is a Wait-For Graph?
A Wait-for Graph is a directed graph used to represent which processes are waiting for which other processes to release resources.
It's derived from a Resource Allocation Graph (RAG) by removing the resource nodes and directly connecting the waiting relationships.
When Does Deadlock Occur?
-
If the Wait-for Graph contains a cycle, then a deadlock exists.
-
In systems with one instance per resource type, a cycle is a definite deadlock.
Example: No Deadlock
Scenario:
| Process |
Holding |
Waiting for |
| P1 |
R1 |
— |
| P2 |
R2 |
R1 (held by P1) |
| P3 |
R3 |
R2 (held by P2) |
Wait-for Graph:
P2 → P1
P3 → P2
Visualization:
P3 → P2 → P1
Example: Deadlock Exists
Scenario:
| Process |
Holding |
Waiting for |
| P1 |
R1 |
R2 (held by P2) |
| P2 |
R2 |
R3 (held by P3) |
| P3 |
R3 |
R1 (held by P1) |
Wait-for Graph:
P1 → P2
P2 → P3
P3 → P1
Visualization:
P1 → P2 → P3 → P1
Why Use Wait-for Graphs?
-
Simpler than Resource Allocation Graphs when only one instance per resource exists.
-
Makes it easy to detect cycles (i.e., deadlocks).
-
Often used in real-time deadlock detection algorithms.
Cycle Detection