Jump to content

Тупик

Оба процесса нуждаются в ресурсах для продолжения выполнения. P1 требует дополнительного ресурса R1 и владеет ресурсом R2 , P2 требует дополнительного ресурса R2 и владеет R1 ; ни один процесс не может продолжаться.
Четыре процесса (синие линии) конкурируют за один ресурс (серый кружок), следуя политике «правый перед левым». Взаимная блокировка возникает, когда все процессы одновременно блокируют ресурс (черные линии). Тупиковую ситуацию можно разрешить, нарушив симметрию.

В параллельных вычислениях тупик это любая ситуация, в которой ни один член некоторой группы объектов не может продолжить работу, поскольку каждый из них ожидает, пока другой член, включая себя, предпримет действие, например отправит сообщение или, что чаще, снимет блокировку . [1] Взаимные блокировки являются распространенной проблемой в многопроцессорных системах, параллельных вычислениях и распределенных системах , поскольку в этих контекстах системы часто используют программные или аппаратные блокировки для арбитража общих ресурсов и реализации синхронизации процессов . [2]

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

В системе связи взаимоблокировки возникают в основном из-за потери или повреждения сигналов, а не из-за конкуренции за ресурсы. [5]

Два процесса конкурируют за два ресурса в противоположном порядке.
  1. Происходит единый процесс.
  2. Более поздний процесс должен подождать.
  3. Взаимная блокировка возникает, когда первый процесс блокирует первый ресурс в то же время, когда второй процесс блокирует второй ресурс.
  4. Взаимную блокировку можно разрешить, отменив и перезапустив первый процесс.

Индивидуально необходимые и совместно достаточные условия тупиковой ситуации [ править ]

Тупиковая ситуация на ресурсе может возникнуть только в том случае, если в системе одновременно возникают все следующие условия: [6]

  1. Взаимное исключение . По крайней мере, один ресурс должен храниться в закрытом режиме (мы предполагаем, что один ресурс может иметь несколько экземпляров); то есть ресурс может использовать только один процесс одновременно. [7] В противном случае процессам не будет запрещено использовать ресурс при необходимости. В любой момент времени только один процесс может использовать ресурс. [8]
  2. Удержание и ожидание или удержание ресурсов: процесс в настоящее время удерживает хотя бы один ресурс и запрашивает дополнительные ресурсы, которые удерживаются другими процессами.
  3. Никакого вытеснения : ресурс может быть освобожден только добровольно удерживающим его процессом.
  4. Циклическое ожидание: каждый процесс должен ожидать ресурса, удерживаемого другим процессом, который, в свою очередь, ожидает, пока первый процесс освободит ресурс. В общем, существует набор процессов ожидания P = { P 1 , P 2 , ..., P N }, таких, что P 1 ожидает ресурса, удерживаемого P 2 , P 2 ожидает ресурса, удерживаемого P 2 . на P 3 и так далее, пока P N не будет ждать ресурса, удерживаемого P 1 . [4] [9]

Эти четыре условия известны как условия Коффмана из-за их первого описания в статье Эдварда Г. Коффмана-младшего 1971 года. [9]

Хотя этих условий достаточно для возникновения тупиковой ситуации в системах с одним экземпляром ресурсов, они указывают только на возможность тупиковой ситуации в системах, имеющих несколько экземпляров ресурсов. [10]

Обработка тупиков [ править ]

Большинство современных операционных систем не могут предотвратить взаимоблокировки. [11] При возникновении взаимоблокировок разные операционные системы реагируют на них по-разному, нестандартно. Большинство подходов работают, предотвращая возникновение одного из четырех условий Коффмана , особенно четвертого. [12] Основные подходы заключаются в следующем.

Игнорирование тупика [ править ]

В этом подходе предполагается, что взаимоблокировки никогда не возникнут. Это также применение алгоритма Страуса . [12] [13] Этот подход первоначально использовался MINIX и UNIX . [9] Это используется, когда временные интервалы между возникновением взаимоблокировок велики и потеря данных, возникающая каждый раз, допустима.

Игнорирование взаимоблокировок можно безопасно выполнить, если формально доказано, что взаимоблокировки никогда не возникают. Примером является структура RTIC. [14]

Обнаружение [ править ]

