Sobes.tech
Junior — Middle

Resurslarning o'zaro to'qnashuvi nima va u qaysi holatlarda tizimlarda yuzaga keladi?

sobes.tech AI

AIdan javob

Deadlock (o'lim) — bu ko'p vazifali tizimlarda, ikki yoki undan ortiq jarayonlar (yoki oqimlar) doimiy ravishda bir-birini blokirovka qiladigan holat, ular bir-birining foydalanayotgan resurslarini bo'shatishni kutayotgan holat.

U quyidagi to'rt shartlar bir vaqtning o'zida bajarilganda yuzaga keladi:

  1. O'zaro chiqarish — resurs faqat bitta jarayon tomonidan egallanishi mumkin.
  2. Ushlab turish va kutish — jarayon bir resursni ushlab turadi va boshqasini kutadi.
  3. Majburiy bo'shatish mumkin emas — resurs jarayondan majburan olib tashlanmaydi, u faqat o'z xohishi bilan bo'shatiladi.
  4. Tsiklik kutish — jarayonlar tsikli mavjud bo'lib, har biri keyingi jarayon tomonidan egallangan resursni kutmoqda.

Misol uchun: A jarayoni 1-resursni egallagan va 2-resursni kutmoqda, B jarayoni esa 2-resursni egallagan va 1-resursni kutmoqda — ikkalasi ham doimiy ravishda bloklangan.

iOS va boshqa tizimlarda, deadlocklar ko'pincha sinxronizatsiya noto'g'ri ishlatilishi natijasida yuzaga keladi, masalan, turli tartibda bir nechta bloklarni ushlab turish.

Deadlocklarni oldini olish uchun quyidagilar qo'llaniladi:

  • resurslarni olish tartibini belgilash;
  • kutish uchun vaqt chegaralarini o'rnatish;
  • boshqalar uchun kutayotganda resurslarni ushlab turishni oldini olish;
  • maxsus sinxronizatsiya mexanizmlaridan foydalanish.