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

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

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

Под одним ресурсом каждого типа, подразумевается один принтер, один сканер и один плоттер и т.д.

Рассмотрим систему из 7-ми процессов и 6-ти ресурсов.

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

Для этого нужен алгоритм.

Рассмотрим один из алгоритмов.

Для каждого узла N в графе выполняется пять шагов.

1. Задаются начальные условия: L-пустой список, все ребра не маркированы.

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

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

4. Выбираем новое немаркированное исходящее ребро и маркируем его. И переходим по нему к новому узлу и возвращаемся к шагу 3.

5. Зашли в тупик. Удаляем последний узел из списка и возвращаемся к предыдущему узлу. Возвращаемся к шагу 3. Если это первоначальный узел, значит, циклов нет, и алгоритм завершается.

Для нашего случая тупик обнаруживается в списке L=[B,T,E,V,G,U,D,T]

еще рефераты
Еще работы по информатике