Ce este Livelock?
Un Livelock este o situație în care o cerere pentru o blocare exclusivă este respinsă în mod repetat, întrucât multe blocuri comune suprapuse continuă să se interfereze reciproc. Procesele își schimbă în continuare starea, ceea ce le împiedică în continuare să finalizeze sarcina. Acest lucru îi împiedică în continuare să finalizeze sarcina.
În acest tutorial de sistem de operare, veți afla:
- Ce este Livelock?
- Exemple de Livelock
- Ce duce la Livelock?
- Ce este Deadlock?
- Exemplu de impas
- Ce este Înfometarea?
- Diferența dintre impas, înfometare și Livelock
Exemple de Livelock
Exemplul 1:
Un exemplu ușor de Livelock ar fi doi oameni care se întâlnesc față în față pe un coridor și amândoi se îndepărtează pentru a-l lăsa pe celălalt să treacă. Ele sfârșesc prin a se deplasa dintr-o parte în alta fără a face progrese, deoarece se mișcă în același mod în acel moment. Aici, nu se încrucișează niciodată.
Exemplul 2:
Puteți vedea în imaginea de mai sus, fiecare dintre cele două procese date are nevoie de două resurse și folosesc registrul primitor de sondare pentru a încerca să obțină blocajele necesare pentru acestea. Dacă încercarea eșuează, metoda funcționează din nou.
- Procesul A reține Y resursă
- Procesul B deține resursa X
- Procesul A necesită resursă X
- Procesul B necesită resursă Y
Presupunând că procesul A rulează mai întâi și dobândește resursa de date X, apoi procesul B rulează și dobândește resursa Y, indiferent de procesul care rulează primul, niciunul dintre ele nu progresează.
Cu toate acestea, niciunul dintre cele două procese nu este blocat. Folosesc în mod repetat resursele procesorului fără a se realiza progrese, dar opresc orice bloc de procesare.
Prin urmare, această situație nu este cea a unui blocaj, deoarece nu există un singur proces care să fie blocat, ci ne confruntăm cu situația ceva echivalent cu blocajul, care este LIVELOCK.
Ce duce la Livelock?
Livelock apare atunci când numărul total de procese permise într-un sistem specific ar trebui să fie definit de numărul total de intrări din tabelul de procese. Prin urmare, sloturile pentru tabele de proces ar trebui denumite Resurse Finite.
Ce este Deadlock?
Un blocaj este o situație care apare în sistemul de operare atunci când orice proces intră într-o stare de așteptare, deoarece un alt proces de așteptare reține resursa cerută. Blocajul este o problemă obișnuită în procesarea multiplă, în care mai multe procese împărtășesc un tip specific de resursă care se exclude reciproc, cunoscut sub numele de soft lock sau software.
Exemplu de impas
- Un exemplu din lumea reală ar fi traficul, care merge doar într-o singură direcție.
- Aici, un pod este considerat o resursă.
- Deci, atunci când se întâmplă impasul, poate fi rezolvat cu ușurință dacă o mașină face backup (Opriți resursele și reveniți).
- Este posibil să fie nevoie de o copie de siguranță a mai multor mașini dacă apare o situație de impas.
- Deci foamea este posibilă.
Ce este Înfometarea?
Înfometarea este o situație în care toate procesele cu prioritate redusă au fost blocate, iar procesele cu prioritate ridicată continuă. În orice sistem, solicitările de resurse cu prioritate ridicată / scăzută continuă să se desfășoare dinamic. Prin urmare, este necesară o anumită politică pentru a decide cine primește sprijin când.
Folosind unii algoritmi, este posibil ca unele procese să nu obțină serviciul dorit, 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 va dura mult timp pentru a reveni. Dacă un fir utilizează frecvent această metodă, alte fire care au nevoie și de acces sincronizat frecvent la același obiect vor fi deseori blocate.
Diferența dintre impas, înfometare și Livelock
- Un blocaj este o situație care apare în sistemul de operare atunci când orice proces intră într-o stare de așteptare, deoarece resursa solicitată este deținută de un alt proces de așteptare.
- Un blocaj de viteză, 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 de viteză continuă să se schimbe între ele, niciuna nu progresează.
- Deci, Livelock este un caz unic de înfometare a resurselor.
Rezumat:
- Definiție: Un Livelock este o situație în care o cerere pentru o blocare exclusivă este refuzată în mod repetat, întrucât multe blocuri comune suprapuse continuă să se interfereze reciproc.
- Livelock apare atunci când numărul total de procese permise într-un sistem specific ar trebui să fie definit de numărul total de intrări din tabelul de procese
- Un blocaj este o situație care apare în sistemul de operare atunci când orice proces intră într-o stare de așteptare, deoarece un alt proces de așteptare reține resursa cerută.
- Un exemplu din lumea 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 îndepărtează pentru a-l lăsa pe celălalt să treacă.
- Înfometarea este o situație în care toate procesele cu prioritate redusă au fost blocate, iar procesele cu prioritate ridicată continuă.