Tutorials Logic, IN +91 8092939553 info@tutorialslogic.com
Navigation
Home About Us Contact Us Blogs FAQs
Tutorials
All Tutorials
Services
Academic Projects Resume Writing Interview Questions Website Development
Compiler Tutorials

Deadlocks in OS — Conditions, Prevention, Banker's | Tutorials Logic

What is a Deadlock?

A deadlock is a situation where a set of processes are blocked because each process is holding a resource and waiting for a resource held by another process in the set. None of the processes can proceed.

Classic Example: Two processes P1 and P2, two resources R1 and R2:

  • P1 holds R1, waiting for R2
  • P2 holds R2, waiting for R1
  • Neither can proceed -> deadlock

Necessary Conditions for Deadlock

All four conditions must hold simultaneously for a deadlock to occur (Coffman conditions):

ConditionDescription
Mutual ExclusionAt least one resource must be held in a non-shareable mode. Only one process can use the resource at a time.
Hold and WaitA process must be holding at least one resource and waiting to acquire additional resources held by other processes.
No PreemptionResources cannot be forcibly taken from a process. A process must voluntarily release resources.
Circular WaitA circular chain of processes exists where each process holds a resource needed by the next process in the chain.

Resource Allocation Graph

A Resource Allocation Graph (RAG) is used to detect deadlocks:

  • Nodes: Processes (circles) and Resources (rectangles)
  • Request Edge: P -> R (process P is requesting resource R)
  • Assignment Edge: R -> P (resource R is assigned to process P)
  • Deadlock Detection: If the graph contains a cycle, there may be a deadlock. If each resource has only one instance, a cycle means deadlock. If resources have multiple instances, a cycle may or may not mean deadlock.

Deadlock Prevention

Prevent deadlock by ensuring at least one of the four necessary conditions cannot hold:

  • Eliminate Mutual Exclusion: Make resources shareable (not always possible - e.g., printers must be exclusive)
  • Eliminate Hold and Wait: Require processes to request all resources at once before starting. Or release all resources before requesting new ones. Leads to low resource utilization.
  • Allow Preemption: If a process holding resources requests a resource that cannot be immediately allocated, preempt all its resources. Works for resources whose state can be saved (CPU registers, memory).
  • Eliminate Circular Wait: Impose a total ordering on resource types. Processes must request resources in increasing order. Prevents circular chains.

Deadlock Avoidance - Banker's Algorithm

The Banker's Algorithm (Dijkstra, 1965) is a deadlock avoidance algorithm. Before granting a resource request, it checks if the resulting state is safe.

A safe state is one where there exists a safe sequence - an ordering of processes such that each process can obtain all its needed resources, execute, and release them, allowing the next process to proceed.

Data structures:

  • Available: Number of available instances of each resource type
  • Max: Maximum demand of each process for each resource
  • Allocation: Currently allocated resources for each process
  • Need: Remaining resource need = Max - Allocation

Deadlock Detection and Recovery

Detection: Allow deadlocks to occur, then detect them using a wait-for graph (simplified RAG). Periodically run a detection algorithm to find cycles.

Recovery:

  • Process Termination: Abort one or more deadlocked processes. Either abort all deadlocked processes (expensive) or abort one at a time until deadlock is resolved.
  • Resource Preemption: Preempt resources from some processes and give them to others. Must handle rollback (return process to a safe state) and starvation (same process may always be chosen as victim).

Level Up Your Operating system Skills

Master Operating system with these hand-picked resources

10,000+ learners
Free forever
Updated 2026

Ready to Level Up Your Skills?

Explore 500+ free tutorials across 20+ languages and frameworks.