Постоянное блокирование множества процессов, которые конкурируют в борьбе за системные ресурсы, либо сообщаются один с другим. В отличии от других проблем, возникающих в процессе управления параллельными вычислениями, данная проблема эффективного решения не имеет.
Все взаимоблокировки предполагают наличие конфликта в борьбе за ресурс между 2мя и более процессами. Ресурсы: повторно используемые; расходуемые.
Условия осуществления взаимоблокировок:
- взаимное исключение
- удержание и ожидание
- отсутствие перераспределения
- циклическое ожидание.
Первые три условия являются необходимыми, но недостаточными для выполнения взаимоблокировки. При наличии первых 3х условий, может сложиться такая последовательность событий, которая приведет к неразрешимому циклическому ожиданию.
Предотвращение взаимоблокировок.
Два метода: Косвенный метод (предотвращение одного из трёх первых условий возникновения взаимоблокировок: взаимное исключение, удержание и ожидание, отсутствие перераспределения), Прямой (предотвращение циклического ожидания).
|
|
Избежать взаимоисключения невозможно. Если доступ к ресурсам д.б. исключительным, то ОС должна поддерживать взаимоисключение.
Удержании и ожидание. Избегается, потребовав чтоб процесс запрашивал все ресурсы одновременно и блокировать процесс, пока запрос не будет полностью удовлетворён. Метод не эффективен (долгое время ожидания; ресурсы могут оставаться неиспользуемыми долгое время, когда они могли бы использоваться другими процессами; может быть неизвестно заранее какие ресурсы могут понадобиться процессу)
Отсутствие перераспределений. 2 пути:
-если процесс удерживает некоторые ресурсы и ему отказано в новом запросе, то процесс должен освободить захваченные ресурсы и через некоторое время запросить их вновь вместе с тем ресурсом, в доступе к которому ему было отказано.
-если процесс затребовал некоторый ресурс, в настоящий момент времени захваченный другим процессом, то ОС может потребовать от этого процесса освободить все захваченные им ресурсs/ Но возможно только если процессы имеют разные приоритеты и применим подход только к тем ресурсам, состояние которого можно легко сохранить, а позже восстановить.
Циклическое ожидание. Избегается путем упорядочивания ресурсов.