Junior — Middle
Какво е взаимно блокиране на ресурси и в кои ситуации възниква в системите?
sobes.tech AI
Отговор от AI
Deadlock (задържане) е ситуация в системи с многозадачност, при която два или повече процеса (или нишки) се блокират взаимно завинаги, очаквайки освобождаването на ресурси, заети от другия.
Тя възниква, когато са изпълнени едновременно всички четири условия:
- Взаимно изключване — ресурс може да бъде зает само от един процес.
- Задържане и очакване — процес задържа един ресурс и чака друг.
- Невъзможност за принудително освобождаване — ресурс не може да бъде отнет от процес, докато той не го освободи доброволно.
- Циклично очакване — съществува цикъл от процеси, всеки от които чака ресурс, зает от следващия в цикъла.
Пример: процес A е заел ресурс 1 и чака ресурс 2, а процес B е заел ресурс 2 и чака ресурс 1 — двамата са блокирани завинаги.
В iOS и други системи, deadlock-ите често възникват поради неправилна употреба на синхронизация, например при вземане на няколко блокировки в различен ред.
За предотвратяване на deadlock-и се използват:
- подреждане на вземането на ресурси;
- таймаути;
- избягване на задържане на ресурси при очакване на други;
- използване на специализирани механизми за синхронизация.