Лекция 8. Тупики.

advertisement
Системное программное обеспечение
Лекция 8
Тупики
Тупик
Тупик (deadlock) – множество заблокированных процессов, каждый из
которых владеет некоторым ресурсом и ожидает ресурса, которым владеет
какой-либо другой процесс из этого множества.
Пример тупика: Пусть P1 и P2 – процессы, а R1 и R2 – ресурсы.
2
Модель системы
3
Условия возникновения тупиков
4
Граф распределения ресурсов
5
6
Поиск тупиков по графу
7
Вводы
8
Направления борьбы с тупиками
9
Игнорирование проблемы
тупиков
10
Способы предотвращения тупиков
11
Безопасное состояние системы
12
Стратегия безопасного
выделения ресурсов
13
Утверждения о безопасных
состояниях
14
Алгоритм банкира
15
Структуры данных для алгоритма банкира
16
Алгоритм безопасности
17
Алгоритм запроса ресурсов
18
Пример использования алгоритма банкира
Allocation Max
Available
A B C A B C A B C
P0 0 1 0 7 5 3 3 3 2
P1 2 0 0 3 2 2
P2 3 0
P3
2
1
P4
0 0
Need
A
B
C
P0
7
4
3
2 9 0 2
P1
1
2
2
1
P2
6
0
0
P3
0
1
1
P4
4
3
1
2 2 2
2 4 3 3
19
Условия к алгоритму банкира
20
Предотвращение тупиков за счет
нарушения условий
возникновения тупиков
21
Нарушение условия
взаимоисключения
22
Нарушение условия ожидания
дополнительных ресурсов
23
Нарушение принципа
отсутствия перераспределения
24
Нарушение условия кругового
ожидания
25
Обнаружение тупиков
26
Граф wait-for
граф wait-for: вершины соответствуют процессам, и дуга проводится
из вершины Pi в вершину Pj, если процесс Pi ожидает процесса Pj .
27
Описание переменных
28
Алгоритм обнаружения тупиков
29
Пример
Allocation
P0
P1
P2
P3
P4
Request
A
B
C
A
B
C
0
1
0
0
0
0
2
0
0
2
0
2
3
0
3
0
0
0
2
1
1
1
0
0
0
0
2
0
0
2
Request
A
B
C
P0
0
0
0
P1
2
0
1
P2
0
0
1
P3
1
0
0
P4
0
0
2
30
Восстановление после тупика
31
Порядок прекращаемых
процессов
32
Желаемые действия при «откате»
33
Download