6.2 Предпазване (prevention) от МХ
** Взаимно изключване.
Не може да бъде избягнато.
** Владея и чакам.
Процесът чака за всички необходими ресурси - неефективно
** Няма отстъпки (no preemtion).
** Циклично чакане.
6.3 Избягване (avoidance) на МХ
Два подхода при избягване на МХ:
-- да не се стартира процес, който води до МХ;
-- да не се дава ресурс на процес, ако това води до МХ.
Изисква се предварителна информация за необходимите
расурси на всеки процес.
** Отказ за стартиране на процес.
Дадени са:
C - матрица на исканията на всеки
процес за всеки ресурс;
R - вектор на всички налични
ресурси;
A - матрица на дадени на всеки процес
ресурси (състояние на системата);
V - вектор на свободните ресурси.
Стартираме процес, само ако всичките му необходими
ресурси са "излишни", т.е. те са свободни в момента и при удовлетворяване
на всички искания на всички активни процеси пак ще останат свободни.
Пример.
Матрица C
R1 R2 R3 P1 1 1 2 активен P2 6 1 3 активен P3 2 1 0 P4 4 0 2 |
Матрица A
R1 R2 R3 P1 1 0 0 P2 6 1 2 P3 0 0 0 P4 0 0 0 |
Вектор R
R1 R2 R3 9 3 6 |
Вектор V
R1 R2 R3 2 2 4 |
** Отказ за даване на ресурс - алгоритъм на банкера.
Безопасно (сигурно) състояние на системата - съществува
такава последователност от изпълнение на процесите, при която всички процеси
завършват успешно (няма МХ). Опасно (несигурно) състояние - всяко друго.
Пример 1. Безопасно състояние и изпълнение на процесите:
Начално състояние
Матрица C
R1 R2 R3 P1 3 2 2 P2 6 1 3 P3 3 1 4 P4 4 2 2 |
Матрица A
R1 R2 R3 P1 1 0 0 P2 6 1 2 P3 2 1 1 P4 0 0 2 |
Вектор R
R1 R2 R3 9 3 6 |
Вектор V
R1 R2 R3 0 1 1 |
Матрица C
R1 R2 R3 P1 3 2 2 P2 0 0 0 P3 3 1 4 P4 4 2 2 |
Матрица A
R1 R2 R3 P1 1 0 0 P2 0 0 0 P3 2 1 1 P4 0 0 2 |
Вектор R
R1 R2 R3 9 3 6 |
Вектор V
R1 R2 R3 6 2 3 |
Матрица C
R1 R2 R3 P1 0 0 0 P2 0 0 0 P3 3 1 4 P4 4 2 2 |
Матрица A
R1 R2 R3 P1 0 0 0 P2 0 0 0 P3 2 1 1 P4 0 0 2 |
Вектор R
R1 R2 R3 9 3 6 |
Вектор V
R1 R2 R3 7 2 3 |
Матрица C
R1 R2 R3 P1 0 0 0 P2 0 0 0 P3 0 0 0 P4 4 2 2 |
Матрица A
R1 R2 R3 P1 0 0 0 P2 0 0 0 P3 0 0 0 P4 0 0 2 |
Вектор R
R1 R2 R3 9 3 6 |
Вектор V
R1 R2 R3 9 3 4 |
Пример 2. Опасно състояние и изпълнение на процесите:
Начално състояние
Матрица C
R1 R2 R3 P1 3 2 2 P2 6 1 3 P3 3 1 4 P4 4 2 2 |
Матрица A
R1 R2 R3 P1 1 0 0 P2 5 1 1 P3 2 1 1 P4 0 0 2 |
Вектор R
R1 R2 R3 9 3 6 |
Вектор V
R1 R2 R3 1 1 2 |
Матрица C
R1 R2 R3 P1 3 2 2 P2 6 1 3 P3 3 1 4 P4 4 2 2 |
Матрица A
R1 R2 R3 P1 2 0 1 P2 5 1 1 P3 2 1 1 P4 0 0 2 |
Вектор R
R1 R2 R3 9 3 6 |
Вектор V
R1 R2 R3 0 1 1 |