Sobes.tech
Junior — Middle

Ի՞նչ է ռեսուրսների փոխադարձ փակումը և ինչ իրավիճակներում այն առաջանում է համակարգերում։

sobes.tech AI

Պատասխան AI-ից

Deadlock (մահացու փակուղի) — դա իրավիճակ է բազմագործառական համակարգերում, երբ երկու կամ ավելի գործընթացներ (կամ հոսքեր) հավերժորեն փակվում են միմյանց, սպասելով, որ բաց թողնեն իրար կողմից զբաղեցված ռեսուրսները:

Այն առաջանում է, երբ միաժամանակ կատարվում են բոլոր չորս պայմանները՝

  1. Միմյանց բացառություն — ռեսուրսը կարող է բռնել միայն մեկ գործընթաց:
  2. Հավաքել և սպասել — գործընթացը պահում է մի ռեսուրս և սպասում է մյուսին:
  3. Անհնար է հարկադիր ազատել — ռեսուրսը չի կարող վերցվել գործընթացից, մինչև այն ինքնուրույն չազատվի:
  4. Շրջանաձև սպասում — կա գործընթացների ցիկլ, որոնցից յուրաքանչյուրը սպասում է ռեսուրսին, որը բռնած է հաջորդը ցիկլում:

Օրինակ՝ A գործընթացը բռնել է ռեսուրս 1-ը և սպասում է ռեսուրս 2-ին, իսկ B գործընթացը բռնել է ռեսուրս 2-ը և սպասում է ռեսուրս 1-ին — երկուսը հավերժորեն փակված են:

iOS և այլ համակարգերում deadlock-ները հաճախ առաջանում են սխալ սինխրոնիզացիայի օգտագործման պատճառով, օրինակ՝ միաժամանակ մի քանի փակման ձեռքբերման ժամանակ տարբեր կարգով:

Deadlock-ների կանխարգելման համար օգտագործվում են՝

  • ռեսուրսների ձեռքբերման կարգը:
  • սպասման ժամանակային սահմանափակումներ:
  • ռեսուրսների պահպանումից խուսափում՝ սպասելիս:
  • մասնագիտացված սինխրոնիզացիոն մեխանիզմների օգտագործում։