Безизходица в Operating система: какво е, кръгово изчакване (примери)
⚡ Умно обобщение
Безизходица в операционна система възниква, когато набор от процеси са блокирани, защото всеки държи ресурс и чака друг, който друг процес държи, създавайки кръгова верига, в която никой процес не може да продължи.

Какво е Deadlock?
застой е ситуация, която се случва в операционната система когато даден процес влезе в състояние на изчакване, защото друг чакащ процес държи искания ресурс. Безизходицата е често срещан проблем при многопроцесорна обработка, където няколко процеса споделят специфичен тип взаимно изключващ се ресурс, известен като меко заключване или софтуерно заключване.
Когато възникне безизходица, никой от участващите процеси не може да продължи, така че засегнатата работа спира, докато операционната система не се намеси.
Пример за безизходица
- Пример от реалния свят би бил трафикът, който се движи само в една посока.
- Тук един мост се счита за ресурс.
- Така че, когато възникне безизходица, тя може да бъде разрешена, ако едната кола направи заден ход (използва ресурсите и се върне назад).
- Може да се наложи няколко автомобила да бъдат резервни, ако възникне ситуация на безизходица.
- Така че, гладуването е възможно.
Пример за безизходица
Какво е кръгово изчакване?
Един процес чака ресурс, който се държи от втори процес, който също чака ресурс, държан от трети процес и така нататък. Това продължава, докато последният процес не чака ресурс, държан от първия процес. Това създава кръгова верига.
Например, на Процес А се разпределя Ресурс Б, докато той заявява Ресурс А. По същия начин, на Процес Б се разпределя Ресурс А, докато той заявява Ресурс Б. Това създава цикличен цикъл на изчакване.
Пример за кръгово изчакване
Например, един компютър има три USB устройства и три процеса. Всеки от трите процеса държи по едно от USB устройствата. Така че, когато всеки процес поиска друго устройство, трите процеса достигат до ситуация на безизходица, тъй като всеки от тях чака освобождаването на USB устройство, докато все още се използва. Това води до кръгова верига.
Пример за кръгово изчакване
Deadlock Detection в OS
Възникване на безизходица може да бъде открито от планировчика на ресурси. Планировчикът на ресурси помага на операционната система да поддържа track от всички ресурси, разпределени на различни процеси. След като бъде открита безизходица, тя може да бъде разрешена чрез изпреварване на ресурси, връщане назад на процес или прекратяване на един или повече от безизходиците.
Предотвратяване на блокиране в OS
Важно е да се предотврати безизходица, преди тя да възникне. Системата проверява всяка транзакция, преди да бъде изпълнена, за да се увери, че тя не води до безизходица. Дори малка операция, която би могла да причини безизходица в бъдеще, никога не се допуска да бъде изпълнена.
Предотвратяването на безизходица е набор от методи, които гарантират, че поне едно от четирите необходими условия не може да бъде изпълнено.
Без предимство
Ресурс може да бъде освободен само доброволно от процеса, който го държи, след като този процес е завършил задачата си.
- Ако процес, който държи някакви ресурси, поиска друг ресурс, който не може да му бъде незабавно разпределен, тогава всички негови ресурси се освобождават.
- Предварително заетите ресурси се добавят към списъка с ресурси, за които процесът чака.
- Процесът се рестартира само когато може да си възвърне старите ресурси, както и новите, които изисква.
Взаимно изключване
Взаимното изключване е пълната форма на Mutex. Това е специален вид двоичен файл. семафор който се използва за контролиране на достъпа до споделен ресурс. Той включва механизъм за наследяване на приоритети, за да се избегнат продължителни проблеми с инверсията на приоритети и да се блокират задачите с по-висок приоритет за възможно най-кратко време.
Споделените ресурси, като например файлове само за четене, никога не водят до безизходици, но ресурси като принтери и лентови устройства се нуждаят от ексклузивен достъп от един процес.
Задръжте и изчакайте
В това състояние, процесите трябва да бъдат спрени от задържането на един или повече ресурси, докато едновременно чакат един или повече други.
Циркулярно изчакване
Този метод налага тотално подреждане на всички типове ресурси. Предотвратяването на циклично чакане изисква също така всеки процес да изисква ресурси във възходящ ред на изброяване.
Избягване на задънена улица Algorithms
По-добре е да се избегне безизходица, вместо да се предприемат действия след като тя е възникнала. Избягването изисква допълнителна информация, като например как ще се използват ресурсите. Избягването на безизходица е полезен модел, при който всеки процес декларира максималния брой ресурси от всеки тип, от които може да се нуждае.
Избягване Algorithms
Алгоритъмът за избягване на безизходици динамично оценява състоянието на разпределение на ресурсите, така че никога да не възникне ситуация на циклично чакане.
За единичен екземпляр от тип ресурс:
- Използвайте графика за разпределение на ресурсите.
- Цикъл в графа е необходим и достатъчен за безизходица.
За множество екземпляри от даден тип ресурс:
- Цикълът е необходим, но не е достатъчен за безизходица.
- Използвайте Алгоритъмът на банкера.
Разлика между гладуване и безизходица
Ето някои важни разлики между безизходицата и гладуването:
| застой | глад |
|---|---|
| Ситуацията на безизходица възниква, когато един от процесите бъде блокиран. | Гладът е ситуация, при която всички процеси с нисък приоритет се блокират, докато процесите с висок приоритет се изпълняват. |
| Безизходицата е безкраен процес. | Гладът е дълго чакане, но не е безкраен процес. |
| Всяка безизходица винаги е свързана с глад. | Всяко гладуване не е задължително да има задънена улица. |
| Безизходицата възниква поради взаимно изключване, задържане и изчакване, липса на превантивно действие и циклично изчакване, възникващи едновременно. | Това се случва поради неконтролирано приоритизиране и лошо управление на ресурсите. |
Предимства на Deadlock
Ето са предимствата на използването на метода за обработка на безизходици:
- Тази ситуация работи добре за процеси, които извършват единичен импулс от активност.
- Не е необходима превантивна мярка за безизходица.
- Това е удобен метод, когато се прилага към ресурси, чието състояние може лесно да се запази и възстанови.
- Възможно е да се приложи чрез проверки по време на компилация.
- Не е необходимо изчисление по време на изпълнение, тъй като проблемът е решен в проектирането на системата.
Недостатъци на Deadlock
Ето недостатъците на използването на метода за обработка на безизходица:
- Това забавя стартирането на процеса.
- Процесите трябва предварително да знаят бъдещите си нужди от ресурси.
- То предотвратява по-често от необходимото.
- Това забранява нарастващите заявки за ресурси.
- Това има присъщи загуби от превантивно действие.


