Cunoștințe, prelegere, terminații

Detectarea blocajelor

Detectarea blocajelor se reduce la stabilirea situației de blocare și identificarea proceselor implicate în aceasta. În acest scop, prezența așteptării ciclice este verificată în cazurile în care apar primele trei condiții ale impasului. Metodele de detectare utilizează în mod activ grafice de alocare a resurselor.







Să luăm în considerare situația modelului.

Întrebarea este dacă această situație este un impas. și dacă da, care sunt procesele implicate în acest proces. Pentru a răspunde la această întrebare, puteți construi un grafic de resurse. așa cum se arată în Fig. 7.3. Se poate observa din figura că există un ciclu care simulează starea așteptărilor circulare și că procesele P2, P3, P5. și poate că alții se află într-o situație mortală.


Fig. 7.3. Graficul de resurse

Este vizibil ușor de detectat prezența unui sfârșit mort. dar avem nevoie și de algoritmi formali implementați pe computer.

Recuperare după blocări

Găsirea unui punct mort. este posibil să se deducă din ea un sistem care încalcă una dintre condițiile pentru existența unui capăt mort. În acest caz, este posibil ca mai multe procese să piardă unele sau toate rezultatele lucrărilor efectuate.

Complexitatea recuperării se datorează mai multor factori.

  • În majoritatea sistemelor nu există mijloace eficiente pentru suspendarea procesului, retragerea acestuia din sistem și reluarea acestuia mai târziu de la locul unde acesta a fost oprit.
  • Chiar dacă există astfel de mijloace, atunci utilizarea acestora necesită cheltuieli și atenție ale operatorului.
  • Recuperarea după un blocaj poate necesita eforturi considerabile.






Cea mai simplă și cea mai comună modalitate de a elimina un sfârșit mort este de a finaliza unul sau mai multe procese pentru a-și folosi ulterior resursele. Apoi, în caz de succes, pot fi efectuate procesele rămase. Dacă acest lucru nu vă ajută, puteți elimina mai multe procese. După fiecare lichidare, algoritmul de detectare a blocării trebuie să fie rulat.

Dacă este posibil, este mai bine să eliminați procesul care poate fi returnat la început fără a se deteriora (astfel de procese se numesc procese idempotent). Un exemplu al unui astfel de proces este compilarea. Pe de altă parte, un proces care modifică conținutul unei baze de date nu poate fi întotdeauna reluat corect.

În unele cazuri, puteți să preluați temporar o resursă de la proprietarul actual și să îl transferați într-un alt proces. Abilitatea de a lua o resursă dintr-un proces, dă-i un alt proces și apoi, fără a aduce atingere returnării, depinde foarte mult de natura resurselor. O astfel de restaurare este adesea dificilă, dacă nu chiar imposibilă.

Într-o serie de sisteme, instrumentele de rulare și repornire sau repornire de la punctul de control sunt implementate (salvând starea sistemului la un moment dat). Dacă proiectanții de sisteme știu că este probabil un impas, pot organiza periodic puncte de control pentru procese. Uneori se întâmplă cu dezvoltatorii programelor de aplicații.

Când se detectează un blocaj, este clar care sunt resursele implicate în ciclul de așteptare. Pentru a implementa restaurarea, procesul care deține o astfel de resursă. Ar trebui să fie aruncată înainte de a cere această resursă.

concluzie

Apariția blocajelor este o problemă potențială pentru orice sistem de operare. Ele apar atunci când există un grup de procese, fiecare încercând să obțină acces exclusiv la anumite resurse și cereri de resurse. aparținând unui alt proces. În final, toți se află într-o stare de așteptare infinită.

Cu capături moarte puteți lupta, le puteți detecta, puteți evita și restaura sistemul după blocări. Cu toate acestea, prețul acestor acțiuni este ridicat, iar eforturile corespunzătoare ar trebui depuse numai în sisteme în care ignorarea impasurilor conduce la consecințe dezastruoase.







Articole similare

Trimiteți-le prietenilor: