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