
In the method, the system assumes that deadlock never occurs. Resource Preemption: Resources are taken one by one from a process and assigned to higher priority processes until the deadlock is resolved.Abort one process at a time until the system recovers from the deadlock.We let the system fall into a deadlock and if it happens, we detect it using a detection algorithm and try to recover. If the system enters into an unsafe state, it has to take a step back to avoid deadlock. Therefore, it requires additional information such as how many resources of each type is required by a process. If allocating that resource sends the system into an unsafe state, the request is got granted. When a process requests a resource, the deadlock avoidance algorithm examines the resource-allocation state. Since deadlock occurs when all the above four conditions are met, we try to prevent any one of them, thus preventing a deadlock. This is done by restraining the ways a request can be made. The first two methods are used to ensure the system never enters a deadlock. Methods of Handling Deadlocks in Operating System Therefore, all four conditions are satisfied. None of the two processes releases their resources before their execution and this creates a circular wait. Each process is holding a resource and waiting for the other process the release the resource it requires. Since the resources are non-shareable they can only be used by one process at a time(Mutual Exclusion). This creates a situation of deadlock because none of the two processes can be executed. Process 1 holds "Resource 1" and needs "Resource 2" while Process 2 holds "Resource 2" and requires "Resource 1". In the above figure, there are two processes and two resources. This creates a circular relation between all these processes and they have to wait forever to be executed. For example, lets say there are a set of processes such that P 0 P_0 P 0 depends on P 1 P_1 P 1 , P 1 P_1 P 1 depends on P 2 P_2 P 2 , P 2 P_2 P 2 depends on P 3 P_3 P 3 and P 3 P_3 P 3 depends on P 0 P_0 P 0 . Circular Wait: A set of processes are waiting for each other in a circular fashion.No preemption: The resource can be released by a process voluntarily i.e.Hold and wait: A process is holding at least one resource at a time and is waiting to acquire other resources held by some other process.Mutual Exclusion: Only one process can use a resource at any given time i.e.The four necessary conditions for a deadlock to arise are as follows. Therefore, none of the processes gets executed. This may arise a deadlock situation.Ī deadlock is a situation in which more than one process is blocked because it is holding a resource and also requires some resource that is acquired by some other process. However, when many processes run on a system they also compete for these resources they require for execution.


Once the execution is finished, the process releases the resource it was holding. The article lists the advantages and disadvantages of a deadlock.Īll the processes in a system require some resources such as central processing unit(CPU), file storage, input/output devices, etc to execute it.The article lists the key differences between a deadlock and starvation.The article reflects on the various methods of handling deadlocks.This article defines and explains a deadlock and the necessary conditions for a deadlock situation to occur.There are different ways to detect and recover a system from deadlock. We can prevent a deadlock by preventing any one of these conditions. The four necessary conditions for a deadlock situation to occur are mutual exclusion, hold and wait, no preemption and circular set.

A deadlock in OS is a situation in which more than one process is blocked because it is holding a resource and also requires some resource that is acquired by some other process.
