Учебники

16) Введение в DEADLOCK

Из этого руководства по операционной системе вы узнаете:

Пример тупика

  • Примером из реальной жизни будет движение, которое идет только в одном направлении.
  • Здесь мост считается ресурсом.
  • Таким образом, когда возникает тупик, его можно легко устранить, если резервное копирование выполняется одним автомобилем (предварительные ресурсы и откат).
  • Возможно, придется зарезервировать несколько автомобилей, если возникнет тупиковая ситуация.
  • Так что голодание возможно.

Пример тупика

Что такое циркулярное ожидание?

Один процесс ожидает ресурс, который удерживается вторым процессом, который также ожидает ресурс, удерживаемый третьим процессом и т. Д. Это будет продолжаться до тех пор, пока последний процесс не ожидает ресурс, удерживаемый первым процессом. Это создает круговую цепочку.

Например, процессу A выделяется ресурс B, так как он запрашивает ресурс A. Таким же образом процессу B выделяется ресурс A, и он запрашивает ресурс B. Это создает циклический цикл ожидания.

Пример кругового ожидания

Например, компьютер имеет три USB-накопителя и три процесса. Каждый из трех процессов способен удерживать один из USB-накопителей. Таким образом, когда каждый процесс запрашивает другой диск, эти три процесса будут иметь тупиковую ситуацию, поскольку каждый процесс будет ожидать освобождения USB-накопителя, который в данный момент используется. Это приведет к круговой цепи.

Пример кругового ожидания

Обнаружение тупика

Планировщик ресурсов может обнаружить возникновение взаимоблокировки. Планировщик ресурсов помогает ОС отслеживать все ресурсы, выделенные различным процессам. Таким образом, когда обнаружена взаимоблокировка, ее можно устранить с помощью следующих методов:

Предотвращение тупиковой ситуации:

Важно предотвратить тупик, прежде чем он может возникнуть. Система проверяет каждую транзакцию перед ее выполнением, чтобы убедиться, что она не приводит к тупиковым ситуациям. Такое, что даже небольшое изменение должно произойти мертвым, что операция, которая может привести к тупику в будущем, также никогда не позволяла процессу выполняться.

Это набор методов для гарантии того, что хотя бы одно из условий не может быть выполнено.

Нет упреждающих действий:

Нет выкупа – ресурс может быть освобожден только добровольно процессом, удерживающим его после того, как этот процесс завершил свою задачу

  • Если процесс, который удерживает некоторые ресурсы, запрашивает другой ресурс, который не может быть немедленно выделен ему, в этой ситуации все ресурсы будут освобождены.
  • Выделенные ресурсы требуют список ресурсов для процесса, который ожидает.
  • Процесс будет перезапущен, только если он сможет восстановить свой старый ресурс и новый, который он запрашивает.
  • Если процесс запрашивает какой-то другой ресурс, когда он доступен, он был передан запрашивающему процессу.
  • Если он удерживается другим процессом, ожидающим другого ресурса, мы освобождаем его и передаем процессу запроса.

Взаимное исключение:

Взаимное исключение – это полная форма Mutex. Это специальный тип двоичного семафора, который используется для управления доступом к общему ресурсу. Он включает механизм наследования приоритетов, чтобы избежать проблем с расширенной инверсией приоритетов. Это позволяет текущим задачам с более высоким приоритетом оставаться в заблокированном состоянии в кратчайшие сроки.

Совместно используемые ресурсы, такие как файлы только для чтения, никогда не приводят к взаимоблокировкам, но ресурсы, такие как принтеры и ленточные накопители, нуждаются в монопольном доступе одним процессом.

Держи и жди:

В этом состоянии процессы должны быть остановлены от удержания одного или нескольких ресурсов при одновременном ожидании одного или нескольких других.

Круговое ожидание:

Это накладывает общий порядок всех типов ресурсов. Циклическое ожидание также требует, чтобы каждый процесс запрашивал ресурсы в порядке возрастания нумерации.

Предотвращение тупиков

Лучше избегать тупиковой ситуации, чем предпринимать действия после возникновения тупиковой ситуации. Требуется дополнительная информация, например, как следует использовать ресурсы. Предотвращение тупиковых ситуаций – это самая простая и полезная модель, в которой каждый процесс объявляет максимальное количество ресурсов каждого типа, которое может ему понадобиться.

Алгоритмы избегания

Алгоритм предотвращения взаимоблокировок помогает вам динамически оценивать состояние распределения ресурсов, чтобы никогда не возникало ситуации циклического ожидания.

Единственный экземпляр типа ресурса.

  • Используйте график распределения ресурсов
  • Необходимы циклы, достаточные для тупика

Несколько экземпляров типа ресурса.

  • Циклы необходимы, но никогда не достаточны для тупика.
  • Использует алгоритм банкира

Разница между голодом и тупиком

Вот некоторые важные различия между тупиком и голодом:

тупик голодание
Ситуация взаимоблокировки возникает, когда один из процессов заблокирован. Истощение – это ситуация, когда все процессы с низким приоритетом блокируются, и процессы с высоким приоритетом выполняются.
Тупик – это бесконечный процесс. Голод – долгое ожидание, но не бесконечный процесс.
У каждого тупика всегда есть голод. Каждое голодание не обязательно должно быть в тупике.
Тупик случается тогда Взаимное исключение, держи и жди. Здесь упреждение и циклическое ожидание не происходят одновременно. Это происходит из-за неконтролируемого приоритета и управления ресурсами.

Преимущества тупика

Вот преимущества / преимущества использования метода Deadlock

  • Эта ситуация хорошо работает для процессов, которые выполняют один всплеск активности
  • Для тупиковой ситуации приоритет не требуется.
  • Удобный метод применительно к ресурсам, состояние которых можно легко сохранить и восстановить
  • Реализуется с помощью проверок во время компиляции
  • Не требует вычислений во время выполнения, так как проблема решается при проектировании системы

Недостатки метода тупика

Вот минусы / минусы использования метода взаимоблокировки

  • Задерживает начало процесса
  • Процессы должны знать будущие потребности в ресурсах
  • Упреждает чаще, чем необходимо
  • Запрещает добавочные запросы ресурсов
  • Присущие потери преимуществ.

Резюме:

  • Определение тупика: в ОС возникает ситуация, когда какой-либо процесс переходит в состояние ожидания, поскольку другой процесс ожидания удерживает требуемый ресурс.
  • Циклическое ожидание происходит, когда один процесс ожидает ресурс, который удерживается вторым процессом, который также ожидает ресурс, удерживаемый третьим процессом и т. Д.
  • Планировщик ресурсов может обнаружить возникновение взаимоблокировки.
  • Важно предотвратить тупик, прежде чем он может возникнуть.
  • Ресурс может быть освобожден только добровольно процессом, удерживающим его после того, как этот процесс завершил свою задачу.
  • Взаимное исключение – это полная форма Mutex. Это специальный тип двоичного семафора, который используется для управления доступом к общему ресурсу.
  • Удержание и ожидание – это условие, при котором процессы должны быть остановлены для удержания одного или нескольких ресурсов, одновременно ожидая одного или нескольких других.
  • Предотвращение тупиковых ситуаций – это самая простая и полезная модель, в которой каждый процесс объявляет максимальное количество ресурсов каждого типа, которое может ему понадобиться.
  • Алгоритм предотвращения взаимоблокировок помогает вам динамически оценивать состояние распределения ресурсов, чтобы никогда не возникало ситуации циклического ожидания.
  • Тупик – бесконечный процесс, в то время как голод – долгое ожидание, но не бесконечный процесс.