Livelock: Wat is, voorbeeld, verschil met deadlock

Inhoudsopgave:

Anonim

Wat is Livelock?

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

In deze handleiding voor het besturingssysteem leert u:

  • Wat is Livelock?
  • Voorbeelden van Livelock
  • Wat leidt tot Livelock?
  • Wat is een deadlock?
  • Voorbeeld van Deadlock
  • Wat is verhongering?
  • Verschil tussen Deadlock, Starvation en Livelock

Voorbeelden van Livelock

Voorbeeld 1:

Een gemakkelijkste voorbeeld van Livelock zijn twee mensen die elkaar persoonlijk ontmoeten in een gang, en beiden gaan opzij om de ander te laten passeren. Ze bewegen uiteindelijk heen en weer zonder enige vooruitgang te boeken, omdat ze op dat moment op dezelfde manier bewegen. Hier kruisen ze elkaar nooit.

Voorbeeld 2:

U 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 voor hen nodig zijn. Als de poging mislukt, werkt de methode opnieuw.

  1. Proces A houdt Y-resource vast
  2. Proces B bevat bron X
  3. Proces A vereist X-resource
  4. Proces B vereist Y-resource

Aangenomen 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 is echter geblokkeerd. Ze gebruiken CPU-bronnen herhaaldelijk zonder enige vooruitgang te boeken, maar stoppen ook elk verwerkingsblok.

Daarom is deze situatie niet die van een impasse, omdat er geen enkel proces is dat wordt geblokkeerd, maar we worden geconfronteerd met de situatie die overeenkomt met een impasse, namelijk 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 procestabel-slots worden aangeduid als Finite Resources.

Wat is een deadlock?

Een impasse is een situatie die optreedt in OS wanneer een proces in een wachttoestand komt omdat een ander wachtend proces de gevraagde bron vasthoudt. Deadlock is een veelvoorkomend probleem bij multi-processing waarbij verschillende processen een specifiek type wederzijds exclusieve bron delen, bekend als een soft lock of software.

Voorbeeld van Deadlock

  • Een voorbeeld uit de echte wereld is het verkeer, dat maar in één richting gaat.
  • Hier wordt een brug als een hulpmiddel beschouwd.
  • Dus wanneer een deadlock optreedt, kan dit gemakkelijk worden opgelost als een auto een back-up maakt (middelen voorrang krijgen en terugdraaien).
  • Er moet mogelijk een back-up van meerdere auto's worden gemaakt als zich een impasse voordoet.
  • Dus uithongering is mogelijk.
Voorbeeld van een impasse

Wat is verhongering?

Uithongering is een situatie waarin alle processen met lage prioriteit werden geblokkeerd en de processen met hoge prioriteit doorgaan. In elk systeem blijven verzoeken om bronnen met hoge / lage prioriteit dynamisch plaatsvinden. Daarbij is enig beleid vereist om te beslissen wie wanneer ondersteuning krijgt.

Met behulp van sommige algoritmen krijgen sommige processen mogelijk niet de gewenste service, ook al zitten ze niet vast. Verhongering treedt op wanneer sommige threads gedeelde bronnen gedurende een lange tijd niet beschikbaar maken.

Voorbeeld van uithongering:

Een object biedt bijvoorbeeld een gesynchroniseerde methode waarvan de terugkeer waarschijnlijk lang zal duren. Als een thread deze methode vaak gebruikt, worden andere threads die ook regelmatig gesynchroniseerde toegang tot hetzelfde object nodig hebben, vaak geblokkeerd.

Verschil tussen Deadlock, Starvation en Livelock

  • Een impasse is een situatie die optreedt in OS wanneer een proces in een wachttoestand komt omdat de gevraagde bron wordt vastgehouden door een ander wachtproces.
  • Een livelock, aan de andere kant, lijkt bijna op een impasse, behalve dat de toestanden van de processen die betrokken zijn bij een livelock altijd in elkaar blijven veranderen, geen vooruitgang.
  • Livelock is dus een uniek geval van uithongering van hulpbronnen.

Overzicht:

  • Definitie: Een Livelock is een situatie waarin een verzoek om een ​​exclusieve vergrendeling herhaaldelijk wordt geweigerd, 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 impasse is een situatie die optreedt in OS wanneer een proces in een wachttoestand komt omdat een ander wachtend proces de gevraagde bron vasthoudt.
  • Een voorbeeld uit de echte wereld is het verkeer, dat maar in één richting gaat.
  • Een voorbeeld van Livelock zijn twee mensen die elkaar persoonlijk ontmoeten in een gang, en beiden gaan opzij om de ander te laten passeren.
  • Uithongering is een situatie waarin alle processen met lage prioriteit werden geblokkeerd en de processen met hoge prioriteit doorgaan.