Ноу Інти, лекція, тупики

виявлення тупиків

Виявлення взаимоблокировки зводиться до фіксації тупикової ситуації і виявлення залучених до неї процесів. Для цього проводиться перевірка наявності циклічного очікування в випадках, коли виконані перші три умови виникнення тупика. Методи виявлення активно використовують графи розподілу ресурсів.

Розглянемо модельну ситуацію.

Питання полягає в тому, чи є дана ситуація тупиковою. і якщо так, то які процеси в ній беруть участь. Для відповіді на це питання можна сконструювати граф ресурсів. як показано на рис. 7.3. З малюнка видно, що є цикл, що моделює умова кругового очікування, і що процеси P2, P3, P5. а може бути, і інші знаходяться в тупиковій ситуації.


Мал. 7.3. Граф ресурсів

Візуально легко виявити наявність тупика. але потрібні також формальні алгоритми, реалізовані на комп'ютері.

Відновлення після тупиків

Виявивши тупик. можна вивести з нього систему, порушивши одне з умов існування тупика. При цьому, можливо, кілька процесів частково або повністю втратять результати виконаної роботи.

Складність відновлення обумовлена ​​низкою факторів.

  • У більшості систем немає достатньо ефективних засобів, щоб призупинити процес, вивести його з системи і відновити згодом з того місця, де він був зупинений.
  • Якщо навіть такі кошти є, то їх використання вимагає витрат і уваги оператора.
  • Відновлення після глухого кута може зажадати значних зусиль.

Найпростіший і найпоширеніший спосіб усунути глухий кут - завершити виконання одного або більше процесів, щоб згодом використовувати його ресурси. Тоді в разі успіху інші процеси зможуть виконуватися. Якщо це не допомагає, можна ліквідувати ще кілька процесів. Після кожної ліквідації повинен запускатися алгоритм виявлення тупика.

По можливості краще ліквідувати той процес, який може бути без шкоди повернутий до початку (такі процеси називаються Ідемпотентний). Прикладом такого процесу може служити компіляція. З іншого боку, процес, який змінює вміст бази даних, не завжди може бути коректно запущений повторно.

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

У ряді систем реалізовані засоби відкату і перезапуску або рестарту з контрольною точки (збереження стану системи в якийсь момент часу). Якщо проектувальники системи знають, що глухий кут імовірний, вони можуть періодично організовувати для процесів контрольні точки. Іноді це доводиться робити розробникам прикладних програм.

Коли тупик виявлений, видно, які ресурси залучені в цикл кругового очікування. Щоб здійснити відновлення, процес, який володіє таким ресурсом. повинен бути відкинутий до моменту часу, що передує його запитом на цей ресурс.

висновок

Виникнення тупиків є потенційною проблемою будь-якої операційної системи. Вони виникають, коли є група процесів, кожен з яких намагається отримати винятковий доступ до деяких ресурсів і претендує на ресурси. належать іншому процесу. У підсумку всі вони виявляються в стані нескінченного очікування.

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

Схожі статті