Junior — Middle
Ресурстардын өз ара бөгелиши эмнеге жана ал кайсы учурларда системаларда пайда болот?
sobes.tech AI
AIден жооп
Deadlock (өлүмгө учураган блокировка) — бул көп тапшырмалу системаларда, эки же андан көп процесс (же агым) дайыма бири-бирин блоктоп, бири-биринин колдонуп жаткан ресурстарын бошотконун күтүп турган абал.
Ал, бардык төрт шарт бир убакта аткарылганда пайда болот:
- Өз ара чыгаруу — ресурс бир процесстин гана колдоносун.
- Туура жана күтүү — процесс бир ресурсты кармап, башкасын күтөт.
- Мажбурлап бошотуу мүмкүн эмес — ресурс процесстен мажбурлап алынып, анын өзү бошотконго чейин алууга болбойт.
- Циклдүү күтүү — процесстердин цикли бар, ар бири кийинки процесстин кармап жаткан ресурсын күтөт.
Мисал: A процесси 1-ресурсты алган жана 2-ресурсты күтүп жатат, B процесси 2-ресурсты алган жана 1-ресурсты күтүп жатат — экиси да дайыма блоктоп турат.
iOS жана башка системаларда deadlockтар көбүнесе синхрондоштуруу туура колдонулбагандыктан пайда болот, мисалы, ар түрдүү тартипте бир нече блокировкаларды алуу.
Deadlockтарды алдын алуу үчүн:
- ресурстарды алуу тартибин белгилөө;
- күтүүнүн убакыт чектерин коюу;
- башка ресурстарды күтүп жатканда ресурстарды кармап турууну болтурбоо;
- атайын синхрондоштуруу механизмдерин колдонуу.