Безизходица в Operating система: какво е, кръгово изчакване (примери)

Какво е Deadlock?

застой е ситуация, която възниква в ОС, когато някой процес влезе в състояние на изчакване, защото друг изчакващ процес държи искания ресурс. Deadlock е често срещан проблем при многопроцесорна обработка, където няколко процеса споделят специфичен тип взаимно изключващ се ресурс, известен като меко заключване или софтуер.

Пример за безизходица

  • Пример от реалния свят би бил трафикът, който се движи само в една посока.
  • Тук един мост се счита за ресурс.
  • Така че, когато се случи безизходица, тя може лесно да бъде разрешена, ако една кола направи резервно копие (предварително изземване на ресурси и връщане назад).
  • Може да се наложи няколко автомобила да бъдат резервни, ако възникне ситуация на безизходица.
  • Така че гладуването е възможно.
Пример за безизходица
Пример за безизходица

Какво е кръгово изчакване?

Един процес чака ресурса, който се държи от втория процес, който също чака ресурса, държан от третия процес и т.н. Това ще продължи, докато последният процес чака ресурс, държан от първия процес. Това създава кръгла верига.

Например, на процес A е разпределен ресурс B, тъй като той иска ресурс A. По същия начин на процес B е разпределен ресурс A и той изисква ресурс B. Това създава кръгов цикъл на изчакване.

Пример за кръгово изчакване

Например един компютър има три USB устройства и три процеса. Всеки от трите процеса може да държи едно от USB устройствата. Така че, когато всеки процес поиска друго устройство, трите процеса ще имат ситуация на блокиране, тъй като всеки процес ще чака освобождаването на USB устройството, което се използва в момента. Това ще доведе до кръгла верига.

Пример за кръгово изчакване

Пример за кръгово изчакване

Deadlock Detection в OS

Появата на блокиране може да бъде открита от планировчика на ресурси. Планировчикът на ресурси помага на ОС да следи всички ресурси, които са разпределени за различни процеси. Така че, когато се открие блокиране, то може да бъде разрешено с помощта на дадените по-долу методи:

Предотвратяване на блокиране в OS

Важно е да предотвратите блокиране, преди да възникне. Системата проверява всяка транзакция, преди да бъде изпълнена, за да се увери, че не води до ситуации на задънена улица. Такава, че дори една малка промяна да настъпи мъртва, че операция, която може да доведе до безизходица в бъдеще, също така никога не позволява процесът да се изпълни.

Това е набор от методи за гарантиране, че поне едно от условията не е изпълнено.

Без превантивни действия

No Preemption – Ресурс може да бъде освободен само доброволно от процеса, който го държи, след като този процес е завършил задачата си

  • Ако процес, който държи някои ресурси, поиска друг ресурс, който не може да му бъде незабавно разпределен, в тази ситуация всички ресурси ще бъдат освободени.
  • Предварително изтеглените ресурси изискват списъка с ресурси за процес, който чака.
  • Процесът ще бъде рестартиран само ако може да възстанови стария си ресурс и нов, който иска.
  • Ако процесът изисква някакъв друг ресурс, когато той е наличен, той е бил даден на искащия процес.
  • Ако се държи от друг процес, който чака друг ресурс, ние го освобождаваме и го даваме на искащия процес.

Взаимно изключване

Взаимното изключване е пълна форма на Mutex. Това е специален тип двоичен семафор, който се използва за контролиране на достъпа до споделения ресурс. Той включва механизъм за наследяване на приоритети, за да се избегнат разширени проблеми с инверсията на приоритета. Позволява текущите задачи с по-висок приоритет да бъдат задържани в блокирано състояние за възможно най-кратко време.

Споделените ресурси, като например файлове само за четене, никога не водят до блокиране, но ресурси, като принтери и лентови устройства, се нуждаят от изключителен достъп от един процес.

Задръжте и изчакайте

