- •Тупики
- •Бесконечное ожидание – состояние системы, которого ждет процесс, является возможным, но оно откладывается
- •Предотвращение тупиков. Принципы Хавендера.
- •Процесс запрашивает все нужные ресурсы сразу. До выделения – ждет.
- •Вводим линейную упорядоченность на типы ресурсов. Процесс может запросить ресурсы только в порядке
- •Обход тупиков. Алгоритм банкира.
- •Рассмотрим пример
- •Решение примера
- •Решение примера (продолжение)
- •Недостатки алгоритма банкира
- •Обнаружение тупиков
- •Восстановление системы после обнаружения тупика
- •Виртуализация ресурсов – средство борьбы с тупиками
- •Небольшой пример
Тупики
Тупик – состояние мультипрограммной системы, которого ждет процесс, и которое никогда не реализуется (клинч, дедлок).
Задачи ОС:
-Предотвращение;
-Обход;
-Обнаружение.
Примеры тупиков.
R 1
Proc. 1 |
|
Proc. 2 |
R 2
Транспортная пробка |
Кольцевая цепь запросов |
Бесконечное ожидание – состояние системы, которого ждет процесс, является возможным, но оно откладывается на неопределенное время. Например, из-за приоритета.
Ресурсы бывают:
-перераспределяемые (процессор, память);
-монопольные (НМЛ);
-реентерабельные (неизменный код);
-последовательного использования.
Условия возникновения тупиков (необходимые):
1.Монопольное управление выделенными ресурсами (взаимоисключение);
2.Удержание ресурсов на время ожидания следующего;
3.Ресурсы у процесса нельзя отобрать, отдает их сам (неперераспределение);
4.Существование кольцевой цепи запросов.
Предотвращение тупиков. Принципы Хавендера.
Хавендер показал, что для предотвращения тупика необходимо нарушить одно из необходимых условий его возникновения.
Принципы Хавендера:
Процесс запрашивает все нужные ресурсы сразу. До выделения – ждет.
Если процессу не выделяется очередной ресурс, он должен отдать уже выделенные.
Вводим линейную упорядоченность на типы ресурсов. Процесс может запросить ресурсы только в порядке увеличения номера ресурса.
Условие монопольного управления Хавендер не нарушает.
Процесс запрашивает все нужные ресурсы сразу. До выделения – ждет.
Нарушается условие возникновения тупиков:
2 .Удержание ресурсов на время ожидания следующего; Плюс: простота реализации.
Минусы:
-Как определить набор всех необходимых процессу ресурсов?
-Простой свободных ресурсов.
-Накапливание ресурсов приводит к высоким издержкам.
Если процессу не выделяется очередной ресурс, он должен отдать уже выделенные.
Нарушается условие возникновения тупиков:
. Ресурсы у процесса нельзя отобрать, отдает их сам (неперераспределение); Плюс: ???.
Минусы:
Как сохранить промежуточные результаты работы процесса? Возможность бесконечного откладывания (дефицитный ресурс).
Вводим линейную упорядоченность на типы ресурсов. Процесс может запросить ресурсы только в порядке увеличения номера ресурса.
Нарушается условие возникновения тупиков: 4. Существование кольцевой цепи запросов. Плюс: кажущаяся простота реализации.
Минусы:
-Сложно вводить в систему новые ресурсы (ОС).
-Кто знает «правильную» последовательность ресурсов?
-Трансляторы тоже должны знать номера ресурсов, а это сложно и снижает мобильность систем.
Вывод – принципы Хавендера носят скорее теоретический характер.
На практике они используются как вспомогательные элементы стратегий.
Обход тупиков. Алгоритм банкира.
Банкир – выдает ссуды (кредиты) тем, кто может их возвратить. Дейкстра предложил алгоритм обхода тупиков, если все условия их возникновения не нарушены.
Алгоритм банкира – ресурсы процессу можно выдавать только в том случае, если состояние системы останется надежным.
Надежное состояние – ОС гарантирует всем процессам завершение в конечное время.
Введем следующие обозначения:
M(i) – максимальная потребность i-го процесса в ресурсе;
L(i) – текущая величина ресурса, выделенного i-му процессу;
С(i) – текущая потребность в ресурсе, C(i)=M(i)-L(i);
Т– суммарный ресурс, имеющийся в системе;
а– остаточный ресурс, а=Т- L(i);
Рассмотрим пример
Пусть в некоторый момент времени в системе существуют три процесса. Распределение ресурсов приведено в таблице:
|
L(i) |
M(i) |
C(i) |
|
|
|
|
T=12 |
|||
|
|
|
|
|
|
Process 1 |
1 |
4 |
3 |
|
|
|
|
|
|
|
|
Process 2 |
4 |
6 |
2 |
|
|
|
|
|
|
|
|
Process 3 |
5 |
8 |
3 |
|
|
|
|
|
|
|
|
|
a |
|
2 |
|
|
|
|
|
|
|
|
Решение примера
Будем выделять остаточный ресурс процессам и оценивать состояние системы.
1. Lnew(1) = L(1) + a =1+2=3 |
C(1)=M(1)-Lnew(1)=4 - 3 =1>0 |
||
|
|
C(2)=2>0; |
C(3)=3>0 |
|
Все C(i)>0, состояние системы ненадежное. |
||
2. |
Lnew(3) = L(3) + a =5+2=7 |
C(3)=M(3)-Lnew(3)=8 - 7 =1>0 |
|
|
|
C(1)=3>0; |
C(2)=2>0 |
|
Все C(i)>0, состояние системы ненадежное. |
||
3. |
Lnew(2) = L(2) + a =4+2=6 |
C(2)=M(2)-Lnew(2)=6 - 6 =0 |
|
|
|
C(1)=3>0; |
C(3)=3>0 |
|
C(2)=0, состояние системы надежное. |
|
Решение примера (продолжение)
Будем выделять остаточный ресурс процессам и оценивать состояние системы. 4. a = 6, после завершения Process (2)
5. Lnew(1) = L(1) + a’ =1+3=4 C(1)=M(1)-Lnew(1)=4 - 4 =0 C(3)=3>0;
C(1)=0, состояние системы надежное. 6. a = 7, после завершения Process (1)
7. Lnew(3) = L(2) + a’ =5+3=8 C(3)=M(3)-Lnew(3)=8 - 8 =0 C(3)=0;
C(3)=0, состояние системы надежное. 8. a = 12, все процессы завершены.
Недостатки алгоритма банкира
1.Фиксированное число ресурсов в системе.
2.Фиксированное число процессов в системе.
3.Время реакции ОС на запрос от процесса может слабо отличаться от «бесконечного».
4.Кто должен определять максимальную потребность в ресурсах?
5.Возможен переход в однопрограммный режим.