Sobes.tech
Junior — Middle

Ce este un blocaj mutual de resurse și în ce situații apare în sisteme?

sobes.tech AI

Răspuns de la AI

Blocajul mutual (deadlock) este o situație în sistemele multitasking în care două sau mai multe procese (sau fire) se blochează reciproc pentru totdeauna, așteptând să elibereze resursele ocupate de celălalt.

Aceasta apare atunci când sunt îndeplinite simultan cele patru condiții:

  1. Excludere reciprocă — o resursă poate fi deținută doar de un proces la un moment dat.
  2. Reținere și așteptare — un proces păstrează o resursă și așteaptă alta.
  3. Imposibilitatea de a elibera forțat — o resursă nu poate fi luată de la un proces până când acesta nu o eliberează voluntar.
  4. Așteptare ciclică — există un ciclu de procese, fiecare așteptând o resursă deținută de următorul în ciclu.

Exemplu: procesul A a preluat resursa 1 și așteaptă resursa 2, în timp ce procesul B a preluat resursa 2 și așteaptă resursa 1 — ambele sunt blocate pentru totdeauna.

În iOS și alte sisteme, deadlock-urile apar adesea din cauza utilizării incorecte a sincronizării, de exemplu, la preluarea mai multor blocări în ordine diferită.

Pentru prevenirea deadlock-urilor, se utilizează:

  • ordonarea preluării resurselor;
  • timeout-uri de așteptare;
  • evitarea păstrării resurselor în timp ce se așteaptă altele;
  • utilizarea mecanismelor specializate de sincronizare.