Deadlock is a situation in which two or more processes in a system are waiting for each other to release a resource or complete a task, resulting in a circular dependency and causing the entire system to come to a halt.
There are four necessary conditions that can lead to a deadlock situation in a system, known as the “deadlock conditions”:
- Mutual Exclusion: At least one resource must be held in a non-sharable mode, meaning that only one process can access the resource at a time. If a process holds a resource and does not release it, and other processes are requesting the same resource, a deadlock can occur.
- Hold and Wait: A process must be holding at least one resource and waiting to acquire additional resources that are currently being held by other processes. If multiple processes are holding resources and waiting for additional resources to be released by other processes, a deadlock can occur.
- No Preemption: Resources cannot be forcibly taken away from a process. If a process is holding a resource and cannot be preempted to release it, and other processes are waiting for the resource, a deadlock can occur.
- Circular Wait: A circular chain of two or more processes must exist, where each process is holding a resource that is being requested by another process in the chain. If there is a circular dependency in resource requests among processes, a deadlock can occur.
All four of these conditions must be present simultaneously for a deadlock to occur. If any one of these conditions is absent, a deadlock cannot happen. Avoiding these conditions or implementing appropriate strategies, such as resource allocation and process scheduling algorithms, can help prevent or resolve deadlocks in a system.