Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
17_Взаимоблокировки._Предо...doc
Скачиваний:
12
Добавлен:
21.09.2019
Размер:
238.59 Кб
Скачать

Обнаружение тупиков. Графы распределения ресурсов

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

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

P1 R1

Процесс P1 запрашивает один из ресурсов R1

R2 P2

Ресурс R2 выделен процессу Р2

P3 R3 P4

П роцесс Р3 запрашивает ресурс R3, который выделен процессу P4

Рис.6 Граф запросов и распределения ресурсов

Ранее мы привели на рис.5 вариант “кругового ожидания”, типичного для системы в состоянии тупика.

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

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

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

P2

R1 R1 P2

А ) Б)

P3 P3

P 1 R2 P1 R2

Редуцирование на процесс Р3

P2

R1 R1 P2

В ) Г)

P3 P3

P1 R2 P1 R2

Редуцирование на процесс Р1 Редуцирование на процесс Р2

Рис.7 Редукция графа

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

Самостоятельно привести примеры нередуцируемых графов (минимальное количество процессов 4, минимальное количество классов идентичных ресурсов 3 по два идентичных ресурса в каждом классе}.

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

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

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

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

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

Вопросы

  1. Приведите пример тупика с участием всего лишь одного процесса.

  2. Приведите пример тупика с участием трех процессов и трех ресурсов.

  3. Сформулируйте четыре необходимых условия существования тупика.

  4. Чтобы условие “ожидание дополнительных ресурсов” было нарушено, по методу Хавендера процессы должны запрашивать сразу все ресурсы, которые им понадобятся. Т.е система предоставляет процессам ресурсы по принципу “все или ничего”. Укажите достоинства и недостатки такого способа предотвращения тупиков.

  5. Предложенное Хавендером нарушение условия “неперераспределяемости ресурсов” не стало популярным. Укажите недостатки такого метода для предотвращения тупиков.

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

Таблица 3

Номер процесса, I

Максимальная потребность, МАКС[I]

Выделено ВЫД[I]

Остаток ОСТ[I]

1

6

2

4

2

7

4

3

3

6

5

1

4

2

0

2

Таблица 4

Номер процесса, I

Максимальная потребность, МАКС[I]

Выделено ВЫД[I]

Остаток ОСТ[I]

1

7

3

4

2

8

2

6

3

7

4

3

4

0

0

0

Таблица 5

Номер процесса, I

Максимальная потребность, МАКС[I]

Выделено ВЫД[I]

Остаток ОСТ[I]

1

5

3

2

2

8

6

2

3

3

1

2

4

6

2

4

10 Coffman E.G., Elphick M., Shoshani A. System Deadlock. Computing Surveys, Vol 3, No 2, 1971, pp.67-78.

11 Havender J.W. Avoiding Deadlick in Multitasking System. IBM Systems Journal. Vol 7, No 2, 1968, hh.74-84

12 Dijkstra E.W. Cooperating Sequential Processes. Technological University, Eindhoven, Nitherlands,1965.