При обнаружении взаимоблокировок допускается возникновение взаимоблокировок. Затем состояние системы проверяется на наличие взаимоблокировки и впоследствии исправляется. Используется алгоритм, который отслеживает распределение ресурсов и состояние процессов, откатывает и перезапускает один или несколько процессов, чтобы устранить обнаруженную взаимоблокировку. Обнаружить уже произошедшую взаимоблокировку легко, поскольку ресурсы, которые каждый процесс заблокировал и/или запрашивал в данный момент, известны планировщику ресурсов операционной системы. [13]

После обнаружения взаимоблокировки ее можно исправить одним из следующих способов: [ нужна ссылка ]

  1. Завершение процесса: один или несколько процессов, вовлеченных в тупик, могут быть прерваны. Можно было бы решить прервать все конкурирующие процессы, вовлеченные в тупик. Это гарантирует, что тупиковая ситуация будет разрешена надежно и быстро. [ нужна ссылка ] Но затраты высоки, поскольку частичные вычисления будут потеряны. Или можно выбрать прерывание одного процесса за раз, пока тупиковая ситуация не будет разрешена. Этот подход имеет большие накладные расходы, поскольку после каждого прерывания алгоритм должен определить, находится ли система по-прежнему в тупике. [ нужна ссылка ] При выборе кандидата на прекращение необходимо учитывать несколько факторов, таких как приоритет и давность процесса. [ нужна ссылка ]
  2. Вытеснение ресурсов: ресурсы, выделенные различным процессам, могут последовательно вытесняться и выделяться другим процессам до тех пор, пока тупиковая ситуация не будет преодолена. [15] [ не удалось пройти проверку ]

Профилактика [ править ]

(А) Два процесса конкурируют за один ресурс, следуя политике «первым пришел — первым обслужен». (Б) Тупиковая ситуация возникает, когда оба процесса одновременно блокируют ресурс. (C) Тупик можно разрешить , нарушив симметрию замков. (D) Тупиковую ситуацию можно предотвратить , нарушив симметрию запорного механизма.

Предотвращение тупиковых ситуаций предотвращает возникновение одного из четырех условий Коффмана.

  • Удаление условия взаимного исключения означает, что ни один процесс не будет иметь монопольного доступа к ресурсу. Это оказывается невозможным для ресурсов, которые не могут быть буферизованы . Но даже при использовании буферных ресурсов тупиковая ситуация все равно может возникнуть. Алгоритмы, избегающие взаимного исключения, называются алгоритмами неблокирующей синхронизации .
  • Условия удержания и ожидания или удержания ресурсов можно устранить, потребовав от процессов запрашивать все необходимые им ресурсы перед запуском (или перед началом определенного набора операций). Эти предварительные знания зачастую трудно удовлетворить, и в любом случае они представляют собой неэффективное использование ресурсов. Другой способ — потребовать от процессов запрашивать ресурсы только тогда, когда их нет; Во-первых, они должны освободить все имеющиеся у них ресурсы, прежде чем запрашивать все ресурсы, которые им понадобятся, с нуля. Это тоже зачастую непрактично. Это происходит потому, что ресурсы могут быть выделены и оставаться неиспользованными в течение длительного периода времени. Кроме того, процессу, требующему популярный ресурс, возможно, придется ждать бесконечно, поскольку такой ресурс всегда может быть выделен какому-то процессу, что приведет к нехватке ресурсов . [16] (Эти алгоритмы, такие как сериализация токенов , известны как алгоритмы «все или ничего» .)
  • Условие отсутствия вытеснения также может быть трудно или невозможно избежать, поскольку процесс должен иметь ресурс в течение определенного периода времени, иначе результат обработки может быть непоследовательным или перегрузка может произойти . Однако невозможность принудительного вытеснения может помешать алгоритму приоритета . Вытеснение «заблокированного» ресурса обычно подразумевает откат , и его следует избегать, поскольку оно требует очень больших затрат. Алгоритмы, допускающие вытеснение, включают алгоритмы без блокировок и без ожидания, а также оптимистическое управление параллелизмом . Если процесс, удерживающий некоторые ресурсы, и запрашивает какой-либо другой ресурс(ы), которые не могут быть ему немедленно выделены, это условие можно устранить, освободив все удерживаемые в данный момент ресурсы этого процесса.
  • Последним условием является условие циклического ожидания . Подходы, позволяющие избежать циклического ожидания, включают отключение прерываний во время критических секций и использование иерархии для определения частичного упорядочения ресурсов. Если очевидной иерархии не существует, для определения порядка использовался даже адрес памяти ресурсов, и ресурсы запрашивались в возрастающем порядке перечисления. [4] раствор Дейкстры . Также можно использовать

