***What is a Deadlock?
A deadlock occurs when two or more processes become stuck because they are each waiting for the other to release a resource. In other words, they are waiting for an event that will never happen, resulting in a standstill. This situation is called a deadlock.
Necessary Conditions for Deadlock
For a deadlock to occur, four conditions must be true simultaneously:
Mutual Exclusion:
Only one process can use a resource at a time.
If another process requests that resource, it must wait until the resource is released.
Hold and Wait:
A process is holding at least one resource and waiting to acquire additional resources held by other processes.
No Preemption:
Resources cannot be forcibly taken away from a process.
A resource can only be released voluntarily by the process holding it.
Circular Wait:
There is a circular chain of processes, each waiting for a resource that the next process in the chain holds.
Methods to Handle Deadlocks
2)Deadlock Prevention:
This approach prevents one or more of the necessary conditions from occurring.
To prevent deadlocks, one or more of the following conditions must be made false:
Mutual Exclusion: Allow multiple processes to use a resource simultaneously (not always possible).
Hold and Wait: Require processes to request all resources at once or release held resources before requesting more.
No Preemption: Allow the system to forcibly take resources from processes.
Circular Wait: Impose a linear order of resource types and ensure that processes request resources in increasing order.
Deadlock Avoidance:
This approach allows the system to allocate resources only if doing so does not lead to an unsafe state.
The Banker's Algorithm is a popular method used for deadlock avoidance.
It evaluates if granting a resource will leave the system in a "safe" state.
Deadlock Detection and Recovery:
This approach allows deadlocks to occur but detects and resolves them.
Detection: The system periodically checks for cycles in the resource allocation graph or uses a detection algorithm.
Recovery: After detecting a deadlock, the system can recover by:
Termination: Terminating one or more processes to break the deadlock.
Resource Preemption: Forcibly taking resources away from processes.*