- •Алгоритм выхода из тупиковой ситуации с минимальной ценой
- •Алгоритмы защиты от взаимных блокировок. Классификация алгоритмов защиты.
- •Асинхронные параллельные процессы. Проблема «производитель-потребитель».
- •Асинхронные параллельные процессы. Проблемы синхронизации параллельных процессов.
- •Высокопроизводительный Фортран hpf. Общая характеристика.
- •Задача предотвращения тупиков. Алгоритм банкира.
- •1. Некоторые процессы бесконечно ожидают освобождения требуемых ресурсов, не производя никакой полезной работы
- •2. Процессы удерживают некоторые ресурсы не выполняя никакой полезной работы, и система без внешнего воздействия не может выйти из этого состояния.
- •Задача предотвращения тупиков. Алгоритм упорядоченных классов.
- •1. Некоторые процессы бесконечно ожидают освобождения требуемых ресурсов, не производя никакой полезной работы
- •2. Процессы удерживают некоторые ресурсы не выполняя никакой полезной работы, и система без внешнего воздействия не может выйти из этого состояния.
- •Конструктор массивов в языке Фортран 90.
- •Непроцедурный язык Норма. Понятие сетки. Понятие области.
- •Оператор полагать в языке норма.
- •Операторы языка Фортран 90
- •Операции над массивами в языке Фортран 90.
- •Организация ввода и вывода в языке норма.
- •Понятия критического ресурса и критической секции.
- •Проблема «Производитель-потребитель». Общие семафоры.
- •Проблема взаимных блокировок (тупиков).
- •Программирование пространственно-временных структур на языке оккам.
- •Секции массивов в языке фортран 90.
- •19. Система программирования pvm (Parallel Virtual Machine).
- •20. Система параллельного программирования dvm(Distributed Virtual Machine).
- •21. Система параллельного программирования mpi.
- •22. Структура программы на языке норма. Оператор итерация.
- •23. Условные области в языке норма.
- •24. Язык фортран 90. Общая характеристика.
- •25,26. Язык оккам. Общая характеристика. Операторы языка оккам.
-
Задача предотвращения тупиков. Алгоритм банкира.
Пример: 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) алгоритм очень ресурсоемкий – потребление на собственные нужды ресурсов систем очень велико.