Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
При использовании метода борьбы с взаимоблокировками: обнаружение и устранение взаимоблокировок система не пытается предотвратить попадание в тупиковые ситуации. Вместо этого она позволяет взаимоблокировке произойти, старается определить, когда это случится, и затем совершает некоторые действия к возврату системы к состоянию, имевшему место до того, как система попала в тупик.
Обнаружение взаимоблокировки при наличии одного ресурса каждого типа:
Под одним ресурсом каждого типа, подразумевается один принтер, один сканер и один плоттер и т.д.
Рассмотрим систему из 7-ми процессов и 6-ти ресурсов.
Визуально хорошо видна взаимоблокировка, но нам нужно чтобы ОС сама определяла взаимоблокировку.
Для этого нужен алгоритм.
Рассмотрим один из алгоритмов.
Для каждого узла N в графе выполняется пять шагов.
1. Задаются начальные условия: L-пустой список, все ребра не маркированы.
2. Текущий узел добавляем вконец списка L и проверяем количество появления узла в списке. Если он встречается два раза, значит цикл и взаимоблокировка.
3. Для заданного узла смотрим, выходит ли из него хотя бы одно немаркированное ребро. Если да, то переходим к шагу 4, если нет, то переходим к шагу 5.
4. Выбираем новое немаркированное исходящее ребро и маркируем его. И переходим по нему к новому узлу и возвращаемся к шагу 3.
5. Зашли в тупик. Удаляем последний узел из списка и возвращаемся к предыдущему узлу. Возвращаемся к шагу 3. Если это первоначальный узел, значит, циклов нет, и алгоритм завершается.
Для нашего случая тупик обнаруживается в списке L=[B,T,E,V,G,U,D,T]
Дата публикования: 2015-01-26; Прочитано: 722 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!