Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PP_KR22.doc
Скачиваний:
9
Добавлен:
10.12.2018
Размер:
507.9 Кб
Скачать
  1. Задача предотвращения тупиков. Алгоритм банкира.

Причем, процесс Р1 не освобождает R2, пока не получит R1; аналогично с Р2. Попав в такую ситуацию, процесс уже не может выйти из неё. Это состояние так же называют: 1.Взаимная блокировка, 2.Тупик (этот термин используется чаще всего), 3.Тупиковое состояние, 4.Клинч, 5.Дедлок (dead lock), 6.Смертельные объятия.

Тупиком называется такое состояние системы, при котором некоторое множество

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

Меры борьбы с тупиками

- Статические (анализ текста программы).

- Динамические

  • Обнаружение с последовательным выходом из тупика

      • Прекращение: 1)Ручной выход; 2)Автоматический

    • Перехват ресурсов

  • Методы предотвращения

    • Метод упорядоченных классов

    • Алгоритм банкира

В алгоритме Банкира (самый распространенный алгоритм, когда недопустим тупик) (на основе априорной информации о процессах и ресурсах) перед выполнением каждой элементарной операции (операция запроса на ресурс SR типа, CR типа или освобождения ресурса CR типа) проверяется новое состояние системы. В случае удовлетворения этого запроса - состояние безопасное  запрос удовлетворяется, в противном случае - нет. Все состояния системы делятся на три категории:

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

Опасными (ОС) считаются состояния, из которых возможен переход в тупиковое состояние.

Из тупикового (ТС) состояния невозможен переход ни в какое другое состояние.

В алгоритме реализована стратегия принятия решения о предоставлении ресурса по запросу только если система после удовлетворения запроса продолжает оставаться в опасном состоянии. Основой для принятия решений является анализ инф-ии о максимальной потребности процессов в каждом из ресурсов системы. Недостатки: высокий % необоснованных отказов в запросах на ресурсы, и высокие собственные затраты вычислительных ресурсов на реализацию алгоритма.

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

Одно из возможных решений представлено в виде программы на псевдокоде (i – процесс, j – ресурс, АНОНС[i,j] – max количество ресурсов, СВОБ[i,j] – количество свободных ресурсов, ОСТ - множество оставшихся незавершённых процессов).

if ВЫДЕЛ [i,j] + ЗАПРОС > АНОНС [i,j] then

< ошибка ; полный запрос анонса >

else

if ЗАПРОС [i,j] > СВОБ [j] then

< поставить pi в ожидание >

else

< определить новое состояние:

ВЫДЕЛ [i,j] := ВЫДЕЛ [i,j] + ЗАПРОС [i,j]

СВОБ [j] := СВОБ [j] – ЗАПРОС [i,j]>

end_if;

if НОВОЕ СОСТОЯНИЕ БЕЗОПАСНО then

< выделить ресурс j процессу i >

else

< восстановить исходное состояние >;

< поставить pi в ожидание >

end_if;

end_if;

РАСПТЕКУЩ: table [0…m-1] of ЦЕЛЫЙ;

ОСТ: SET of ПРОЦЕССЫ;

РАСПТЕКУЩ:= СВОБОДНЫЙ;

ОСТ:= { ВСЕ ПРОЦЕССЫ };

ВОЗМОЖН:= ИСТИНА;

while ВОЗМОЖН do

< ИСКАТЬ P в ОСТ такой, что АНОНС [i,*] – ВЫДЕЛ [i,*] ≤ РАСПТЕКУЩ >;

if ПРОЦЕСС найден then < имитировать выполнение P >;

РАСПТЕКУЩ:= РАСПТЕКУЩ + ВЫДЕЛ [i,*];

ОСТ:= ОСТ – {P}

else

ВОЗМОЖН:= ЛОЖЬ;

end_if

end_while;

СОСТОЯНИЕ БЕЗОПАСНО:= { ОСТ:= < пусто >}

Недостатки: 1) для всех процессов должны быть известны заранее max потребности в ресурсах; 2) алгоритм работает при ПОСТОЯННОМ составе процессов и ресурсов; 3)алгоритм очень ресурсоемкий (потребление ресурсов систем на собственные нужды); 4)распределитель ресурсов должен гарантированно удовлетворять запросы процессов за конечный период времени; 5)процессы должны гарантировать возврат ресурсов в систему; 6)* (главный недостаток) часто достаточно высок процент процессов, необоснованно получающих отказ (из-за неэффективности использования ресурсов).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]