Условия возникновения тупиков и основные направления исследования тупиков.

Четыре необходимых условия возникновения тупика.

1.) Процессы требуют предоставления им монопольного управления ресурсам, которые им выделяются (условие взаимоисключения).

2.) Процессы удерживают за собой ресурсы, уже выделенные им и ожидают выделения дополнительных (условие ожидания ресурсов).

3.) Ресурсы нельзя отобрать у процессов, удерживающих их пока эти ресурсы не будут использованы для завершения работы (условие не перераспределяемости).

4.) Существует кольцевая цепь процессов в которой каждый процесс удерживает за собой один или несколько ресурсов, требующийся следующему процессу в цепи (условие кругового ожидания)

Основные направления проблемы тупиков.

Все разработки по проблеме тупиков делятся на 4 направления:

1. Предотвращение тупиков.

2. Обход тупиков.

3. Обнаружение тупиков.

4. Восстановление после тупиков.

При предотвращении тупиков основной целью является создание условий, исключающих возникновение тупиковых ситуаций. Такой подход вполне реален для самого тупика, но он приводит к нерациональному использованию ресурса.

Цель средств обхода тупиков заключается в том. чтобы можно было предусмотреть менее жёсткие ограничения чем в первом случае. В этом случае ресурсы системы будут использоваться лучше.

Метод обнаружения тупиков используется в системах, допускающих возможность возникновения тупиков вследствие умышленных и неумышленных действий программиста. Цель средства обнаружения тупиков – обнаружить тупиковую ситуацию, ресурсы и процессы, вовлечённые в неё. После обнаружения такую ситуацию можно попытаться устранить.

Методы восстановления после тупиков применяются для устранения тупиковых ситуаций с тем что бы система продолжала работать, а процессы , попавшие в тупиковую ситуацию могли завершиться с освобождением занимаемых ими ресурсов. Восстановление – очень серьёзная проблема и в большинстве систем разрешается путём полного выведения процессов, попавших в тупиковую ситуацию. В дальнейшем выведенные процессы обычно перезапускаются с самого начала, по этому проделанная ранее работа теряется.