Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы 2 курс 1 семестр / Лекции / операционные системы для заочного отделения.doc
Скачиваний:
288
Добавлен:
20.05.2015
Размер:
1.14 Mб
Скачать

Тема 7. Тупики: условия возникновения тупиков, предотвращения тупиков

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

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

Для возникновения тупика необходимо наличие 4 условий:

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

2.Ожидание дополнительного ресурса, когда процессы удерживают ресурсы и требуют дополнительных ресурсов.

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

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

Для решения проблемы тупиков должны решаться следующие задачи:

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

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

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

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

  • Условие кругового ожидания можно предотвратить, если процессы запрашивают ресурсы в заранее определенном порядке, то есть ресурсы имеют уникальные упорядоченные номера, которые распределяются в соответствии с некоторым планом (планирование распределения ресурсов).

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

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

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

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

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

В настоящее время проблема тупика является критическим фактором по следующим причинам:

  • широкое распространение получают мультипроцессорные и параллельные вычисления;

  • в системах выполняется преимущественно динамическое распределение ресурсов;

  • тенденция рассмотрения данных как ресурса приводит к возрастанию числа управляемых ресурсов.