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

Пример: SR система – тупиковая ситуация (особенно плохо в системах реального времени и системах упраления).

Причем, процесс Р1 не освобождает Р2, пока не получит Р1; аналогично с Р2. Попав в такую ситуацию, процесс уже не может выйти из неё.

Тупиковое состояние:

1. Некоторые процессы бесконечно ожидают освобождения требуемых ресурсов, не производя никакой полезной работы

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

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

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

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

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

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

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

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

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

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

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

Все состояния системы делятся на три категории:

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

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

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

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

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

Одно из возможных решений представлено в виде программы на псевдокоде.

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) алгоритм требует априорной информации о потребностях всех процессов в ресурсах системы; 2) алгоритм работает при ПОСТОЯННОМ составе процессов и ресурсов; 3) алгоритм очень ресурсоемкий – потребление на собственные нужды ресурсов систем очень велико.

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