Лекция: Динамическое избежание взаимоблокировок
В этом способе ОС должна знать, является ли предоставление ресурса безопасным или нет.
Траектории ресурсов
Рассмотрим модель из двух процессов и двух ресурсов.
А1 — запрос принтера процессом А
А2 — запрос плоттера процессом А
А3 — освобождение принтера процессом А
А4 — освобождение плоттера процессом А
В1 — запрос плоттера процессом В
В2 — запрос принтера процессом В
В3 — освобождение плоттера процессом В
В4 — освобождение принтера процессом В
Динамическое избежание взаимоблокировок
Т.к. процессор предоставляется поочередно, траектория может продолжаться только параллельно осям.
Чтобы избежать тупика, процессам надо обойти прямоугольник, охватывающий всю заштрихованную область.
Безопасные и небезопасные состояния
В безопасном состоянии система может гарантировать, что все процессы закончат свою работу.
Рассмотрим систему.
10 экземпляров ресурса
3 процесса
Процесс А занял 3 экземпляра, но ему необходимо 9.
В этой ситуации можно спланировать так, сначала запустить процесс В, потом С и потом А.
Процессы заканчивают работу без тупиковой ситуации.
Рассмотрим другую ситуацию.
Процесс А занял 4 экземпляра.
Возникает небезопасное состояние.
В принципе, процесс А может в какой то момент ресурс освободить и тупика не возникнет.
Видно, что в этом случае не стоило давать ресурс процессу А.
Алгоритм банкира для одного вида ресурсов
«Банкира», потому что аналогия такая, клиенты-процессы, кредиты-ресурсы.
Рассмотрим систему:
Банкир может дать 10 кредитов (ресурсы).
К нему попеременно обращаются 4-ре клиента.
Алгоритм банкира:
- Банкиру поступает запрос от клиента на получение кредита
- Банкир проверяет, приводит ли этот запрос к небезопасному состоянию.
- Банкир в зависимости от этого дает или отказывает в кредите.
Алгоритм банкира
Алгоритм банкира для нескольких видов ресурсов
Рассмотрим систему:
вектора:
E=(6342) — существующие ресурсы; P=(5322) — занятые ресурсы; A=(1020) — доступные ресурсы
Алгоритм поиска безопасного или небезопасного состояния:
Алгоритм банкира для несколько видов ресурсов
Если состояние безопасное то ресурс дать можно, если нет то нельзя.
На практике все эти алгоритмы тяжело реализовать.