- •ОПЕРАЦИОННЫЕ СИСТЕМЫ
- •Синхронизация на верхнем уровне
- •Почтовые ящики
- •Односторонняя связь
- •Двусторонняя связь
- •Многовходовые почтовые ящики
- •Порты
- •Монитор Хоара
- •Монитор двоичный семафор
- •Монитор распределитель ресурсов
- •Монитор читатели - писатели
- •Монитор читатели - писатели
- •Использование монитора
- •Тупики (deadlock, clench)
- •Условия наличия тупика
- •Четыре направления по проблеме тупиков
- •Предотвращение тупиков
- •Обход тупиков
- •Обнаружение тупиков
- •Восстановление после тупиков
- •Алгоритмы предотвращения тупиков
- •Метод Габермана
- •Правило Габермана гласит
- •Пусть P1 запрашивает A
- •Пусть P2 запрашивает A
- •Пусть P3 запрашивает B
- •Пусть P4 запрашивает D
- •Алгоритм банкира
- •Пусть P1 запрашивает 2 устройства
- •Пусть P2 запрашивает 2 устройства
- •Тупики как критический фактор для
Алгоритмы предотвращения тупиков
•выделение всех необходимых ресурсов;
•выделение ресурсов в порядке присвоенных номеров;
•метод Габермана;
•алгоритм банкира.
21
Метод Габермана
Системе требуются
a)ориентированный граф, в котором узлы соответствуют процессам, а дуга проводится от узла i к узлу j, если процесс j может запросить ресурс, который запрашивает процесс i;
b)предварительная информация о ресурсах, необходимых каждому процессу. Она хранится в таблице, в которой строки соответствуют процессам, а столбцы – ресурсам;
c)таблица учета выделенных ресурсов.
22
Правило Габермана гласит
Состояние является опасным, если граф содержит цикл.
Алгоритм вызывается при каждом запросе и возврате ресурса.
Например
|
A |
B |
C |
D |
P1 |
1 |
1 |
|
|
P2 |
1 |
1 |
1 |
|
P3 |
|
1 |
1 |
1 |
P4 |
1 |
|
1 |
1 |
|
|
|
|
23 |
Пусть P1 запрашивает A
|
|
A |
B |
C |
D |
|
|
P1 |
1 |
1 |
|
|
|
|
|
P2 |
1 |
1 |
1 |
|
P1 |
P2 |
|
P3 |
|
1 |
1 |
1 |
|||
|
|
|
|||||
P4 |
1 |
|
1 |
1 |
|
|
Ресурс свободен, цикла нет -ресурс выделяется.
P3 |
P4 |
24
Пусть P2 запрашивает A
|
A |
B |
C |
D |
P1 |
1 |
1 |
|
|
P2 |
1 |
1 |
1 |
|
P3 |
|
1 |
1 |
1 |
P4 |
1 |
|
1 |
1 |
Ресурс занят – процесс блокируется
25
Пусть P3 запрашивает B
|
A |
B |
C |
D |
|
|
P1 |
1 |
1 |
|
P1 |
P2 |
|
P2 |
1 |
1 |
1 |
|||
|
|
|||||
P3 |
|
1 |
1 |
1 |
|
|
P4 |
1 |
|
1 |
1 |
|
Ресурс свободен, |
|
|
цикла нет –ресурс |
P3 |
P4 |
выделяется. |
|
|
26
Пусть P4 запрашивает D
|
A |
B |
C |
D |
P1 |
1 |
1 |
|
|
P2 |
1 |
1 |
1 |
|
P3 |
|
1 |
1 |
1 |
P4 |
1 |
|
1 |
1 |
Ресурс свободен, цикл есть - ресурс не
выделяется. Процесс блокируется. Граф возвращается в предыдущее состояние
P1 P2
P3 |
P4 |
P1 P2
P3 |
P4 |
|
27
Алгоритм банкира
Используется для распределения делимых ресурсов.
Пример. Пусть в системе имеется 10 единиц некоторого ресурса и работают 3 процесса, использующих этот ресурс.
процесс |
max потр. |
выделено |
P1 |
4 |
2 |
P2 |
7 |
3 |
P3 |
8 |
2 |
28
Пусть P1 запрашивает 2 устройства
процесс |
max потр. |
выделено |
P1 |
4 |
4 |
P2 |
7 |
3 |
P3 |
8 |
2 |
P1 получит все нужные ему ресурсы, завершит работу и освободит полученные им ресурсы, тогда сможет завершиться P2, а после его завершения и P3.
Т.е. этот запрос безопасный.
29
Пусть P2 запрашивает 2 устройства
процесс |
max потр. |
выделено |
P1 |
4 |
2 |
P2 |
7 |
5 |
P3 |
8 |
2 |
Оставшегося одного устройства недостаточно для завершения ни одного из процессов. Система оказалась в тупике.
Alg_banker
30