Deadlock (взаимная блокировка) возникает в многозадачных системах, когда два или более процесса пытаются обратиться к одним и тем же данным и блокируют друг другу доступ к ним. 2
Основные условия, приводящие к возникновению взаимной блокировки, называются «четырьмя условиями Дейкстры»: 1
- Взаимная блокировка (Mutual Exclusion). 1 Каждый ресурс либо уже захвачен, либо доступ к нему возможен только одному процессу за раз. 1
- Неотъемлемость (Hold and Wait). 1 Процесс уже удерживает какой-то ресурс и ждёт освобождения других. 1
- Неделимость ресурсов (No Preemption). 1 Ресурсы, уже захваченные процессом, не могут быть освобождены принудительно до их завершения. 1
- Циклическое ожидание (Circular Wait). 1 Существует цепь процессов, где каждый процесс ожидает ресурсы, контролируемые следующим в цепочке. 1
В результате ни один из процессов не может завершиться, так как каждый из них ждёт, пока другие процессы освободят ресурсы, которые им нужны. 1