Doodlopende weg Operating-systeem: wat is, circulair wachten (voorbeelden)
Wat is Deadlock?
impasse is een situatie die zich voordoet in OS wanneer een proces een wachtstatus ingaat omdat een ander wachtend proces de gevraagde resource vasthoudt. Deadlock is een veelvoorkomend probleem bij multi-processing waarbij meerdere processen een specifiek type wederzijds exclusieve resource delen, bekend als een soft lock of software.
Voorbeeld van een deadlock
- Een voorbeeld uit de praktijk is het verkeer, dat slechts in één richting gaat.
- Hier wordt een brug als een hulpbron beschouwd.
- Wanneer er een deadlock optreedt, kan dit eenvoudig worden opgelost door een auto achteruit te laten rijden (voorkom hulpbronnen en rol terug).
- Als er een file ontstaat, moeten er mogelijk meerdere auto's achteruitrijden.
- Honger is dus mogelijk.

Wat is Circulair wachten?
Het ene proces wacht op de hulpbron die wordt vastgehouden door het tweede proces, dat ook wacht op de hulpbron die wordt vastgehouden door het derde proces enz. Dit gaat door totdat het laatste proces wacht op een hulpbron die wordt vastgehouden door het eerste proces. Hierdoor ontstaat een circulaire keten.
Aan proces A wordt bijvoorbeeld bron B toegewezen terwijl het bron A aanvraagt. Op dezelfde manier krijgt proces B bron A toegewezen en vraagt het bron B aan. Hierdoor ontstaat een cirkelvormige wachtlus.
Voorbeeld van circulair wachten
Bijvoorbeeld, een computer heeft drie USB-drives en drie processen. Elk van de drie processen kan een van de USB-drives vasthouden. Dus wanneer elk proces een andere drive aanvraagt, zullen de drie processen in een deadlock-situatie terechtkomen, omdat elk proces wacht tot de USB-drive die op dat moment in gebruik is, wordt vrijgegeven. Dit zal resulteren in een circulaire keten.

Deadlockdetectie in besturingssysteem
Een deadlock-gebeurtenis kan worden gedetecteerd door de resource scheduler. Een resource scheduler helpt OS om alle resources bij te houden die zijn toegewezen aan verschillende processen. Dus, wanneer een deadlock wordt gedetecteerd, kan deze worden opgelost met behulp van de onderstaande methoden:
Deadlockpreventie in besturingssystemen
Het is belangrijk om een deadlock te voorkomen voordat deze kan optreden. Het systeem controleert elke transactie voordat deze wordt uitgevoerd om er zeker van te zijn dat deze niet leidt tot deadlock-situaties. Zodanig dat zelfs een kleine wijziging die optreedt, een deadlock veroorzaakt die in de toekomst kan leiden tot deadlock, het proces ook nooit toestaat om uit te voeren.
Het is een reeks methoden om ervoor te zorgen dat ten minste één van de voorwaarden niet kan gelden.
Geen preventieve actie
Geen voorrang – Een hulpbron kan alleen vrijwillig worden vrijgegeven door het proces dat de hulpbron vasthoudt, nadat dat proces zijn taak heeft voltooid
- Als een proces dat bepaalde bronnen vasthoudt, om een andere bron vraagt die er niet onmiddellijk aan kan worden toegewezen, zullen in die situatie alle bronnen worden vrijgegeven.
- Voor beslag genomen bronnen is de lijst met bronnen nodig voor een wachtend proces.
- Het proces wordt alleen opnieuw gestart als het zijn oude hulpbron en een nieuwe hulpbron kan terugkrijgen waar het om vraagt.
- Als het proces om een andere bron vraagt, wanneer deze beschikbaar is, dan is deze aan het aanvragende proces gegeven.
- Als het wordt vastgehouden door een ander proces dat op een andere bron wacht, geven we het vrij en geven we het aan het aanvragende proces.
Wederzijdse uitsluiting
Wederzijdse uitsluiting is een volledige vorm van Mutex. Het is een speciaal type binaire semafoor dat wordt gebruikt voor het controleren van de toegang tot de gedeelde bron. Het omvat een mechanisme voor prioriteitsovererving om uitgebreide problemen met prioriteitsinversie te voorkomen. Hiermee kunnen huidige taken met een hogere prioriteit zo kort mogelijk in de geblokkeerde status worden gehouden.
Gedeelde bronnen, zoals alleen-lezenbestanden, leiden nooit tot een deadlock. Bronnen, zoals printers en tape-stations, hebben echter exclusieve toegang nodig van één enkel proces.
Vasthouden en wachten
In deze situatie moet worden voorkomen dat processen één of meerdere bronnen vasthouden terwijl ze tegelijkertijd op één of meer andere bronnen wachten.
Circulair wachten
Het legt een totale ordening op van alle soorten hulpbronnen. Circulair wachten vereist ook dat elk proces hulpbronnen aanvraagt in oplopende volgorde van opsomming.
Impasse vermijden Algorithms
Het is beter om een deadlock te vermijden in plaats van actie te ondernemen nadat de deadlock is opgetreden. Er is aanvullende informatie nodig, zoals hoe resources moeten worden gebruikt. Deadlock-vermijding is het eenvoudigste en meest bruikbare model waarbij elk proces het maximale aantal resources van elk type declareert dat het nodig kan hebben.
Vermijding Algorithms
Met het deadlock-avoidance-algoritme kunt u de status van de toewijzing van middelen dynamisch beoordelen, zodat er nooit een cirkelvormige wachtsituatie ontstaat.
Eén exemplaar van een resourcetype.
- Gebruik een resource-allocatiegrafiek
- Er zijn cycli nodig die voldoende zijn voor Deadlock
Meerdere exemplaren van een resourcetype.
- Cycli zijn noodzakelijk, maar nooit voldoende voor Deadlock.
- Gebruikt de het algoritme van de bankier
Verschil tussen hongersnood en impasse
Hier zijn enkele belangrijke verschillen tussen Deadlock en uithongering:
impasse | uithongering |
---|---|
De deadlock-situatie ontstaat wanneer een van de processen geblokkeerd raakt. | Uithongering is een situatie waarin alle processen met lage prioriteit worden geblokkeerd en processen met hoge prioriteit worden uitgevoerd. |
Deadlock is een oneindig proces. | Verhongering is een lang wachten, maar geen oneindig proces. |
In elke Deadlock is er altijd sprake van hongersnood. | Niet elke hongersnood kent noodzakelijkerwijs een impasse. |
Deadlock vindt plaats dan Mutual exclusion, hold en wait. Hierbij vinden preemption en circular wait niet gelijktijdig plaats. | Het gebeurt als gevolg van ongecontroleerd prioriteits- en resourcebeheer. |
Voordelen van Deadlock
Hier zijn de voor- en nadelen van het gebruik van de Deadlock-methode
- Deze situatie werkt goed voor processen die een enkele uitbarsting van activiteit uitvoeren
- Er is geen preëmptie nodig voor Deadlock.
- Handige methode wanneer toegepast op bronnen waarvan de staat gemakkelijk kan worden opgeslagen en hersteld
- Mogelijk om af te dwingen via controles tijdens het compileren
- Vereist geen runtimeberekening omdat het probleem is opgelost in het systeemontwerp
Nadelen van Deadlock
Hier zijn de voor- en nadelen van het gebruik van de deadlock-methode
- Vertraagt de start van het proces
- Processen moeten de toekomstige behoefte aan hulpbronnen kennen
- Gaat vaker voor dan nodig is
- Staat incrementele resourceaanvragen niet toe
- Inherente voorkoopverliezen.
Samenvatting
- Deadlock Definitie: Het is een situatie die zich voordoet in OS wanneer een proces in een wachttoestand komt omdat een ander wachtend proces de gevraagde bron vasthoudt
- Circulair wachten vindt plaats wanneer een proces wacht op de hulpbron die wordt vastgehouden door het tweede proces, dat ook wacht op de hulpbron die wordt vastgehouden door het derde proces, enz.
- Een deadlock kan door de resourceplanner worden gedetecteerd.
- Het is belangrijk om te voorkomen dat er een impasse ontstaat.
- Een hulpbron kan alleen vrijwillig worden vrijgegeven door het proces dat de hulpbron vasthoudt, nadat dat proces zijn taak heeft voltooid.
- Wederzijdse uitsluiting is een volledige vorm van Mutex. Het is een speciaal type binair getal seinpaal die werd gebruikt voor het controleren van de toegang tot de gedeelde bron.
- Hold and wait is een toestand waarin processen moeten worden gestopt met het vasthouden van één of meerdere bronnen terwijl ze tegelijkertijd wachten op één of meer andere bronnen.
- Het vermijden van deadlocks is het eenvoudigste en meest bruikbare model, waarbij elk proces het maximale aantal benodigde bronnen van elk type declareert.
- Met het deadlock-avoidance-algoritme kunt u de status van de toewijzing van middelen dynamisch beoordelen, zodat er nooit een cirkelvormige wachtsituatie ontstaat.
- Een impasse is een oneindig proces, terwijl verhongering een langdurig wachten is, maar geen oneindig proces.