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:

Eksempler pรฅ Livelock

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.

  1. Behandle A hold Y-ressurs
  2. Prosess B inneholder ressurs X
  3. Prosess A krever X-ressurs
  4. 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.
Eksempel pรฅ deadlock
Eksempel pรฅ deadlock

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.

Oppsummer dette innlegget med: