Sobes.tech
Junior — Middle

Ресурстардын өз ара бөгелиши эмнеге жана ал кайсы учурларда системаларда пайда болот?

sobes.tech AI

AIден жооп

Deadlock (өлүмгө учураган блокировка) — бул көп тапшырмалу системаларда, эки же андан көп процесс (же агым) дайыма бири-бирин блоктоп, бири-биринин колдонуп жаткан ресурстарын бошотконун күтүп турган абал.

Ал, бардык төрт шарт бир убакта аткарылганда пайда болот:

  1. Өз ара чыгаруу — ресурс бир процесстин гана колдоносун.
  2. Туура жана күтүү — процесс бир ресурсты кармап, башкасын күтөт.
  3. Мажбурлап бошотуу мүмкүн эмес — ресурс процесстен мажбурлап алынып, анын өзү бошотконго чейин алууга болбойт.
  4. Циклдүү күтүү — процесстердин цикли бар, ар бири кийинки процесстин кармап жаткан ресурсын күтөт.

Мисал: A процесси 1-ресурсты алган жана 2-ресурсты күтүп жатат, B процесси 2-ресурсты алган жана 1-ресурсты күтүп жатат — экиси да дайыма блоктоп турат.

iOS жана башка системаларда deadlockтар көбүнесе синхрондоштуруу туура колдонулбагандыктан пайда болот, мисалы, ар түрдүү тартипте бир нече блокировкаларды алуу.

Deadlockтарды алдын алуу үчүн:

  • ресурстарды алуу тартибин белгилөө;
  • күтүүнүн убакыт чектерин коюу;
  • башка ресурстарды күтүп жатканда ресурстарды кармап турууну болтурбоо;
  • атайын синхрондоштуруу механизмдерин колдонуу.