Livelock: в чем, пример, разница с Deadlock

Что такое Лайвлок?

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

Примеры Livelock

Пример 1:

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

Пример 2:

Примеры Livelock

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

  1. Процесс A удерживает ресурс Y
  2. Процесс B содержит ресурс X
  3. Процессу A требуется ресурс X
  4. Процесс B требует ресурса Y

Предположим, что сначала запускается процесс A и получает ресурс данных X, а затем запускается процесс B и получает ресурс Y, независимо от того, какой процесс запускается первым, ни один из них не продвигается дальше.

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

Таким образом, данная ситуация не является ситуацией deadlock потому что нет ни одного заблокированного процесса, но мы сталкиваемся с ситуацией, эквивалентной деadlock, то есть LIVELOCK.

Что приводит к Livelock?

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

Что такое Деadlock?

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

Пример Деadlock

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

Что такое голодание?

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

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

Пример голодания

Например, объект предлагает syncхронизированный метод, возврат которого, вероятно, займет много времени. Если один поток часто использует этот метод, другие потоки, которым также требуется частая syncсинхронизированный доступ к одному и тому же объекту часто блокируется.

Разница между Деadlock, голодание и Livelock

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

Итого

  • Определение: Livelock — это ситуация, когда запрос на эксклюзивную блокировку неоднократно отклоняется, поскольку множество перекрывающихся общих блокировок продолжают мешать друг другу.
  • Livelock возникает, когда общее количество разрешенных процессов в конкретной системе должно определяться общим количеством записей в таблице процессов.
  • А деadlock — это ситуация, которая возникает в ОС, когда какой-либо процесс переходит в состояние ожидания, поскольку другой ожидающий процесс удерживает требуемый ресурс.
  • Реальным примером может служить движение транспорта только в одном направлении.
  • Примером Лайвлока могут быть два человека, которые встречаются лицом к лицу в коридоре, и оба отходят в сторону, чтобы пропустить другого.
  • «Голод» — это ситуация, когда все процессы с низким приоритетом блокируются, а процессы с высоким приоритетом продолжаются.