- •Планирование в интерактивных системах Циклическое планирование
- •Приоритетное планирование
- •Планирование однородных процессов
- •Общее планирование реального времени
- •Взаимоблокировка процессов
- •Обнаружение взаимоблокировки при наличии одного ресурса каждого типа
- •Обнаружение взаимоблокировки при наличии нескольких ресурсов каждого типа
- •Моделирование взаимоблокировок
- •Методы борьбы с взаимоблокировками
- •Пренебрежением проблемой в целом (страусовый алгоритм)
- •Обнаружение и устранение взаимоблокировок
- •Безопасные и небезопасные состояния
- •Алгоритм банкира для одного вида ресурсов
Безопасные и небезопасные состояния
В безопасном состоянии система может гарантировать, что все процессы закончат свою работу.
Рассмотрим систему.
10 экземпляров ресурса
3 процесса
Процесс А занял 3 экземпляра, но ему необходимо 9.
В этой ситуации можно спланировать так, сначала запустить процесс В, потом С и потом А.
Процессы заканчивают работу без тупиковой ситуации.
Рассмотрим другую ситуацию.
Процесс А занял 4 экземпляра.
Возникает небезопасное состояние.
В принципе, процесс А может в какой то момент ресурс освободить и тупика не возникнет.
Видно, что в этом случае не стоило давать ресурс процессу А.
Алгоритм банкира для одного вида ресурсов
"Банкира", потому что аналогия такая, клиенты-процессы, кредиты-ресурсы.
Рассмотрим систему:
Банкир может дать 10 кредитов (ресурсы).
К нему попеременно обращаются 4-ре клиента.
Алгоритм банкира:
Банкиру поступает запрос от клиента на получение кредита
Банкир проверяет, приводит ли этот запрос к небезопасному состоянию.
Банкир в зависимости от этого дает или отказывает в кредите.
Алгоритм банкира
Предотвращение четырех условий, необходимых для взаимоблокировок
Предотвращение условия взаимного исключения
Можно минимизировать количество процессов борющихся за ресурсы.
Например, с помощью спулинга для принтера, когда только демон принтера работает с принтером.
Предотвращение условия удержания и ожидания
Один из способов достижения этой цели, это когда процесс должен запрашивать все необходимые ресурсы до начала работы. Если хоть один ресурс недоступен, то процессу вообще ничего не предоставляется.
Предотвращение условия отсутствия принудительной выгрузки ресурса
Можно выгружать ресурсы, но могут быть проблемы с принтером.
Предотвращение условия циклического ожидания
Способы предотвращения:
Процесс сначала должен освободить занятый ресурс, прежде чем занять новый.
Можно пронумеровать все ресурсы (и упорядочить), и процессы должны запрашивать ресурсы только по возрастающему порядку.