Избежание тупиков [ править ]

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

Для предотвращения тупиковых ситуаций операционной системе заранее предоставляется дополнительная информация о том, какие ресурсы процесс будет запрашивать и использовать в течение своей жизни. Алгоритм предотвращения тупиков анализирует каждый запрос, проверяя, что нет возможности возникновения тупика в будущем, если запрошенный ресурс будет выделен. Недостатком этого подхода является требование заранее предоставить информацию о том, как ресурсы будут запрашиваться в будущем. Одним из наиболее часто используемых алгоритмов предотвращения тупиковых ситуаций является алгоритм Банкера . [17]

Лайвлок [ править ]

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

Этот термин был придуман Эдвардом А. Эшкрофтом в статье 1975 года. [18] в связи с проверкой систем бронирования авиабилетов. [19] Livelock — это частный случай нехватки ресурсов ; общее определение лишь констатирует, что конкретный процесс не прогрессирует. [20]

Livelock представляет собой риск, связанный с некоторыми алгоритмами и восстанавливаются из нее , которые обнаруживают взаимоблокировку . Если действие предпринимают более одного процесса, алгоритм обнаружения взаимоблокировок может запускаться повторно. Этого можно избежать, гарантируя, что только один процесс (выбранный произвольно или по приоритету) выполняет действие. [21]

Распределенный тупик [ править ]

Распределенные взаимоблокировки могут возникать в распределенных системах при распределенных транзакций или управления параллелизмом использовании .

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

Фантомные взаимоблокировки — это взаимоблокировки, которые ошибочно обнаруживаются в распределенной системе из-за внутренних задержек системы, но на самом деле не существуют. Например, если процесс освобождает ресурс R1 и отправляет запрос на R2 , а первое сообщение теряется или задерживается, координатор (детектор взаимоблокировок) может ошибочно заключить о взаимоблокировке (если запрос R2 при наличии R1 приведет к тупик).

См. также [ править ]

