Тупик в OperaСистема ting: что такое циклическое ожидание (примеры)

Что такое тупик?

Deadlock — это ситуация, которая возникает в ОС, когда какой-либо процесс переходит в состояние ожидания, поскольку другой ожидающий процесс удерживает требуемый ресурс. Взаимная блокировка — это распространенная проблема в многопроцессорной обработке, когда несколько процессов используют определенный тип взаимоисключающего ресурса, известного как программная блокировка или программное обеспечение.

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

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

Что такое циклическое ожидание?

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

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

Пример циклического ожидания

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

Пример циклического ожидания

Пример циклического ожидания

Обнаружение взаимоблокировок в ОС

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

Предотвращение тупиковых ситуаций в ОС

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

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

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

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

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

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

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

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

Держись и жди

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

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

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

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

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

уклонение Algorithms

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

Один экземпляр типа ресурса.

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

Множественные экземпляры типа ресурса.

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

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

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

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

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

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

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

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

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

Итого

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