Sobes.tech
Junior — Middle

Čo je vzájomné blokovanie zdrojov a v akých situáciách sa v systémoch vyskytuje?

sobes.tech AI

Odpoveď od AI

Zamrznutie (deadlock) je situácia v systémoch s viacerými úlohami, keď dva alebo viac procesov (alebo vlákien) navždy blokujú jeden druhého, čakajúc na uvoľnenie zdrojov, ktoré používajú.

Vzniká, keď sú súčasne splnené všetky štyri podmienky:

  1. Vzájomná výlučnosť — zdroj môže byť držaný iba jedným procesom naraz.
  2. Udržiavanie a čakanie — proces drží jeden zdroj a čaká na iný.
  3. Nemožnosť vynúteného uvoľnenia — zdroj nemôže byť odobraný procesu, kým ho sám neuvoľní.
  4. Cyklické čakanie — existuje cyklus procesov, z ktorých každý čaká na zdroj, ktorý drží nasledujúci v cykle.

Príklad: proces A získal zdroj 1 a čaká na zdroj 2, zatiaľ čo proces B získal zdroj 2 a čaká na zdroj 1 — obaja sú navždy zablokovaní.

V iOS a iných systémoch sa deadlocky často vyskytujú kvôli nesprávnemu použitiu synchronizácie, napríklad pri získavaní viacerých zámkov v rôznom poradí.

Na prevenciu deadlockov sa používajú:

  • usporiadanie získavania zdrojov;
  • časové limity čakania;
  • vyhýbanie sa držaniu zdrojov počas čakania na iné;
  • použitie špecializovaných mechanizmov synchronizácie.