Sobes.tech
Junior — Middle

Чӣ тавр мутақобилан бастани захираҳо ва дар кадом ҳолатҳо дар системаҳо рух медиҳад?

sobes.tech AI

Ҷавоб аз AI

Deadlock (өлі kilit) — бу көп тапсырмалы жүйәләрдә, ике яки аннан да күп процесслар (яки агымнар) бер-берсен мәңге блоклап торган хәл, алар бер-беренең кулланган ресурсларын бушка чыгаруны көтә.

Ул, дүрт шарт берьюлы үтәлгәндә, барлыкка килә:

  1. Үзара чыгару — ресурс бер вакытта бер генә процесс тарафыннан тотыла ала.
  2. Тотып тору һәм көтү — процесс бер ресурсны тотып тора һәм икенчесен көтә.
  3. Мәҗбүри бушка чыгару мөмкинлеге юк — ресурс процессдан мәжбүр итеп алынып булмый, ул үз теләге белән генә бушка чыгарыла.
  4. Цикллы көтү — процесслар циклы бар, һәрберсе үз чиратында тоткан ресурсны көтә.

Мәсәлән: A процессы 1-ресурсны алган һәм 2-ресурсны көтә, ә B процессы 2-ресурсны алган һәм 1-ресурсны көтә — икесе дә мәңге блокланган.

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

Deadlockларны булдырмау өчен кулланыла:

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