Unit III - OS
Unit III - OS
INTRODUCTION TO DEADLOCK:-
Every process needs some resources to complete its execution. However, the resource is grantedin a
sequential order.
A Deadlock is a situation where each of the computer process waits for a resource which is being
assigned to some another process. In this situation, none of the process gets executed since the
resource it needs, is held by some other process which is also waiting for some other resource to be
released.
Let us assume that there are three processes P1, P2 and P3. There are three different resourcesR1,
R2 and R3. R1 is assigned to P1, R2 is assigned to P2 and R3 is assigned to P3.
After some time, P1 demands for R1 which is being used by P2. P1 halts its execution since it can't
complete without R2. P2 also demands for R3 which is being used by P3. P2 also stops itsexecution
because it can't continue without R3. P3 also demands for R1 which is being used byP1 therefore
P3 also stops its execution.
In this scenario, a cycle is being formed among the three processes. None of the process is
progressing and they are all waiting. The computer becomes unresponsive since all the processesgot
blocked.
1. Mutual Exclusion
A resource can only be shared in mutually exclusive manner. It implies, if two processcannot
use the same resource at the same time.
A process waits for some resources while holding another resource at the same time.
3. No preemption
The process which once scheduled will be executed till the completion. No other processcan
be scheduled by the scheduler meanwhile.
4. Circular Wait
1. Deadlock Ignorance
Deadlock Ignorance is the most widely used approach among all the mechanism. This is being used
by many operating systems mainly for end user uses. In this approach, the Operating systemassumes
that deadlock never occurs. It simply ignores deadlock. This approach is best suitable for a single end
user system where User uses the system only for browsing and all other normal stuff.
There is always a tradeoff between Correctness and performance. The operating systems like
Windows and Linux mainly focus upon performance. However, the performance of the system
decreases if it uses deadlock handling mechanism all the time if deadlock happens 1 out of 100
times then it is completely unnecessary to use the deadlock handling mechanism all the time.
In these types of systems, the user has to simply restart the computer in the case of deadlock.
Windows and Linux are mainly using this approach.
2. Deadlock prevention
Deadlock happens only when Mutual Exclusion, hold and wait, No preemption and circular waitholds
simultaneously. If it is possible to violate one of the four conditions at any time then the deadlock can
never occur in the system.
The idea behind the approach is very simple that we have to fail one of the four conditions butthere
can be a big argument on its physical implementation in the system.
3. Deadlock avoidance
In deadlock avoidance, the operating system checks whether the system is in safe state or in unsafe
state at every step which the operating system performs. The process continues until the system is in
safe state. Once the system moves to unsafe state, the OS has to backtrack one step.
In simple words, The OS reviews each allocation so that the allocation doesn't cause thedeadlock in
the system.
This approach let the processes fall in deadlock and then periodically check whether deadlock occur
in the system or not. If it occurs then it applies some of the recovery methods to the systemto get rid
of deadlock.
If we simulate deadlock with a table which is standing on its four legs then we can also simulatefour
legs with the four conditions which when occurs simultaneously, cause the deadlock.
However, if we break one of the legs of the table then the table will fall definitely. The same
happens with deadlock, if we can be able to violate one of the four necessary conditions and
don't let them occur together then we can prevent the deadlock.
1. Mutual Exclusion
Mutual section from the resource point of view is the fact that a resource can never be used by more
than one process simultaneously which is fair enough but that is the main reason behind thedeadlock.
If a resource could have been used by more than one process at the same time then the process would
have never been waiting for any resource.
However, if we can be able to violate resources behaving in the mutually exclusive manner thenthe
deadlock can be prevented.
Spooling
For a device like printer, spooling can work. There is a memory associated with the printer which
stores jobs from each of the process into it. Later, Printer collects all the jobs and print each one of
them according to FCFS. By using this mechanism, the process doesn't have to wait for the printer
and it can continue whatever it was doing. Later, it collects the output when it is produced.
We cannot force a resource to be used by more than one process at the same time since it will notbe
fair enough and some serious problems may arise in the performance. Therefore, we cannot violate
mutual exclusion for a process practically.
Hold and wait condition lies when a process holds a resource and waiting for some other resource to
complete its task. Deadlock occurs because there can be more than one process whichare holding one
resource and waiting for other in the cyclic order.
However, we have to find out some mechanism by which a process either doesn't hold any resource
or doesn't wait. That means, a process must be assigned all the necessary resources before the
execution starts. A process must not wait for any resource once the execution has beenstarted.
!(Hold and wait) = !hold or !wait (negation of hold and wait is, either you don't hold or you
don't wait)
This can be implemented practically if a process declares all the resources initially. However,this
sounds very practical but can't be done in the computer system because a process can't determine
necessary resources initially.
Process is the set of instructions which are executed by the CPU. Each of the instruction maydemand
multiple resources at the multiple times. The need cannot be fixed by the OS.
3. No Preemption
Deadlock arises due to the fact that a process can't be stopped once it starts. However, if we takethe
resource away from the process which is causing deadlock then we can prevent deadlock.
This is not a good approach at all since if we take a resource away which is being used by theprocess
then all the work which it has done till now can become inconsistent.
4. Circular Wait
To violate circular wait, we can assign a priority number to each of the resource. A process can't
request for a lesser priority resource. This ensures that not a single process can request a resource
which is being utilized by some other process and no cycle will be formed.
Among all the methods, violating Circular wait is the only approach that can be implementedpractically.
DEADLOCK AVOIDANCE:-
In deadlock avoidance, the request for any resource will be granted if the resulting state of thesystem
doesn't cause deadlock in the system. The state of the system will continuously be checked for safe
and unsafe states.
In order to avoid deadlocks, the process must tell OS, the maximum number of resources aprocess
can request to complete its execution.
The simplest and most useful approach states that the process should declare the maximum number
of resources of each type it may ever need. The Deadlock avoidance algorithm examinesthe resource
allocations so that there can never be a circular wait condition.
The resource allocation state of a system can be defined by the instances of available and allocated
resources, and the maximum instance of the resources demanded by the processes.
Resources Assigned
A 3 0 2 2
B 0 0 1 1
C 1 1 1 0
D 2 1 4 0
A 1 1 0 0
B 0 1 1 2
C 1 2 1 0
D 2 1 1 2
1. E = (7 6 8 4)
2. P = (6 2 8 3)
Above tables and vector E, P and A describes the resource allocation state of a system. There are4
processes and 4 types of the resources in a system. Table 1 shows the instances of each resource
assigned to each process.
Table 2 shows the instances of the resources, each process still needs. Vector E is therepresentation of
total instances of each resource in the system.
Vector P represents the instances of resources that have been assigned to processes. Vector A
represents the number of resources that are not in use.
A state of the system is called safe if the system can allocate all the resources requested by all theprocesses
without entering into deadlock.
If the system cannot fulfill the request of all processes then the state of the system is calledunsafe.
The key of Deadlock avoidance approach is when the request is made for resources then therequest
must only be approved in the case if the resulting state is also a safe state.
The resource allocation graph is the pictorial representation of the state of a system. As its name
suggests, the resource allocation graph is the complete information about all the processes whichare
holding some resources or waiting for some resources.
It also contains the information about all the instances of all the resources whether they areavailable
or being used by the processes.
In Resource allocation graph, the process is represented by a Circle while the Resource isrepresented
by a rectangle. Let's see the types of vertices and edges in detail.
Vertices are mainly of two types, Resource and process. Each of them will be represented by a
different shape. Circle represents process while rectangle represents resource.
A resource can have more than one instance. Each instance will be represented by a dot insidethe
rectangle.
Edges in RAG are also of two types, one represents assignment and other represents the wait of aprocess
for a resource. The above image shows each of them.
A resource is shown as assigned to a process if the tail of the arrow is attached to an instance tothe
resource and the head is attached to a process.
A process is shown as waiting for a resource if the tail of an arrow is attached to the processwhile
the head is pointing towards the resource.
Example
Let's consider 3 processes P1, P2 and P3, and two types of resources R1 and R2. The resourcesare
having 1 instance each.
According to the graph, R1 is being used by P1, P2 is holding R2 and waiting for R1, P3 iswaiting for
R1 as well as R2.
The graph is deadlock free since no cycle is being formed in the graph.
If a cycle is being formed in a Resource allocation graph where all the resources have the singleinstance
then the system is deadlocked.
In Case of Resource allocation graph with multi-instanced resource types, Cycle is a necessarycondition of
deadlock but not the sufficient condition.
If we analyze the graph then we can find out that there is a cycle formed in the graph since thesystem
is satisfying all the four conditions of deadlock.
ALLOCATION MATRIX:-
Allocation matrix can be formed by using the Resource allocation graph of a system. In Allocation
matrix, an entry will be made for each of the resource assigned. For Example, in the following matrix,
en entry is being made in front of P1 and below R3 since R3 is assigned to P1.
Process R1 R2 R3
P1 0 0 1
P2 1 0 0
P3 0 1 0
Request Matrix
In request matrix, an entry will be made for each of the resource requested. As in the followingexample, P1
needs R1 therefore an entry is being made in front of P1 and below R1.
Process R1 R2 R3
P1 1 0 0
P2 0 1 0
Avial = (0,0,0)
Neither we are having any resource available in the system nor a process going to release. Eachof
the process needs at least single resource to complete therefore they will continuously be holding
each one of them.
We cannot fulfill the demand of at least one process using the available resources therefore thesystem
is deadlocked as determined earlier when we detected a cycle in the graph.
In this approach, The OS doesn't apply any mechanism to avoid or prevent the deadlocks. Therefore
the system considers that the deadlock will definitely occur. In order to get rid of deadlocks, The OS
periodically checks the system for any deadlock. In case, it finds any of thedeadlock then the OS will
recover the system using some recovery techniques.
The main task of the OS is detecting the deadlocks. The OS can detect the deadlocks with thehelp
of Resource allocation graph.
In single instanced resource types, if a cycle is being formed in the system then there will definitely
be a deadlock. On the other hand, in multiple instanced resource type graph, detecting
In order to recover the system from deadlocks, either OS considers resources or processes.For
Resource
We can snatch one of the resources from the owner of the resource (process) and give it to the other
process with the expectation that it will complete the execution and will release this resource sooner.
Well, choosing a resource which will be snatched is going to be a bit difficult.
System passes through various states to get into the deadlock state. The operating system can
rollback the system to the previous safe state. For this purpose, OS needs to implement check
pointing at every state.
The moment, we get into deadlock, we will rollback all the allocations to get into the previoussafe
state.
process
Killing a process can solve our problem but the bigger concern is to decide which process to kill.
Generally, Operating system kills a process which has done least amount of work until now.Kill all
process
This is not a suggestible approach but can be implemented if the problem becomes very serious.
Killing all process will lead to inefficiency in the system because all the processes will execute
again from starting.