JET School

Deadlock nədir?

Deadlock (Çıxılmaz vəziyyət) — verilənlər bazası sistemlərində, əməliyyat sistemlərində və çox axınlı (multi-threaded) proqramlarda baş verən vəziyyətdir. İki və ya daha çox proses (və ya tranzaksiya) bir-birindən resurs gözlədiyinə görə heç biri işi davam etdirə bilmir və nəticədə sistem "donur". Bu vəziyyət çıxılmaz olur, çünki hər proses digəri azad etmədən öz ehtiyac duyduğu resursa çata bilmir.

Deadlock-un əsas şərtləri:

Deadlock-un yaranması üçün dörd əsas şərt eyni anda mövcud olmalıdır (Coffman conditions):

Mutual Exclusion (Əlavə etmə istisnası)

Resurslar yalnız bir proses tərəfindən istifadə edilə bilər. Eyni anda başqa bir proses həmin resursa daxil ola bilməz.

Hold and Wait (Tutan və Gözləyən)

Proses artıq sahib olduğu resursları saxlayır və eyni zamanda başqa bir resursa görə gözləyir.

No Preemption (Əlindən alınmama)

Proseslərin istifadə etdiyi resurslar zorla geri alınmır. Onlar özləri azad etməlidir.

Circular Wait (Dairəvi gözləmə)

Proseslər dairəvi şəkildə bir-birinin saxladığı resurslara ehtiyac duyur və gözləyir.

Sadə nümunə ilə izah:

Tutaq ki, iki proses var:

  • Proses A — Resurs 1-ə sahibdir və Resurs 2-ni gözləyir.
  • Proses B — Resurs 2-ə sahibdir və Resurs 1-i gözləyir.

Bu vəziyyətdə nə A, nə də B irəliləyə bilər, çünki hər ikisi bir-birini gözləyir. Bu, deadlock-dur.

Deadlock-un qarşısını alma yolları:

Resurslara sabit ardıcıllıqla giriş tələb etmək:

Bütün proseslər resurslara eyni sırayla müraciət edərsə, circular wait baş verməz.

Timeout mexanizmləri:

Əgər proses müəyyən müddət ərzində resursa çata bilmirsə, o zaman bu cəhddən imtina edir.

Deadlock aşkarlama və bərpa:

Sistem mütəmadi olaraq proseslər arasındakı qarşılıqlı gözləmə vəziyyətini yoxlayır. Əgər deadlock aşkarlanarsa, sistem hansısa prosesi dayandıraraq vəziyyətdən çıxır.

Resursların əlindən alınması (preemption):

Bəzi sistemlərdə mümkündür ki, resurs aktiv prosesdən zorla alınsın və başqa prosesə verilsin.

Nəticə:

Deadlock – çoxaxınlı və ya paralel sistemlərdə çox ciddi problem yarada biləcək hadisədir. Onun qarşısını almaq və ya aşkarlayıb idarə etmək vacibdir ki, sistem etibarlı və dayanıqlı işləsin. Bu konsepsiya həm əməliyyat sistemlərində, həm də verilənlər bazası idarəetmə sistemlərində (məsələn, MySQL, PostgreSQL) nəzərə alınmalıdır.

IT kurslarımız barədə məlumat almaq üçün formu doldurun

Əlaqəli terminlər:

IT sahəsini dərindən öyrənmək üçün kurslarımıza qoşulun. Ətraflı məlumat almaq üçün sorğu göndərin!