Sobes.tech
Junior — Middle

Kas yra išteklių tarpusavio blokavimas ir kokiose situacijose jis atsiranda sistemose?

sobes.tech AI

Atsakymas iš AI

Deadlock (mirtina spąstai) yra situacija daugiafunkciniuose sistemose, kai du ar daugiau procesų (arba srautų) amžinai blokuoja vienas kitą, laukdami, kol atlaisvins išteklius, kuriuos naudoja kitas.

Ji atsiranda, kai vienu metu įvykdomos visos keturios sąlygos:

  1. Abipusė išskirtinumas — išteklius gali būti užimtas tik vieno proceso vienu metu.
  2. Laikymas ir laukimas — procesas laiko vieną išteklių ir laukia kito.
  3. Neįmanoma priverstinai atlaisvinti — išteklius negali būti paimtas iš proceso, kol jis pats jo neatlaisvins.
  4. Ciklinis laukimas — egzistuoja procesų ciklas, kurių kiekvienas laukia ištekliaus, kurį naudoja kitas ciklo procesas.

Pavyzdys: procesas A užėmė išteklių 1 ir laukia ištekliaus 2, o procesas B užėmė išteklių 2 ir laukia ištekliaus 1 — abu amžinai blokuoti.

iOS ir kituose sistemose deadlockai dažnai atsiranda dėl netinkamo sinchronizacijos naudojimo, pavyzdžiui, kai keli užraktai gaunami skirtingais tvarkais.

Siekiant išvengti deadlockų, naudojama:

  • išteklių įsigijimo tvarka;
  • laukimo laiko limitai;
  • išteklių laikymo vengimas, kai laukia kiti;
  • specializuotų sinchronizacijos mechanizmų naudojimas.