Deadlocks in Operating Systems
Tags: operatingsystems, ios, linux, windows
Published: 2023-06-02 17:15:44

An **Operating System** is defined as a program that, after being initially loaded into the computer by a **boot program**, manages all of the other application programs in a computer.
The Operating System basically acts as an **interface** between the **computer user** and the **computer hardware**, and controls the execution of programs.

In this article, I will explain in detail about the **Deadlocks in Operating System**.

## WHAT ARE DEADLOCKS?

When a process executes in an Operating System, it uses the resources in the following way - 

- Requests a resource

- Use the resource

- Releases the resource

A **Deadlock** is a situation where a set of processes are blocked because each process is **holding a resource** and **waiting for another resource** acquired by some other process.

![deadlock](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mymkrope9u1af2ib2err.jpg)

To define Deadlock in an Operating System, it is a situation where **two or more processes or threads** are **unable to proceed** because each process is waiting for the other to **release a resource or terminate**.

## EXAMPLE OF A DEADLOCK
There are two Processes - **Process 1** and **Process 2**.
There are two Resources - **Resource 1** and **Resource 2**.

1. The **Resource 1** is assigned to the **Process 1** and the **Resource 2** is assigned to the **Process 2**.
2. The **Process 1** is waiting for the **Resource 2** which is acquired by **Process 2** and the **Process 2** is waiting for the **Resource 1** which is acquired by the **Process 1**.

Refer to the following diagram to understand the condition - 

![deadlock example](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q0ovcbp9qmizjlkzeoyj.png)

In this above situation, the requirements of both **Process 1** and **Process 2** are not being fulfilled, thus this is defined as the condition of **Deadlock**.

## NECESSARY CONDITIONS FOR DEADLOCK TO OCCUR (COFFMAN CONDITIONS)
A Deadlock can arise if the following four conditions occur simultanoeusly, these conditions were first introduced by **Edward G. Coffman** - 

- **Mutual Exclusion -** It means that two or more resources are non-shareable.

- **Hold and Wait -** A process is holding atleast one resource and waiting for other resources.

- **No Preemption -** A resource cannot be taken from a process unless the process releases the resource.

- **Circular Wait -** A set of processes waiting for each other in circular form.


![conditions](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zzjvdqojk75e8yljrvu4.png)

## DEADLOCK HANDLING
It is absolutely necessary to handle the condition of a Deadlock, otherwise it can deteriorate your system and hamper the execution of multiple processes.

**Deadlock Handling** refers to the strategies and techniques employed to **prevent**, **detect** and **resolve** Deadlocks in Operating Systems.

There are multiple techniques and strategies which can be used to handle the Deadlocks - 

1. Deadlock Ignorance
2. Deadlock Prevention
3. Deadlock Avoidance 
4. Deadlock Detection and Recovery

**1. Deadlock Ignorance -**
It is the most widely used approach among all the mechanisms. In this approach, the Operating System assumes that the Deadlock never occurs, it simply ignores the Deadlock. This approach is best suitable for a single end user system where the User uses the system only for browsing and all the other stuff.

**2. Deadlock Prevention -**
The condition of Deadlock occurs only when Mutual Exclusion, Hold and Wait, No Preemption and Circular Wait holds simultaneously. If we can somehow **negate** one of the four conditions at any time, then the Deadlock can never occur in the system.
Thus, the main idea behind this approach is to fail one of the 4 necessary conditions for the Deadlock to occur.

**3. Deadlock Avoidance -**
In this technique, the Operating System checks whether the system is in safe state or in unsafe state at every step which the Operating System performs. This process continues until the system is in the safe state. Once the system moves to the unsafe state, the OS has to backtrack one step.

**4. Deadlock Detection and Recovery -**
This approach lets the process fall into the Deadlock and then periodically check whether the Deadlock occurs or not. If the Deadlock occurs then it applies some of the above discussed recovery methods to get rid of the Deadlock.


![lock](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ohdug6cl8y8ne9pipncs.png)


## CONCLUSION
The conclusion is, that the Operating System generally uses the **Deadlock Ignorance** technique to handle Deadlocks as the other techniques would **slow down the Operating System**. Still, there are components that need more protection than others. For this the OS uses a combination of the previous algorithms, usually trying to break the circular wait somehow.

And thats it! You have successfully learnt all about the Deadlocks in Operating Systems!

Connect with me on Linkedin :- [Linkedin](https://www.linkedin.com/in/aryandev-shourie-175025229/)

Do check out my Github for amazing projects:- [Github](https://github.com/Aryan2727-debug)

View my Personal Portfolio :- [Aryan's Portfolio](https://personal-portfolio-aryan.netlify.app/)