Chapter 7: Deadlocks

System Model

  • System Resources

    • Resources include CPU cycles, memory, files, and I/O devices.

    • Each resource type may have several instances.

    • Processes must request, use, and release resources.

  • Resource Allocation Graph (RAG)

    • Vertices:

      • P = Process

      • R = Resource

    • Edges:

      • Request edge (P → R) : Process P requests resource R.

      • Assignment edge (R → P) : Resource R is allocated to process P.

    • Cycle:

      • One instance per resource type → Cycle means deadlock.

      • Multiple instances → Cycle may lead to deadlock.


Deadlock Characterization

A deadlock occurs when processes are waiting indefinitely for resources held by one another.

Necessary Conditions (Coffman Conditions):

  1. Mutual Exclusion – At least one resource must be held in a non-sharable mode.

  2. Hold and Wait – A process holds at least one resource and waits for others.

  3. No Preemption – Resources cannot be forcibly taken away.

  4. Circular Wait – Circular chain of processes, each waiting for a resource held by the next.

All four conditions must hold simultaneously for a deadlock to occur.


Methods for Handling Deadlocks

  1. Deadlock Prevention – Ensure that at least one necessary condition cannot hold.

  2. Deadlock Avoidance – Dynamically ensure system never enters an unsafe state.

  3. Deadlock Detection and Recovery – Detect and recover after a deadlock occurs.

  4. Ignore the Problem – Often used in practice if deadlocks are rare.


Deadlock Prevention

  • Mutual Exclusion: Make resources sharable whenever possible.

  • Hold and Wait: Require processes to request all resources at once or release held ones before requesting new.

  • No Preemption: Allow preemption when a process must wait.

  • Circular Wait: Impose a total ordering of all resource types; processes request resources in increasing order only.


Deadlock Avoidance

  • Safe State: There exists at least one sequence of process execution that allows all to complete.

  • Unsafe State: May lead to a deadlock.

  • Banker’s Algorithm: - Works with multiple resource instances. - Checks if granting a request keeps the system in a safe state before approval.


Deadlock Detection

  • Single Instance per Resource Type: - Use a Wait-for Graph (edges from process to process). - Cycle in the graph ⇒ Deadlock.

  • Multiple Instances per Resource Type: - Use an algorithm similar to the Banker’s algorithm. - Periodically check for deadlocks.


Recovery from Deadlock

  • Process Termination: - Abort all deadlocked processes. - Or abort one at a time until the cycle is broken. - Selection criteria: process priority, time used, or number of resources held.

  • Resource Preemption: - Select a victim and take its resources. - Rollback process state as needed. - Avoid starvation by tracking preemption counts.


Summary

  • Deadlocks arise from competition for limited resources.

  • Four necessary conditions must all exist simultaneously.

  • Systems can prevent, avoid, detect and recover, or ignore deadlocks.