Livelock: Što je, primjer, razlika s Deadlockom

Što je Livelock?

A livelock je situacija u kojoj se zahtjev za ekskluzivnim zaključavanjem opetovano odbija, budući da mnoga preklapajuća dijeljena zaključavanja nastavljaju ometati jedno drugo. Procesi stalno mijenjaju svoj status, što ih dodatno onemogućuje da dovrše zadatak. To ih dodatno sprječava da dovrše zadatak.

Primjeri Livelocka

Primjer 1:

Najlakši primjer Livelocka bi bilo dvoje ljudi koji se sretnu licem u lice u hodniku, i oboje se pomaknu u stranu kako bi pustili drugoga da prođe. Na kraju se pomiču s jedne strane na drugu bez ikakvog napretka jer se u to vrijeme kreću istim putem. Ovdje se nikad ne križaju.

Primjer 2:

Primjeri Livelocka

Možete vidjeti na gornjoj slici, svaki od dva navedena procesa treba dva resursa, a oni koriste primitivni polling enter registar kako bi pokušali nabaviti brave koje su im potrebne. Ako pokušaj ne uspije, metoda ponovno radi.

  1. Proces A drži Y resurs
  2. Proces B drži resurs X
  3. Proces A zahtijeva X resurs
  4. Proces B zahtijeva Y resurs

Pod pretpostavkom da se proces A prvo pokrene i stekne resurs podataka X, a zatim se proces B pokrene i stekne resurs Y, bez obzira koji se proces prvi pokrene, nijedan od njih ne napreduje dalje.

Međutim, niti jedan od dva procesa nije blokiran. Oni opetovano troše CPU resurse bez ikakvog napretka, ali također zaustavljaju svaki blok obrade.

Stoga ova situacija nije situacija a zastoj jer ne postoji niti jedan proces koji je blokiran, ali se suočavamo sa situacijom koja je ekvivalentna mrtvom zastoju, a to je LIVELOCK.

Što dovodi do Livelock-a?

Livelock se događa kada ukupan broj dopuštenih procesa u određenom sustavu treba definirati ukupnim brojem unosa u tablici procesa. Stoga se utori tablice procesa trebaju nazivati ​​konačnim resursima.

Što je Deadlock?

Zastoj je situacija koja se događa u OS-u kada bilo koji proces uđe u stanje čekanja jer drugi proces na čekanju drži traženi resurs. Zastoj je čest problem u višestrukoj obradi gdje nekoliko procesa dijeli određenu vrstu međusobno isključivih resursa poznatih kao meko zaključavanje ili softver.

Primjer zastoja

  • Primjer iz stvarnog svijeta bio bi promet koji se odvija samo u jednom smjeru.
  • Ovdje se most smatra resursom.
  • Dakle, kada dođe do zastoja, može se lako riješiti ako se jedan automobil vrati (Preempt resursi i vraćanje).
  • Nekoliko automobila će možda morati biti rezervno u slučaju zastoja.
  • Dakle, gladovanje je moguće.
Primjer zastoja
Primjer zastoja

Što je izgladnjivanje?

Izgladnjivanje je situacija u kojoj su svi procesi niskog prioriteta blokirani, a procesi visokog prioriteta se nastavljaju. U svakom sustavu, zahtjevi za resursima visokog/niskog prioriteta nastavljaju se dinamički događati. Stoga je potrebna neka politika koja odlučuje tko će kada dobiti potporu.

Koristeći neke algoritme, neki procesi možda neće dobiti željenu uslugu iako nisu u zastoju. Do izgladnjivanja dolazi kada neke niti učine dijeljene resurse nedostupnima na dulje vrijeme.

Primjer gladovanja

Na primjer, objekt nudi sinkroniziranu metodu kojoj će vjerojatno trebati dugo vremena da se vrati. Ako jedna nit često koristi ovu metodu, druge niti koje također trebaju čest sinkronizirani pristup istom objektu često će biti blokirane.

Razlika između slijepe blokade, izgladnjivanja i žive blokade

  • Zastoj je situacija koja se događa u OS-u kada bilo koji proces uđe u stanje čekanja jer zahtijevani resurs drži drugi proces na čekanju.
  • Livelock je, s druge strane, gotovo sličan mrtvoj petlji, osim što se stanja procesa koji su uključeni u livelock uvijek mijenjaju jedno u drugo, niti jedno ne napreduje.
  • Dakle, Livelock je jedinstven slučaj gladovanja resursa.

Rezime

  • Definicija: Livelock je situacija u kojoj se zahtjev za ekskluzivnim zaključavanjem opetovano odbija, jer mnoga preklapajuća dijeljena zaključavanja nastavljaju ometati jedno drugo.
  • Livelock se događa kada ukupan broj dopuštenih procesa u određenom sustavu treba definirati ukupnim brojem unosa u tablici procesa
  • Zastoj je situacija koja se događa u OS-u kada bilo koji proces uđe u stanje čekanja jer drugi proces na čekanju drži traženi resurs.
  • Primjer iz stvarnog svijeta bio bi promet koji se odvija samo u jednom smjeru.
  • Primjer Livelocka bi bilo dvoje ljudi koji se sretnu licem u lice u hodniku, i oboje se pomaknu u stranu kako bi pustili drugoga da prođe.
  • Izgladnjivanje je situacija u kojoj su svi procesi niskog prioriteta blokirani, a procesi visokog prioriteta se nastavljaju.

Sažmite ovu objavu uz: