Junior — Middle
Ի՞նչ է ռեսուրսների փոխադարձ փակումը և ինչ իրավիճակներում այն առաջանում է համակարգերում։
sobes.tech AI
Պատասխան AI-ից
Deadlock (մահացու փակուղի) — դա իրավիճակ է բազմագործառական համակարգերում, երբ երկու կամ ավելի գործընթացներ (կամ հոսքեր) հավերժորեն փակվում են միմյանց, սպասելով, որ բաց թողնեն իրար կողմից զբաղեցված ռեսուրսները:
Այն առաջանում է, երբ միաժամանակ կատարվում են բոլոր չորս պայմանները՝
- Միմյանց բացառություն — ռեսուրսը կարող է բռնել միայն մեկ գործընթաց:
- Հավաքել և սպասել — գործընթացը պահում է մի ռեսուրս և սպասում է մյուսին:
- Անհնար է հարկադիր ազատել — ռեսուրսը չի կարող վերցվել գործընթացից, մինչև այն ինքնուրույն չազատվի:
- Շրջանաձև սպասում — կա գործընթացների ցիկլ, որոնցից յուրաքանչյուրը սպասում է ռեսուրսին, որը բռնած է հաջորդը ցիկլում:
Օրինակ՝ A գործընթացը բռնել է ռեսուրս 1-ը և սպասում է ռեսուրս 2-ին, իսկ B գործընթացը բռնել է ռեսուրս 2-ը և սպասում է ռեսուրս 1-ին — երկուսը հավերժորեն փակված են:
iOS և այլ համակարգերում deadlock-ները հաճախ առաջանում են սխալ սինխրոնիզացիայի օգտագործման պատճառով, օրինակ՝ միաժամանակ մի քանի փակման ձեռքբերման ժամանակ տարբեր կարգով:
Deadlock-ների կանխարգելման համար օգտագործվում են՝
- ռեսուրսների ձեռքբերման կարգը:
- սպասման ժամանակային սահմանափակումներ:
- ռեսուրսների պահպանումից խուսափում՝ սպասելիս:
- մասնագիտացված սինխրոնիզացիոն մեխանիզմների օգտագործում։