Deadlock in Operating Systems Part-II

Chayti
4 min readAug 28, 2024

--

Now that we’ve established the frustration of deadlock in operating systems, let’s meet the “Four Horsemen” — the four essential conditions that, when present together, can lead to a deadlock situation. Understanding these horsemen is crucial for preventing deadlock and ensuring smooth system operation.

These are:

  • The First Horseman: Mutual Exclusion
  • The Second Horseman: Hold and Wait
  • The Third Horseman: No Preemption
  • The Fourth Horseman: Circular Wait
Mutual Exclusion

The First Horseman: Mutual Exclusion

Imagine a single bridge across a river. Only one car can cross at a time. This concept of exclusive access to a resource translates to mutual exclusion in the world of deadlocks. In an operating system, certain resources can only be used by one process at a time. For example:

A printer can only handle one print job at a time.

A file can only be written to by one process at a time to avoid data corruption.

In this condition, only one method must be non-shareable. It means only one process can use it at a time. This condition ensures that a resource cannot be simultaneously accessed or modified by multiple processes.

Hold & Wait

The Second Horseman: Hold and Wait

The analogy of a driver holding the steering wheel while waiting for a bridge to clear aptly captures the essence of the “hold and wait” condition in the realm of operating systems. In the operational world, a process, much like a driver, is an entity that consumes system resources to accomplish a task. These resources can be diverse, ranging from CPU time, memory, files, to peripherals like printers or network connections. The “hold and wait” condition arises when a process is currently in possession of at least one resource (like the driver holding the steering wheel) but requires additional resources (like the clear bridge) to proceed. Until these additional resources become available, the process is in a state of suspended animation, unable to progress.

No Preemption

The Third Horseman: No Preemption

The image of a stubborn driver refusing to yield the bridge mirrors the concept of “no preemption” in the context of deadlocks. In an operating system, “no preemption” signifies that a process, once allocated a resource, retains exclusive control over it until it voluntarily releases it. The system cannot forcibly reclaim the resource, even if it’s idle or if other processes urgently require it. This principle is essential for maintaining data integrity and process consistency. However, it also contributes to the deadlock problem.

Circular wait

The Fourth Horseman: Circular Wait

Picture a chain reaction of drivers on different roads, each waiting for the car ahead to move. In the OS world, this translates to a circular wait. This horseman represents a scenario where a set of processes are waiting for resources held by each other, creating a loop of dependency.

For example:

Process P1 holds resource R1, which is needed by Process P2 and requests for resource R2.

Process P2 holds resource R2, which is needed by Process P1 and requests for resource R1.

Neither process can proceed because they are each waiting for a resource held by the other. This circular dependency leads to a classic deadlock situation.

Remember, deadlock only occurs when all four horsemen are present simultaneously. If even one condition is missing, deadlock can be avoided.

Example of deadlock

Here’s a simple example of a Deadlock involving two processes, Process A and Process B, competing for two resources, Resource X and Resource Y:

Initial State

  • Process A holds Resource X and requests Resource Y
  • Process B holds Resource Y and requests Resource X

Execution Sequence

  • Process A starts and acquires Resource X
  • Process B starts and acquires Resource Y

Stalemate

  • Process A requires Resource Y to complete its task, but it can’t proceed because Process B is holding it.
  • Process B requires Resource X to complete its task but can’t proceed because Process A is holding it.

Neither Process A nor Process B can release their held resource because they are still waiting for another resource to be released. This circular waiting condition fulfills one of the necessary conditions for Deadlock, leading to a Deadlock situation.

--

--

Chayti

Lecturer (CSE) @ Daffodil International university || Former Sr. Web Instructor (Content Strategist) L1 @Programming Hero