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

Отсутствие перераспределения

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

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

Процесс может быть возобновлен при наличии всех ресурсов.

Эти протоколы обычно применяются только к ресурсам, состояние которых может быть легко сохранено и восстановлено (регистры, память).

Условие кругового ожидания

Условие кругового ожидания можно исключить, предотвращая образование цепи. Это обеспечивается иерархическим выделением ресурсов (третий стратегический принцип Хавендера). Все ресурсы образуют некоторую иерархию. Процесс, затребовавший ресурс на одном уровне, может затем потребовать ресурсы только на более высоком уровне. Он может освободить ресурсы на данном уровне только после освобождения всех ресурсов на всех более высоких уровнях. После того как процесс получил, а потом освободил ресурсы данного уровня, он может снова запросить ресурсы на том же самом уровне. Предварительное выделение ресурсов можно считать специальным случаем иерархического выделения, имеющего единственный уровень. Иерархическое выделение несколько дороже, но оно может снизить потери, связанные с полным предварительным выделением. Однако этот метод не дает никакого выигрыша, если порядок, в котором процессам необходимы ресурсы, отличается от порядка уровней в иерархии.

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

26Обход тупиков

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

Методы обхода тупиков (deadlock avoidance), предполагают, что допускается возникновение каждого из необходимых условий возникновения тупика, однако прогнозируют появления тупика и не допускают его появления.

Будем считать, что операционная система находится в безопасном состоянии (safe state), если никакой процесс не может отобразить это состояние в тупиковое. В противном случае будем называть состояние системы опасным (unsafe state). Обход тупиков можно рассматривать как запрет входа в опасное состояние.

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

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