Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VSOS_2014.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.9 Mб
Скачать
    1. Методы решения проблемы тупиков

Принципиально существует три подхода к решению проблемы тупиков:

  • использовать протокол, гарантирующий, что система никогда не войдет в тупиковое состояние;

  • разрешить системе входить в тупиковое состояние, и затем восстанавливать ее;

  • игнорировать проблему – считать, что тупики в системе никогда не появляются. (Такое решение применяется во многих ОС, например, UNIX).

Для недопущения тупиковых ситуаций используются два подхода:

  • предотвращение тупиков (deadlock prevention),

  • обход тупиков (deadlock avoidance).

Методы предотвращения и обхода тупиков используются для недопущения тупиковых ситуаций в принципе.

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

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

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

Распознавание тупиков и последующее восстановление базируется на том, что тупик возникает достаточно редко и, что предотвращать и обходить его дороже, чем распознавать и восстанавливаться.

Если отсутствие тупиков не гарантируется, а средств обнаружения и восстановления нет, то система вследствие возникновения тупика может стать неработоспособной, и ее нужно будет восстанавливать вручную. Однако если тупики возникают очень редко, например, раз в году, то дешевле использовать этот подход, нежели другие.

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

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

На практике для предотвращения тупиков разрабатываются процедурыпротоколы, нарушающие хотя бы одно из условий, кроме условия взаимного исключения, так как существуют внутренние неразделяемые ресурсы.

Рассмотрим в свете этого подхода каждое из четырех условий существования тупика.

Взаимное исключение

Подавляется путем неограниченного разделения ресурсов. Разделяемые ресурсы не требуют взаимного исключения и не приводят к возникновению тупика, например, read-only файлы. Однако есть ресурсы, к которым такой подход неприменим. Например, принтер не может обслуживать одновременно несколько процессов. Кроме того, имеются внутренние неразделяемые ресурсы.

Захват и ожидание

Чтобы условие захвата и ожидания никогда не возникло, необходимо гарантировать, что в момент запроса ресурса процесс не удерживает другие ресурсы. Решением может быть использование протокола, согласно которому, процесс должен сразу запрашивать и получать все необходимые ему ресурсы (первый стратегический принцип Хавендера).

Первый подход состоит в том, что ресурсы запрашиваются перед началом выполнения программы. Реализуется это решение требованием, согласно которому запросы ресурсов должны предшествовать всем остальным системным вызовам. Но такой подход ограничивает возможности программиста.

Альтернативный подход – разрешить процессу запрашивать ресурсы в любой момент, если он не использует других ресурсов. До запроса дополнительного ресурса процесс должен освободить все ресурсы, которые ему уже выделены, и запросить их вместе с дополнительным ресурсом (второй стратегический принцип Хавендера).

У этих протоколов имеется два существенных недостатка:

  • использование ресурсов неэффективно, так как ресурсы могут быть выделены процессам, но не использоваться длительное время;

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]