Livelock: Ce este, exemplu, diferența cu Deadlock
Ce este Livelock?
A livelock este o situație în care o solicitare pentru o blocare exclusivă este refuzată în mod repetat, deoarece multe blocaje partajate care se suprapun continuă să interfereze reciproc. Procesele continuă să își schimbe starea, ceea ce îi împiedică și mai mult să îndeplinească sarcina. Acest lucru îi împiedică și mai mult să îndeplinească sarcina.
Exemple de Livelock
Exemplu 1:
Un exemplu cel mai simplu de Livelock ar fi doi oameni care se întâlnesc față în față pe un coridor și amândoi se dau deoparte pentru a-l lăsa pe celălalt să treacă. Ei ajung să se miște dintr-o parte în alta fără a face niciun progres, deoarece se mișcă în același mod în acel moment. Aici, nu se încrucișează niciodată.
Exemplu 2:
Puteți vedea în imaginea de mai sus, fiecare dintre cele două procese date are nevoie de două resurse și folosesc registrul de intrare de sondaj primitiv pentru a încerca să obțină blocajele necesare pentru ele. Dacă încercarea eșuează, metoda funcționează din nou.
- Procesul A reține resursa Y
- Procesul B deține resursa X
- Procesul A necesită resurse X
- Procesul B necesită resurse Y
Presupunând că procesul A rulează primul și achiziționează resursa de date X și apoi procesul B rulează și achiziționează resursa Y, indiferent de proces care rulează primul, niciunul dintre ele nu progresează în continuare.
Cu toate acestea, niciunul dintre cele două procese nu este blocat. Ei folosesc resursele procesorului în mod repetat, fără progres, dar opresc și orice bloc de procesare.
Prin urmare, această situație nu este aceea a unui impas pentru că nu există un singur proces care să fie blocat, dar ne confruntăm cu situația cu ceva echivalent cu impas, care este LIVELOCK.
Ce duce la Livelock?
Livelock apare atunci când numărul total de procese permise într-un sistem specific ar trebui definit de numărul total de intrări din tabelul de procese. Prin urmare, sloturile de tabel de proces ar trebui să fie denumite Resurse Finite.
Ce este Deadlock?
Un blocaj este o situație care apare în sistemul de operare când orice proces intră într-o stare de așteptare, deoarece un alt proces de așteptare deține resursa cerută. Blocarea este o problemă comună în procesarea multiplă, în care mai multe procese împărtășesc un anumit tip de resursă care se exclud reciproc, cunoscut sub numele de blocare soft sau software.
Exemplu de blocaj
- Un exemplu real ar fi traficul, care merge doar într-o singură direcție.
- Aici, un pod este considerat o resursă.
- Deci, atunci când are loc Deadlock, poate fi rezolvat cu ușurință dacă o mașină face backup (Preempt resurse și rollback).
- Este posibil ca mai multe mașini să fie nevoite să facă backup dacă apare o situație de blocaj.
- Deci foametea este posibilă.

Ce este foamea?
Înfometarea este o situație în care toate procesele cu prioritate scăzută au fost blocate, iar procesele cu prioritate înaltă continuă. În orice sistem, solicitările de resurse cu prioritate mare/joasă continuă să apară dinamic. Prin urmare, este necesară o anumită politică pentru a decide cine primește sprijin când.
Folosind anumiți algoritmi, este posibil ca unele procese să nu beneficieze de serviciile dorite, chiar dacă nu sunt blocate. Înfometarea apare atunci când unele fire fac resursele partajate indisponibile pentru o perioadă lungă de timp.
Exemplu de foame
De exemplu, un obiect oferă o metodă sincronizată care probabil că va dura mult timp pentru a reveni. Dacă un fir de execuție folosește frecvent această metodă, alte fire care au nevoie de acces frecvent sincronizat la același obiect vor fi adesea blocate.
Diferența dintre Deadlock, Starvation și Livelock
- Un blocaj este o situație care apare în sistemul de operare când orice proces intră într-o stare de așteptare, deoarece resursa cerută este deținută de un alt proces de așteptare.
- Un blocaj, pe de altă parte, este aproape asemănător cu un blocaj, cu excepția faptului că stările proceselor care sunt implicate într-un blocaj continuă să se schimbe între ele, niciunul nu progresează.
- Deci, Livelock este un caz unic de lipsă de resurse.
Rezumat
- Definiție: un Livelock este o situație în care o cerere pentru o blocare exclusivă este refuzată în mod repetat, deoarece multe blocaje partajate care se suprapun continuă să interfereze reciproc.
- Livelock apare atunci când numărul total de procese permise într-un sistem specific ar trebui definit de numărul total de intrări din tabelul de procese
- Un blocaj este o situație care apare în sistemul de operare când orice proces intră într-o stare de așteptare, deoarece un alt proces de așteptare deține resursa cerută.
- Un exemplu real ar fi traficul, care merge doar într-o singură direcție.
- Un exemplu de Livelock ar fi doi oameni care se întâlnesc față în față pe un coridor și amândoi se dau deoparte pentru a-l lăsa pe celălalt să treacă.
- Înfometarea este o situație în care toate procesele cu prioritate scăzută au fost blocate, iar procesele cu prioritate înaltă continuă.

