Livelock: Wat is, voorbeeld, verschil met deadlock
โก Slimme samenvatting
Livelock is een situatie van gelijktijdigheid waarbij processen voortdurend van status veranderen als reactie op elkaar, maar geen echte vooruitgang boeken. Ze blijven actief en verbruiken CPU-cycli zonder ooit hun taken te voltooien of geblokkeerd te raken.

Wat is Livelock?
A livelock Dit is een situatie waarbij een verzoek om een โโexclusieve vergrendeling herhaaldelijk wordt afgewezen, omdat veel verzoeken elkaar overlappen.ping Gedeelde vergrendelingen blijven elkaar in de weg zitten. De processen veranderen voortdurend van status, waardoor ze de taak niet kunnen voltooien.
Voorbeelden van Livelock
Voorbeeld 1:
Het eenvoudigste voorbeeld van Livelock is twee mensen die elkaar in een gang tegenkomen en allebei opzij gaan om de ander te laten passeren. Ze blijven heen en weer bewegen zonder vooruitgang te boeken, omdat ze steeds dezelfde kant op bewegen. In dit geval kruisen ze elkaar nooit.
Voorbeeld 2:
In de bovenstaande afbeelding heeft elk van de twee processen twee resources nodig en gebruiken ze primitieve polling om te proberen de benodigde vergrendelingen te verkrijgen. Als een poging mislukt, probeert de methode het opnieuw.
- Proces A bevat hulpbron Y
- Proces B bevat bron X
- Proces A vereist hulpbron X
- Proces B vereist hulpbron Y.
Stel dat proces A eerst wordt uitgevoerd en grondstof X verkrijgt, en vervolgens proces B wordt uitgevoerd en grondstof Y verkrijgt. Ongeacht welk proces eerst wordt uitgevoerd, geen van beide boekt verdere vooruitgang.
Geen van beide processen wordt echter geblokkeerd. Ze verbruiken herhaaldelijk CPU-bronnen zonder enige vooruitgang te boeken, maar ze stoppen nooit voor een verwerkingsblok.
Daarom is deze situatie geen impasseOmdat er geen enkel proces geblokkeerd is, hebben we te maken met een situatie die gelijkwaardig is aan een deadlock, ook wel LIVELOCK genoemd.
Wat leidt tot Livelock?
Livelock is gekoppeld aan het aantal processen dat een systeem toestaat, wat wordt bepaald door het totale aantal vermeldingen in de procestabel. Deze procestabelplaatsen worden daarom beschouwd als eindige resources. Wanneer processen herhaaldelijk proberen deze beperkte resources te bemachtigen en elkaar daarbij voortdurend de toegang ontzeggen, boekt geen enkel proces vooruitgang en raakt het systeem in een livelock.
Wat is Deadlock?
A impasse Een deadlock is een situatie die zich voordoet in een besturingssysteem wanneer een proces in een wachttoestand terechtkomt omdat een ander wachtend proces de gevraagde bron in bezit heeft. Deadlock is een veelvoorkomend probleem in multiprocessing, waar meerdere processen een specifiek type wederzijds exclusieve bron delen, bekend als een soft lock of software lock.
Voorbeeld van een deadlock
- Een voorbeeld uit de praktijk is verkeer dat slechts in รฉรฉn richting rijdt.
- Hier wordt een brug als een hulpbron beschouwd.
- Als er een impasse optreedt, kan deze eenvoudig worden opgelost als รฉรฉn auto achteruitrijdt (resources preempt) en terugdraait.
- Als er een file ontstaat, moeten er mogelijk meerdere auto's achteruitrijden.
- Daarom is hongersnood mogelijk.
Voorbeeld van een deadlock
Wat is honger?
Uithongering is een situatie waarbij processen met een lage prioriteit worden geblokkeerd terwijl processen met een hoge prioriteit wel doorgaan. In elk systeem vinden er continu dynamisch aanvragen voor resources met hoge en lage prioriteit plaats. Daarom is een beleid nodig om te bepalen wie wanneer wordt geholpen.
Bij sommige algoritmen krijgen bepaalde processen mogelijk niet de gewenste service, zelfs als er geen sprake is van een deadlock. Starvation treedt op wanneer sommige threads gedeelde resources gedurende een lange periode ontoegankelijk maken.
Voorbeeld van hongersnood
Een object biedt bijvoorbeeld een gesynchroniseerde methode aan die waarschijnlijk lang duurt om terug te keren. Als รฉรฉn thread deze methode frequent gebruikt, worden andere threads die ook frequent gesynchroniseerde toegang tot hetzelfde object nodig hebben, vaak geblokkeerd.
Verschil tussen deadlock, honger en livelock
- Een deadlock is een situatie die zich voordoet in een besturingssysteem wanneer een proces in een wachttoestand terechtkomt omdat de gevraagde bron in bezit is van een ander wachtend proces.
- Een livelock is daarentegen vrijwel gelijk aan een deadlock, met als verschil dat de toestanden van de processen die bij een livelock betrokken zijn, voortdurend veranderen als reactie op elkaar, zonder dat er vooruitgang wordt geboekt.
- Livelock is dus een uniek geval van resource-uitputting.


