Предотвращение тупиков, обход тупиков.

При предотвращении тупиков основной целью является создание условий, исключающих возникновение тупиковых ситуаций. Такой подход вполне реален для самого тупика, но он приводит к нерациональному использованию ресурса. Чаще всего при решении проблемы тупиков разработчики систем стараются исключить сами возможности их возникновения. Прежде всего разрабатываются методы предотвращения тупиков, оцениваются различные последствия их реализации как для пользователя так и системы (особенно с точки зрения их эксплуатационных характеристик и экономической эффективности). Хавендер показал, что возникновение тупика не возможно, если не нарушено хотя бы одно из четырёх необходимых условий:

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

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

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

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

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

1. каждый процесс должен запрашивать все требуемые ресурсы сразу и не может начать выполняться до полного предоставления ему ресурсов.

2. Если процесс, удерживающий определённые ресурсы получает отказ в удовлетворении запроса на дополнительные ресурсы, то этот процесс должен освободить свои первоначальные ресурсы и снова запросить их вместе с дополнительными.

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