Livelock: Wat is, voorbeeld, verschil met Deadlock

Wat is Livelock?

A livelock is een situatie waarin een verzoek om een ​​exclusieve vergrendeling herhaaldelijk wordt afgewezen, omdat veel overlappende gedeelde vergrendelingen elkaar blijven hinderen. De processen blijven hun status veranderen, waardoor ze de taak verder niet kunnen voltooien. Dit verhindert verder dat ze de taak voltooien.

Voorbeelden van Livelock

Voorbeeld 1:

Een eenvoudig voorbeeld van Livelock is dat twee mensen elkaar persoonlijk ontmoeten in een gang, en beiden opzij gaan om de ander te laten passeren. Uiteindelijk bewegen ze heen en weer zonder enige vooruitgang te boeken, aangezien ze op dat moment dezelfde kant op bewegen. Hier kruisen ze elkaar nooit.

Voorbeeld 2:

Voorbeelden van Livelock

Je kunt in de bovenstaande afbeelding zien dat elk van de twee gegeven processen twee bronnen nodig heeft, en ze gebruiken het primitieve polling-invoerregister om te proberen de vergrendelingen te verkrijgen die daarvoor nodig zijn. Als de poging mislukt, werkt de methode opnieuw.

  1. Verwerk een vastgehouden Y-bron
  2. Proces B bevat bron X
  3. Proces A vereist X resource
  4. Proces B vereist Y-resource

Ervan uitgaande dat proces A eerst wordt uitgevoerd en gegevensbron X verwerft, en vervolgens proces B wordt uitgevoerd en bron Y verwerft, ongeacht welk proces het eerst wordt uitgevoerd, gaat geen van hen verder.

Geen van beide processen wordt echter geblokkeerd. Ze verbruiken herhaaldelijk CPU-bronnen zonder dat er enige vooruitgang wordt geboekt, maar stoppen ook elk verwerkingsblok.

Deze situatie is dus niet die van a deadlock omdat er geen enkel proces is dat wordt geblokkeerd, maar we worden geconfronteerd met een situatie die vergelijkbaar is met deadlock, dat is LIVELOCK.

Wat leidt tot Livelock?

Livelock treedt op wanneer het totale aantal toegestane processen in een specifiek systeem moet worden gedefinieerd door het totale aantal vermeldingen in de procestabel. Daarom moeten procestabelslots eindige hulpbronnen worden genoemd.

Wat is Deadlock?

Een deadlock is een situatie die zich in het besturingssysteem voordoet wanneer een proces in een wachtstatus komt omdat een ander wachtend proces de gevraagde bron vasthoudt. Deadlock is een veelvoorkomend probleem bij multi-processing waarbij verschillende processen een specifiek type elkaar uitsluitende bron delen, bekend als soft lock of software.

Voorbeeld van Deadlock

  • Een voorbeeld uit de praktijk is het verkeer, dat slechts in één richting gaat.
  • Hier wordt een brug als een hulpbron beschouwd.
  • Dus toen Deadlock gebeurt, kan dit eenvoudig worden opgelost als één auto een back-up maakt (bronnen voorrang nemen en terugdraaien).
  • Mogelijk moeten meerdere auto's een back-up maken als een deadlock situatie zich voordoet.
  • Honger is dus mogelijk.
Voorbeeld van Deadlock
Voorbeeld van Deadlock

Wat is honger?

Uithongering is een situatie waarin alle processen met lage prioriteit worden geblokkeerd en processen met hoge prioriteit doorgaan. In elk systeem blijven verzoeken om bronnen met hoge/lage prioriteit dynamisch plaatsvinden. Daarom is er beleid nodig om te bepalen wie wanneer steun krijgt.

Met behulp van sommige algoritmen krijgen sommige processen mogelijk niet de gewenste service, ook al zijn ze niet deadlockred. Uithongering treedt op wanneer sommige threads ervoor zorgen dat gedeelde bronnen gedurende een lange periode niet beschikbaar zijn.

Voorbeeld van hongersnood

Een object biedt bijvoorbeeld een gesynchroniseerde methode waarvan het waarschijnlijk lang zal duren voordat deze terugkeert. Als één thread deze methode vaak gebruikt, zullen andere threads die ook regelmatig gesynchroniseerde toegang tot hetzelfde object nodig hebben, vaak worden geblokkeerd.

Verschil tussen Deadlock, Honger en Livelock

  • Een deadlock is een situatie die zich in het besturingssysteem voordoet wanneer een proces in een wachtstatus komt omdat de gevraagde bron wordt vastgehouden door een ander wachtend proces.
  • Een livelock daarentegen is bijna vergelijkbaar met een deadlock, behalve dat de toestanden van de processen die betrokken zijn bij een livelock altijd in elkaar blijven veranderen, en geen enkele vordert.
  • Livelock is dus een uniek geval van uithongering van hulpbronnen.

Samengevat

  • Definitie: Een Livelock is een situatie waarin een verzoek om een ​​exclusieve vergrendeling herhaaldelijk wordt afgewezen, omdat veel overlappende gedeelde vergrendelingen elkaar blijven hinderen.
  • Livelock treedt op wanneer het totale aantal toegestane processen in een specifiek systeem moet worden gedefinieerd door het totale aantal vermeldingen in de procestabel
  • Een deadlock is een situatie die zich in het besturingssysteem voordoet wanneer een proces in een wachtstatus komt omdat een ander wachtend proces de gevraagde bron vasthoudt.
  • Een voorbeeld uit de praktijk is het verkeer, dat slechts in één richting gaat.
  • Een voorbeeld van Livelock zijn twee mensen die elkaar persoonlijk ontmoeten in een gang, en beiden opzij gaan om de ander te laten passeren.
  • Uithongering is een situatie waarin alle processen met lage prioriteit worden geblokkeerd en processen met hoge prioriteit doorgaan.