Учебники

19) Livelock

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

Примеры Livelock

Пример 1:

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

Пример 2:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Разница между тупиком, голодом и живой блокировкой

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

Резюме:

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