Тупик на ресурсах типа CR в компьютерных системах возникает из-за конкуренции несвязанных параллельных процессов за ресурсы вычислительной системы. 23
Также к причинам тупика относятся:
- Ошибки программирования. 12 Например, когда один из процессов не может послать сообщение до тех пор, пока сам его не получит, а этого события никогда не произойдёт. 13
- Неправильная синхронизация взаимодействия процессов со стороны операционной системы. 4
- Затор в системе, когда слишком много процессов борются за один и тот же ресурс. 4
Для возникновения тупика необходимо выполнение четырёх условий: 1
- Взаимное исключение — процессы осуществляют монопольный доступ к ресурсам. 1
- Ожидание — процесс, запросивший ресурс, ждёт до тех пор, пока запрос не будет удовлетворён, при этом удерживая ранее полученные ресурсы. 1
- Отсутствие перераспределения — ресурсы нельзя отобрать у процесса, если они ему уже выделены. 1
- Круговое ожидание — существует замкнутая цепь процессов, каждый из которых ждёт ресурс, удерживаемый его предшественником в этой цепи. 1