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:
- Vzájomná výlučnosť — zdroj môže byť držaný iba jedným procesom naraz.
- Udržiavanie a čakanie — proces drží jeden zdroj a čaká na iný.
- Nemožnosť vynúteného uvoľnenia — zdroj nemôže byť odobraný procesu, kým ho sám neuvoľní.
- 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.