Sobes.tech
Junior — Middle

Какво е взаимно блокиране на ресурси и в кои ситуации възниква в системите?

sobes.tech AI

Отговор от AI

Deadlock (задържане) е ситуация в системи с многозадачност, при която два или повече процеса (или нишки) се блокират взаимно завинаги, очаквайки освобождаването на ресурси, заети от другия.

Тя възниква, когато са изпълнени едновременно всички четири условия:

  1. Взаимно изключване — ресурс може да бъде зает само от един процес.
  2. Задържане и очакване — процес задържа един ресурс и чака друг.
  3. Невъзможност за принудително освобождаване — ресурс не може да бъде отнет от процес, докато той не го освободи доброволно.
  4. Циклично очакване — съществува цикъл от процеси, всеки от които чака ресурс, зает от следващия в цикъла.

Пример: процес A е заел ресурс 1 и чака ресурс 2, а процес B е заел ресурс 2 и чака ресурс 1 — двамата са блокирани завинаги.

В iOS и други системи, deadlock-ите често възникват поради неправилна употреба на синхронизация, например при вземане на няколко блокировки в различен ред.

За предотвратяване на deadlock-и се използват:

  • подреждане на вземането на ресурси;
  • таймаути;
  • избягване на задържане на ресурси при очакване на други;
  • използване на специализирани механизми за синхронизация.