A deadlock can occur with the following cases:
- Mutual exclusion — only one process at a time can use a resource.
- Hold and wait — A process holding a resource waits to acquire additional resources held by another process.
- No preemption — A resource can only be released voluntarily by the process holding it.
- Circular wait — There exists a set of
processes such that for any
,
is waiting for a process held by
, and
is waiting for a resource held by
.
Subsections