Обнаружение взаимоблокировки при наличии одного ресурса каждого типа

Методы борьбы с блокировками:

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

· Обнаружение и исправление после возникновения блокировки (если существуют методы)

· Динамическое избежание взаимоблокировок (ОС не допускает их возникновения)

· Предотвращение с помощью опровержения первого условия необходимости (не давать ресурсы монопольно)

Обнаружение взаимоблокировки при наличии одного ресурса каждого типа:

Рисунок 8. Система из 7ми процессов и 6ти ресурсов

1) Начальное условие: задаем L - пустой список. Ребра не маркированы

2) Текущий узел добавляем в конец списка L и проверяем количество появлений узла в списке. Если есть повторы, то есть цикл, то алгоритм завершается

3) Для заданного узла смотрим, выходит ли у него хоть 1 немаркированное ребро. Да - переход к 4, нет - переход к 5

4) Случайным образом выбираем немаркированное ребро и отмечаем его. По нему переходим к новому текущему узлу и возвращаемся к 2.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: