There are four conditions that must be present simultaneously for a deadlock to occur:
The mutual exclusion condition must hold for non-shareable resources that is only one process can use a resource at a time. If another process want to access that resource, then it must wait until the resource has been released.
There be no preemption of resources that have already been allocated that means no process is allowed to preempt another process forcibly in order to gain a release of a resource from it. So, we should check before resource allocation if it has already allocated to another process.
Hold and Wait
When a process is already holds a resource and while for additional resource that are currently being held by other processes.This situation is known as hold and wait.
Processes waiting for resources from the others form a circular chain, that means all waiting processes form a circular chain or circular list where each process in the list is waiting for a resource held by next process in the list.