Обнаружение взаимоблокировок.

Стратегия обнаружения взаимоблокировок не ограничивает доступ к ресурсам и не налагает никаких ограничений на действия процесса. При обнаружении взаимоблокировок запрошенные ресурсы выделяются процессам по первому требованию. Периодически ОС выполняет алгоритм позволяющий обнаружить циклическое ожидание.

a. Алгоритм обнаружения. Используются: матрица распределения и вектор доступности, матрица запросов Q такая, что qij представляет собой количество ресурса типа j, затребованных процессом i.

Алгоритм:

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

2.Временный вектор W инициализирует значением вектора доступности.

3.Находим индекс i, такой что процесс i в настоящий момент не помечен и i строка матрицы не превышает временной интервал W. Если такой строки нет, то алгоритм прекратит свою работу.

4.Если строка имеется, то процесс i помечается и добавляется следующее условие:Wk=Wk+Aik, далее возврат к шагу №3.

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

b. Восстановление Подходы к решению этой проблемы:

1. Прекратить выполнение всех заблокированных процессов.

2. Вернуть каждый из заблокированных процессов в некоторую раннее определенную точку и перезапустить все процессы.

3. Последовательно прекращать работу заблокированных процессов до тех пор, пока взаимоблокировки не прекратятся. Порядок выбора заблокированных процессов должен базироваться на некотором критерии минимальной стоимости.

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