В това състояние процесите трябва да бъдат спрени от задържане на един или множество ресурси, докато едновременно чакат един или повече други.

Циркулярно изчакване

Той налага цялостно подреждане на всички видове ресурси. Кръговото изчакване също така изисква всеки процес да изисква ресурси в нарастващ ред на изброяване.

Избягване на задънена улица Algorithms

По-добре е да избегнете безизходица, вместо да предприемате действия след настъпването на безизходицата. Нуждае се от допълнителна информация, като например как трябва да се използват ресурсите. Избягването на блокиране е най-простият и най-полезен модел, при който всеки процес декларира максималния брой ресурси от всеки тип, от които може да се нуждае.

Избягване Algorithms

Алгоритъмът за избягване на блокиране ви помага да оцените динамично състоянието на разпределение на ресурсите, така че никога да не може да има ситуация на кръгово изчакване.

Единичен екземпляр от тип ресурс.

  • Използвайте графика за разпределение на ресурсите
  • Необходими са цикли, които са достатъчни за Deadlock

Множество екземпляри от тип ресурс.

Разлика между гладуване и безизходица

Ето някои важни разлики между Deadlock и гладуването:

застой глад
Ситуацията на блокиране възниква, когато един от процесите е блокиран. Гладът е ситуация, при която всички процеси с нисък приоритет са блокирани, а процесите с висок приоритет се изпълняват.
Безизходицата е безкраен процес. Гладуването е дълго чакане, но не и безкраен процес.
Всеки Deadlock винаги има глад. Всяко гладуване не е задължително да има задънена улица.
Случва се блокиране, след което се случва взаимно изключване, задръжте и изчакайте. Тук изпреварването и кръговото изчакване не се случват едновременно. Това се случва поради неконтролирано управление на приоритетите и ресурсите.

Предимства на Deadlock

Ето плюсовете/ползите от използването на метода Deadlock

  • Тази ситуация работи добре за процеси, които извършват един изблик на дейност
  • Не е необходимо изпреварване за Deadlock.
  • Удобен метод, когато се прилага за ресурси, чието състояние може да бъде запазено и възстановено лесно
  • Възможност за налагане чрез проверки по време на компилиране
  • Не се нуждае от изчисления по време на изпълнение, тъй като проблемът е решен при проектирането на системата

Недостатъци на Deadlock

Тук са недостатъците/недостатъците на използването на метода на блокиране

  • Забавя стартирането на процеса
  • Процесите трябва да познават бъдещите нужди от ресурси
  • Изпреварва по-често от необходимото
  • Забранява допълнителни заявки за ресурси
  • Присъщи загуби от изпреварване.

Oбобщение

  • Определение за безизходица: Това е ситуация, която възниква в OS когато някой процес влезе в състояние на изчакване, защото друг изчакващ процес държи искания ресурс
  • Циркулярното изчакване се случва, когато един процес чака ресурса, който се държи от втория процес, който също чака ресурса, държан от третия процес и т.н.
  • Появата на блокиране може да бъде открита от планировчика на ресурси.
  • Важно е да предотвратите блокиране, преди да възникне.
  • Ресурс може да бъде освободен само доброволно от процеса, който го държи, след като този процес е завършил своята задача.
  • Взаимното изключване е пълна форма на Mutex. Това е специален тип двоичен файл семафор който се използва за контролиране на достъпа до споделения ресурс.
  • Задържане и изчакване е състояние, при което процесите трябва да бъдат спрени от задържане на един или множество ресурси, докато едновременно чакат един или повече други.
  • Избягването на блокиране е най-простият и най-полезен модел, при който всеки процес декларира максималния брой ресурси от всеки тип, от които може да се нуждае.
  • Алгоритъмът за избягване на блокиране ви помага да оцените динамично състоянието на разпределение на ресурсите, така че никога да не може да има ситуация на кръгово изчакване.
  • Безизходицата е безкраен процес, докато гладуването е дълго чакане, но не е безкраен процес.