- •Тупики
- •Бесконечное ожидание – состояние системы, которого ждет процесс, является возможным, но оно откладывается
- •Предотвращение тупиков. Принципы Хавендера.
- •Процесс запрашивает все нужные ресурсы сразу. До выделения – ждет.
- •Вводим линейную упорядоченность на типы ресурсов. Процесс может запросить ресурсы только в порядке
- •Обход тупиков. Алгоритм банкира.
- •Рассмотрим пример
- •Решение примера
- •Решение примера (продолжение)
- •Недостатки алгоритма банкира
- •Обнаружение тупиков
- •Восстановление системы после обнаружения тупика
- •Виртуализация ресурсов – средство борьбы с тупиками
- •Небольшой пример
Обнаружение тупиков
Обнаружение тупика – установление факта наличия в системе процессов ожидающих «нереализуемое» состояние.
Основной подход к решению – построение графа распределения ресурсов и нахождение в нем циклов. Чрезвычайно затратный подход. На практике в чистом виде не используется.
Восстановление системы после обнаружения тупика
Восстановление работы системы – продолжение работы некоторых процессов после устранения причины тупика.
Сложности решения:
•Неочевидность тупика.
•Трудно остановить процесс в произвольной точке кода.
•Большие накладные расходы на реализацию сохранения результатов.
•В системах с большим числом разноприоритетных процессов трудно удалить процессы с высоким приоритетом.
Виртуализация ресурсов – средство борьбы с тупиками
Система не устраняет условий возникновения тупиков – при возникновении конкурирующих запросов ВСЕ ресурсы могут быть заменены на «виртуальный аналог».
Особенности решения:
•Алгоритмически простое решение.
•Формально, не боится большого числа процессов.
•Сложность возврата из «виртуального мира» в реальный в случае иерархической виртуальности.
Небольшой пример
Виртуальный мир (для красной машины)
Транспортная пробка |
Устранение пробки |
(реальный мир) |
(в реальном мире) |
Осталась только одна проблема – как вернуть красную машину из виртуального мира в реальный? (См. «Дозоры …»)