Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
04-04-12 Взаимоблокировка.DOC
Скачиваний:
5
Добавлен:
23.08.2019
Размер:
274.43 Кб
Скачать

9.2. Условия возникновения взаимоблокировок

Для того чтобы взаимоблокировка стала возможной, должны выполняться четыре необходимых условия (Коффман, Элфик и Шошани, 1970 г).

  1. Условие взаимоисключения (Mutual exclusion). Одновременно использовать ресурс может только один процесс.

  2. Условие удержание и ожидания ресурсов. Процесс может удерживать выделенные ресурсы во время ожидания других ресурсов.

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

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

Ресурс А

Требует Удерживается

Удерживается

Ресурс В

Требует

Рис. 9.2. Циклическое ожидание ресурсов

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

9.3. Предотвращение, обнаружение и устранение взаимоблокировок

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

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

  1. В. Столлингс. Операционные системы. - М. «Вильямс», 2002

  2. Э. Таненбаум. Современные операционные системы. – СПб.: Питер, 2002.

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

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

Итак, основные направления борьбы с тупиками:

  1. Игнорирование проблемы в целом.

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

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

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