Livelock: Hvad er, eksempel, forskel med deadlock
Hvad er Livelock?
A livelock er en situation, hvor en anmodning om en eksklusiv lås afvises gentagne gange, da mange overlappende delte låse bliver ved med at forstyrre hinanden. Processerne bliver ved med at ændre deres status, hvilket yderligere forhindrer dem i at udføre opgaven. Dette forhindrer dem yderligere i at udføre opgaven.
Eksempler på Livelock
Eksempel 1:
Et nemmeste eksempel på Livelock ville være to mennesker, der mødes ansigt til ansigt i en korridor, og begge flytter sig til side for at lade den anden passere. De ender med at bevæge sig fra side til side uden at gøre fremskridt, da de bevæger sig på samme måde på det tidspunkt. Her krydser de aldrig hinanden.
Eksempel 2:
Du kan se på ovenstående billede, at hver af de to givne processer har brug for to ressourcer, og de bruger det primitive polling enter-register til at forsøge at erhverve de låse, der er nødvendige for dem. Hvis forsøget mislykkes, virker metoden igen.
- Behandle A hold Y-ressource
- Proces B rummer ressource X
- Proces A kræver X-ressource
- Proces B kræver Y-ressource
Hvis det antages, at proces A kører først og anskaffer dataressource X, og derefter kører proces B og anskaffer ressource Y, uanset hvilken proces der kører først, fortsætter ingen af dem.
Ingen af de to processer er dog blokeret. De bruger CPU-ressourcer gentagne gange, uden at der sker fremskridt, men stopper også enhver behandlingsblok.
Derfor er denne situation ikke en situation dødvande fordi der ikke er en eneste proces, der er blokeret, men vi står over for situationen noget, der svarer til deadlock, som er LIVELOCK.
Hvad fører til Livelock?
Livelock opstår, når det samlede antal tilladte processer i et specifikt system skal defineres af det samlede antal poster i procestabellen. Derfor bør procestabelslots omtales som Finite Resources.
Hvad er Deadlock?
En deadlock er en situation, der opstår i OS, når en proces går ind i en ventetilstand, fordi en anden venteproces holder den efterspurgte ressource. Deadlock er et almindeligt problem i multi-processing, hvor flere processer deler en bestemt type gensidigt eksklusive ressource kendt som en blød lås eller software.
Eksempel på dødvande
- Et eksempel fra den virkelige verden ville være trafik, som kun går i én retning.
- Her betragtes en bro som en ressource.
- Så når deadlock opstår, kan det nemt løses, hvis én bil bakker (foregribe ressourcer og tilbagerulning).
- Flere biler skal muligvis bakkes op, hvis der opstår dødvande.
- Så sult er muligt.
Hvad er sult?
Sult er en situation, hvor alle de lavprioriterede processer blev blokeret, og de højprioriterede processer fortsætter. I ethvert system bliver anmodninger om ressourcer med høj/lav prioritet ved med at ske dynamisk. Der kræves derfor en vis politik for at afgøre, hvem der får støtte hvornår.
Ved at bruge nogle algoritmer får nogle processer muligvis ikke den ønskede service, selvom de ikke er fastlåst. Sult opstår, når nogle tråde gør delte ressourcer utilgængelige i en længere periode.
Eksempel på sult
For eksempel tilbyder et objekt en synkroniseret metode, som sandsynligvis vil tage lang tid at vende tilbage. Hvis en tråd bruger denne metode ofte, vil andre tråde, der også har brug for hyppig synkroniseret adgang til det samme objekt, ofte blive blokeret.
Forskellen mellem Deadlock, Starvation og Livelock
- En dødvande er en situation, der opstår i OS, når en proces går ind i en ventetilstand, fordi den efterspurgte ressource holdes af en anden venteproces.
- En livelock, på den anden side, ligner næsten et dødvande, bortset fra at tilstandene i de processer, der er involveret i en livelock, altid bliver ved med at skifte til hinanden, ingen udvikler sig.
- Så Livelock er et unikt tilfælde af ressourcesult.
Resumé
- Definition: En Livelock er en situation, hvor en anmodning om en eksklusiv lås afvises gentagne gange, da mange overlappende delte låse bliver ved med at forstyrre hinanden.
- Livelock opstår, når det samlede antal tilladte processer i et specifikt system skal defineres af det samlede antal poster i procestabellen
- En dødvande er en situation, der opstår i OS, når en proces går ind i en ventetilstand, fordi en anden venteproces holder den efterspurgte ressource.
- Et eksempel fra den virkelige verden ville være trafik, som kun går i én retning.
- Et eksempel på Livelock ville være to personer, der mødes ansigt til ansigt i en korridor, og begge flytter sig til side for at lade den anden passere.
- Sult er en situation, hvor alle de lavprioriterede processer blev blokeret, og de højprioriterede processer fortsætter.