Что такое Livelock?
Динамический тупик ситуация , когда запрос на монопольную блокировку отказано повторно, так как многие перекрывающиеся общие замки продолжают мешать друг другу. Процессы продолжают менять свой статус, что еще больше мешает им выполнить задачу. Это еще больше мешает им выполнить задачу.
В этом руководстве по операционной системе вы узнаете:
- Что такое Livelock?
- Примеры Livelock
- Что ведет к Livelock?
- Что такое тупик?
- Пример тупика
- Что такое голод?
- Разница между тупиком, голоданием и лив-блокировкой
Примеры Livelock
Пример 1:
Самый простой пример Livelock - это два человека, которые встречаются лицом к лицу в коридоре, и оба отодвигаются в сторону, чтобы позволить другому пройти. В конечном итоге они перемещаются из стороны в сторону без какого-либо прогресса, поскольку движутся в одно и то же время. Здесь они никогда не пересекаются.
Пример 2:
На изображении выше вы можете видеть, что каждому из этих двух процессов нужны два ресурса, и они используют примитивный опрос входа в реестр, чтобы попытаться получить необходимые для них блокировки. Если попытка не удалась, метод снова работает.
- Процесс A, удержание ресурса Y
- Процесс B содержит ресурс X
- Процесс A требует X ресурса
- Процесс B требует Y ресурса
Предположим, что процесс A запускается первым и получает ресурс данных X, а затем процесс B запускается и получает ресурс Y, независимо от того, какой процесс запускается первым, ни один из них не продвигается дальше.
Однако ни один из двух процессов не заблокирован. Они многократно используют ресурсы ЦП без какого-либо прогресса, но также останавливают любой блок обработки.
Следовательно, эта ситуация не является ситуацией тупика, потому что нет ни одного заблокированного процесса, но мы сталкиваемся с ситуацией, эквивалентной тупиковой ситуации, то есть LIVELOCK.
Что ведет к Livelock?
Livelock возникает, когда общее количество разрешенных процессов в конкретной системе должно определяться общим количеством записей в таблице процессов. Следовательно, слоты таблицы процессов следует называть конечными ресурсами.
Что такое тупик?
Тупик - это ситуация, которая возникает в ОС, когда какой-либо процесс переходит в состояние ожидания, потому что другой ожидающий процесс удерживает требуемый ресурс. Тупик - распространенная проблема в многопроцессорной обработке, когда несколько процессов совместно используют определенный тип взаимоисключающего ресурса, известный как программная блокировка или программное обеспечение.
Пример тупика
- Пример из реальной жизни - это движение, которое идет только в одном направлении.
- Здесь мост считается ресурсом.
- Таким образом, когда происходит тупик, его можно легко решить, если одна машина выполняет резервное копирование (вытеснение ресурсов и откат).
- При возникновении тупиковой ситуации может потребоваться резервное копирование нескольких автомобилей.
- Так что голодание возможно.
Что такое голод?
Голодание - это ситуация, когда все процессы с низким приоритетом заблокированы, а процессы с высоким приоритетом продолжаются. В любой системе запросы ресурсов с высоким / низким приоритетом выполняются динамически. Таким образом, требуется определенная политика, чтобы решить, кто и когда получит поддержку.
При использовании некоторых алгоритмов некоторые процессы могут не получить желаемое обслуживание, даже если они не зашли в тупик. Истощение происходит, когда некоторые потоки делают общие ресурсы недоступными в течение длительного периода времени.
Пример голодания:
Например, объект предлагает синхронизированный метод, возврат которого может занять много времени. Если один поток часто использует этот метод, другие потоки, которым также требуется частый синхронизированный доступ к тому же объекту, часто будут заблокированы.
Разница между тупиком, голоданием и лив-блокировкой
- Тупик - это ситуация, которая возникает в ОС, когда какой-либо процесс входит в состояние ожидания, потому что требуемый ресурс удерживается другим ожидающим процессом.
- С другой стороны, livelock почти аналогичен тупиковой ситуации, за исключением того, что состояния процессов, которые вовлечены в livelock, всегда постоянно меняются друг на друга, не прогрессируя.
- Итак, Livelock - это уникальный случай ресурсного голодания.
Резюме:
- Определение: Livelock - это ситуация, когда запрос на эксклюзивную блокировку неоднократно отклоняется, поскольку многие перекрывающиеся разделяемые блокировки продолжают мешать друг другу.
- Livelock возникает, когда общее количество разрешенных процессов в конкретной системе должно определяться общим количеством записей в таблице процессов.
- Тупик - это ситуация, которая возникает в ОС, когда какой-либо процесс переходит в состояние ожидания, потому что другой ожидающий процесс удерживает требуемый ресурс.
- Пример из реальной жизни - это движение, которое идет только в одном направлении.
- Примером Livelock может быть два человека, которые встречаются лицом к лицу в коридоре, и оба отодвигаются в сторону, чтобы позволить другому пройти.
- Голодание - это ситуация, когда все процессы с низким приоритетом заблокированы, а процессы с высоким приоритетом продолжаются.