Ссылки [ править ]

  1. ^ Кулурис, Джордж (2012). Концепции и проектирование распределенных систем . Пирсон. п. 716. ИСБН  978-0-273-76059-7 .
  2. ^ Падуя, Дэвид (2011). Энциклопедия параллельных вычислений . Спрингер. п. 524. ИСБН  9780387097657 . Архивировано из оригинала 18 апреля 2021 года . Проверено 16 октября 2020 г.
  3. ^ Фальсафи, Бабак; Мидкифф, Сэмюэл; Деннис, ДжекБ; Деннис, ДжекБ; Готинг, Амол; Кэмпбелл, Рой Х; Клаузекер, Кристоф; Кранцльмюллер, Дитер; Эмер, Джоэл; Фоссум, Трюггве; Смит, Бертон; Филипп, Бернар; Самех, Ахмед; Иригоэн, Франсуа; Фотрие, Поль; Праун, Кристоф фон; Боккино, Роберт Л.; Снир, Марк; Джордж, Томас; Зарин, Вивек; Янн, Джофон (2011). «Тупики». Энциклопедия параллельных вычислений . Бостон, Массачусетс: Springer US. стр. 524–527. дои : 10.1007/978-0-387-09766-4_282 . ISBN  978-0-387-09765-7 . S2CID   241456017 . Взаимная блокировка — это состояние, которое может возникнуть в системе, состоящей из нескольких процессов, имеющих доступ к общим ресурсам. Говорят, что тупиковая ситуация возникает, когда два или более процесса ждут друг от друга освобождения ресурса. Ни один из процессов не может добиться прогресса.
  4. ^ Jump up to: Перейти обратно: а б с Зильбершац, Авраам (2006). Принципы операционной системы (7-е изд.). Вили-Индия. п. 237. ИСБН  9788126509621 . Архивировано из оригинала 25 января 2022 года . Проверено 16 октября 2020 г.
  5. ^ Шнайдер, Г. Майкл (2009). Приглашение в информатику . Cengage Обучение. п. 271. ИСБН  978-0324788594 . Архивировано из оригинала 18 апреля 2021 года . Проверено 16 октября 2020 г.
  6. ^ Зильбершац, Авраам (2006). Принципы операционной системы (7-е изд.). Вили-Индия. п. 239. ИСБН  9788126509621 . Архивировано из оригинала 18 апреля 2021 года . Проверено 16 октября 2020 г.
  7. ^ Концепции операционной системы . Уайли. 2012. с. 319. ИСБН  978-1-118-06333-0 .
  8. ^ «ECS 150, весна 1999 г.: четыре необходимых и достаточных условия тупиковой ситуации» . nob.cs.ucdavis.edu . Архивировано из оригинала 29 апреля 2018 года . Проверено 29 апреля 2018 г.
  9. ^ Jump up to: Перейти обратно: а б с Сибу, К. (2009). Введение во встраиваемые системы (1-е изд.). Тата МакГроу-Хилл Образование. п. 446. ИСБН  9780070145894 . Архивировано из оригинала 18 апреля 2021 года . Проверено 16 октября 2020 г.
  10. ^ «Операционные системы: Тупики» . www.cs.uic.edu . Архивировано из оригинала 28 мая 2020 года . Проверено 25 апреля 2020 г. Если категория ресурсов содержит более одного экземпляра, то наличие цикла в графе распределения ресурсов указывает на возможность тупика, но не гарантирует его. Рассмотрим, например, рисунки 7.3 и 7.4 ниже:
  11. ^ Зильбершац, Авраам (2006). Принципы операционной системы (7-е изд.). Вили-Индия. п. 237. ИСБН  9788126509621 . Архивировано из оригинала 18 апреля 2021 года . Проверено 16 октября 2020 г.
  12. ^ Jump up to: Перейти обратно: а б Стюарт, Брайан Л. (2008). Принципы операционных систем (1-е изд.). Cengage Обучение. п. 446. ИСБН  9781418837693 . Архивировано из оригинала 18 апреля 2021 года . Проверено 16 октября 2020 г.
  13. ^ Jump up to: Перейти обратно: а б Таненбаум, Эндрю С. (1995). Распределенные операционные системы (1-е изд.). Пирсон Образование. п. 117. ИСБН  9788177581799 . Архивировано из оригинала 18 апреля 2021 года . Проверено 16 октября 2020 г.
  14. ^ «Предисловие — Параллелизм в реальном времени, управляемый прерываниями» . Архивировано из оригинала 18 сентября 2020 года . Проверено 1 октября 2020 г.
  15. ^ «Центр знаний IBM» . www.ibm.com . Архивировано из оригинала 19 марта 2017 года . Проверено 29 апреля 2018 г.
  16. ^ Зильбершац, Авраам (2006). Принципы операционной системы (7-е изд.). Вили-Индия. п. 244. ИСБН  9788126509621 . Архивировано из оригинала 18 апреля 2021 года . Проверено 16 октября 2020 г.
  17. ^ «Алгоритмы предотвращения тупиковых ситуаций в операционной системе (ОС)» . Электронный разум . 26 января 2022 г.
  18. ^ Эшкрофт, Э.А. (1975). «Доказательство утверждений о параллельных программах» . Журнал компьютерных и системных наук . 10 : 110–135. дои : 10.1016/S0022-0000(75)80018-3 .
  19. ^ Квонг, Ю.С. (1979). "Об отсутствии лайвлоков в параллельных программах". Семантика параллельных вычислений . Конспекты лекций по информатике. Том. 70. стр. 172–190. дои : 10.1007/BFb0022469 . ISBN  3-540-09511-Х .
  20. ^ Андерсон, Джеймс Х .; Ён Джик Ким (2001). «Взаимное исключение общей памяти: основные тенденции исследований с 1986 года» . Архивировано из оригинала 25 мая 2006 года.
  21. ^ Цёбель, Дитер (октябрь 1983 г.). «Проблема тупика: классифицирующая библиография» . Обзор операционных систем ACM SIGOPS . 17 (4): 6–15. дои : 10.1145/850752.850753 . ISSN   0163-5980 . S2CID   38901737 .

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 88ea01d461d1082c9aa2c8768e82d2d2__1717243140
URL1:https://arc.ask3.ru/arc/aa/88/d2/88ea01d461d1082c9aa2c8768e82d2d2.html
Заголовок, (Title) документа по адресу, URL1:
Deadlock - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)