Deadlock Avoidance
Deadlock Avoidance
In an operating system, for deadlock avoidance, we perform the following:
- We only grant the request of the resources if the resulting state of the system will not cause any deadlock in the system.
- We continuously check the state of the system, whether the system state is safe or unsafe.
- It is a must that the process informs the operating system about the maximum resources it needs to finish its execution.
- In the deadlock avoidance algorithm, we check the allocation of the resources to prevent from circular wait condition.
- Even we can define the resource allocation state of the system with the help of the instances of the allocated resources to a process, available resources, and the maximum instance of the resources requested by the process to finish its execution.
The below table showed the state of a system that is recorded at a random time.
Resources Assigned
Process | Type 1 | Type 2 | Type 3 | Type 4 |
A | 0 | 1 | 4 | 1 |
B | 1 | 1 | 2 | 0 |
C | 2 | 0 | 1 | 0 |
D | 3 | 0 | 1 | 2 |
Resources Still Needed
Process | Type 1 | Type 2 | Type 3 | Type 4 |
A | 1 | 1 | 0 | 0 |
B | 0 | 1 | 1 | 2 |
C | 1 | 2 | 1 | 0 |
D | 2 | 1 | 1 | 2 |
I = (8 7 9 5)
J = (6 2 8 3)
K = (2 5 1 2)
In the above tables, we have used vector I, J, and K that define the resource allocation state of the system. The three vectors I, J, and K where:
‘I’ is used to determine the total instances of each resource in the system.
‘J’ is used to represent the instance of resources which we assigned to the processes.
'K' is used to determine the number of resources that are not in use.
In the system, we have four processes and four kinds of systems. Here, Table 1 contains the instances of each resource that are assigned to the processes, and Table 2 contains the resources which the processes still need.
Thus, when a system allocates all the requested resources to the processes without any deadlock occurrence, that system state is called a Safe State. When the system does not complete the resource request of the process, then we called it an Unsafe State.
So, the key to deadlock avoidance is that if a process requests for any resource, then the request should be approved only if the resulting state is in a safe state.