Junior — Middle
Чӣ тавр мутақобилан бастани захираҳо ва дар кадом ҳолатҳо дар системаҳо рух медиҳад?
sobes.tech AI
Ҷавоб аз AI
Deadlock (өлі kilit) — бу көп тапсырмалы жүйәләрдә, ике яки аннан да күп процесслар (яки агымнар) бер-берсен мәңге блоклап торган хәл, алар бер-беренең кулланган ресурсларын бушка чыгаруны көтә.
Ул, дүрт шарт берьюлы үтәлгәндә, барлыкка килә:
- Үзара чыгару — ресурс бер вакытта бер генә процесс тарафыннан тотыла ала.
- Тотып тору һәм көтү — процесс бер ресурсны тотып тора һәм икенчесен көтә.
- Мәҗбүри бушка чыгару мөмкинлеге юк — ресурс процессдан мәжбүр итеп алынып булмый, ул үз теләге белән генә бушка чыгарыла.
- Цикллы көтү — процесслар циклы бар, һәрберсе үз чиратында тоткан ресурсны көтә.
Мәсәлән: A процессы 1-ресурсны алган һәм 2-ресурсны көтә, ә B процессы 2-ресурсны алган һәм 1-ресурсны көтә — икесе дә мәңге блокланган.
iOS һәм башка системаларда deadlockлар еш кына синхронлаштыруны дөрес кулланмавы аркасында килеп чыга, мәсәлән, төрле тәртиптә берничә блокировка алу.
Deadlockларны булдырмау өчен кулланыла:
- ресурсларны алу тәртибен билгеләү;
- көтү вакытлары лимитларын кую;
- башка ресурслар көткәндә ресурсларны тотып торудан саклану;
- махсус синхронлаштыру механизмнарын куллану.