Livelock: Hva er, eksempel, forskjell med deadlock
Hva er Livelock?
A livelock er en situasjon der en forespørsel om en eksklusiv lås avvises gjentatte ganger, ettersom mange overlappende delte låser fortsetter å forstyrre hverandre. Prosessene endrer stadig status, noe som hindrer dem i å fullføre oppgaven. Dette hindrer dem ytterligere i å fullføre oppgaven.
Eksempler på Livelock
Eksempel 1:
Et enkleste eksempel på Livelock vil være to personer som møtes ansikt til ansikt i en korridor, og begge flytter seg til side for å la den andre passere. De ender opp med å bevege seg fra side til side uten å gjøre noen fremskritt mens de beveger seg på samme måte på den tiden. Her krysser de aldri hverandre.
Eksempel 2:
Du kan se i bildet ovenfor at hver av de to gitte prosessene trenger to ressurser, og de bruker det primitive polling enter-registeret for å prøve å skaffe låsene som er nødvendige for dem. Hvis forsøket mislykkes, fungerer metoden igjen.
- Behandle A hold Y-ressurs
- Prosess B inneholder ressurs X
- Prosess A krever X-ressurs
- Prosess B krever Y-ressurs
Forutsatt at prosess A kjører først og henter dataressurs X og deretter prosess B kjører og henter ressurs Y, uansett hvilken prosess som kjører først, ingen av dem går videre.
Ingen av de to prosessene er imidlertid blokkert. De bruker opp CPU-ressurser gjentatte ganger uten at det blir gjort fremskritt, men stopper også noen behandlingsblokk.
Derfor er denne situasjonen ikke en vranglås fordi det ikke er en eneste prosess som er blokkert, men vi står overfor situasjonen noe som tilsvarer deadlock, som er LIVELOCK.
Hva fører til Livelock?
Livelock oppstår når det totale antallet tillatte prosesser i et spesifikt system skal defineres av det totale antallet oppføringer i prosesstabellen. Derfor bør prosesstabellplasser omtales som endelige ressurser.
Hva er Deadlock?
En deadlock er en situasjon som oppstår i OS når en prosess går inn i en ventetilstand fordi en annen venteprosess holder den etterspurte ressursen. Deadlock er et vanlig problem i multi-prosessering der flere prosesser deler en spesifikk type gjensidig utelukkende ressurs kjent som en myk lås eller programvare.
Eksempel på deadlock
- Et eksempel fra den virkelige verden vil være trafikk, som bare går i én retning.
- Her regnes en bro som en ressurs.
- Så når deadlock oppstår, kan det enkelt løses hvis én bil sikkerhetskopierer (foregripe ressurser og tilbakerulling).
- Flere biler må kanskje sikkerhetskopieres hvis det oppstår en vranglåssituasjon.
- Så sult er mulig.

Hva er sult?
Sult er en situasjon der alle lavprioriterte prosesser ble blokkert, og de høyprioriterte prosessene fortsetter. I ethvert system fortsetter forespørsler om ressurser med høy/lav prioritet å skje dynamisk. Det kreves derfor en viss politikk for å avgjøre hvem som får støtte når.
Ved å bruke noen algoritmer kan det hende at noen prosesser ikke får ønsket service selv om de ikke er fastlåst. Sult oppstår når noen tråder gjør delte ressurser utilgjengelige over en lengre periode.
Eksempel på sult
For eksempel tilbyr et objekt en synkronisert metode som sannsynligvis vil ta lang tid å returnere. Hvis en tråd bruker denne metoden ofte, vil andre tråder som også trenger hyppig synkronisert tilgang til det samme objektet ofte bli blokkert.
Forskjellen mellom Deadlock, Starvation og Livelock
- En deadlock er en situasjon som oppstår i OS når en prosess går inn i en ventetilstand fordi den etterspurte ressursen holdes av en annen venteprosess.
- En livelock, på den annen side, ligner nesten på en dødlås, bortsett fra at tilstandene til prosessene som er involvert i en livelock alltid fortsetter å endre seg til hverandre, ingen utvikler seg.
- Så, Livelock er et unikt tilfelle av ressurssult.
Sammendrag
- Definisjon: En Livelock er en situasjon der en forespørsel om en eksklusiv lås avvises gjentatte ganger, ettersom mange overlappende delte låser fortsetter å forstyrre hverandre.
- Livelock oppstår når det totale antallet tillatte prosesser i et spesifikt system skal defineres av det totale antallet oppføringer i prosesstabellen
- En deadlock er en situasjon som oppstår i OS når en prosess går inn i en ventetilstand fordi en annen venteprosess holder den etterspurte ressursen.
- Et eksempel fra den virkelige verden vil være trafikk, som bare går i én retning.
- Et eksempel på Livelock kan være to personer som møtes ansikt til ansikt i en korridor, og begge beveger seg til side for å la den andre passere.
- Sult er en situasjon der alle lavprioriterte prosesser ble blokkert, og de høyprioriterte prosessene fortsetter.

