Процессы и потоки управления — активные объекты. Ресурсы — неактивные объекты (процессор — вытесняемый ресурс, дисковое пространство — невытесняемый ресурс). Во время своей работы процесс (поток управления) может попасть в два неприятных состояния: зависание и тупик.
Зависание — состояние неопределенного ожидания, из которого рано или поздно процессы выходят. Связано с ожиданием каких-либо ресурсов.
Тупик — состояние ожидания некоторого события, которое никогда не произойдет (как правило, это круговое ожидание ресурсов).
Система находится в тупиковой ситуации, если один или более процессов находятся в состоянии тупика.
Существуют четыре необходимых условия для возникновения тупика:
- Условие взаимоисключения (процессы требуют монопольного владения ресурсами, им предоставляемыми).
- Условие ожидания (процессы удерживают уже выделенные им ресурсы, ожидая выделения дополнительных).
- Условие нераспределяемости (ресурсы нельзя отобрать у удерживающих их процессов, пока они не будут использованы).
- Условие кругового ожидания (существует кольцевая цепь процессов, в которой каждый процесс удерживает за собой один или более ресурсов, требующихся следующему процессу).