R
1
R
2
84
Berkliklarning oldini olish
Berkliklarning oldini olish qanday usullarining mumkinligini
tahlil qilamiz. Asosiy g‘oya jarayonlar tomonidan resurslarga
so‘rovlar usullarini cheklash hisoblanadi. Resurslarga ega bo‘lishni
o‘zaro inkor qilish (berklikning birinchi sharti) imkoniyatini cheklash
uchun u barcha resurslar uchun ham talab qilinmasligini ta’kidlash
zarur.
Bo‘linadigan resurslar (masalan, konstantlar, kodlar, fayllari
massivlari) uchun u talab qilinmaydi. Saqlash va kutish imkoniyatini
cheklash (berklikning ikkinchi sharti) uchun qandaydir resursni
so‘raydign jarayon boshqa hech qanday resurslarga ega bo‘lmasligini
talab qilish mumkin.
Muqobil variant barcha jarayonlar ularning haqiqiy bajarilishini
boshlanishigacha barcha zarur resurslarga ega bo‘lishi talabi
hisoblanadi. Afsuski, har ikkala talablarning bajarilishi resurslardan
foydalanishning yetishmasligi va “och qolish”ga (starvation) olib
keladi.
Jarayon resursni har bir kutishida resurslarni qayta taqsimlash
algoritmi ma’qulroq hisoblanadi. Agar jarayon qandaydir A resursga
ega bo‘lsa va unga darhol ajratilishi mumkin bo‘lmagan boshqa B
resursni so‘rasa, u holda jarayon kutishi kerak. Bunda jarayon
egallagan A resurs darhol bo‘shatilishi kerak. A resurs jarayon
kutayotgan resurslar ro‘yxatiga kirtiladi.
Jarayon faqat agar unga bir vaqtda u ega bo‘lgan barcha eski
resurslar va u kutayotgan yangi resurslar ajratilishi mumkin bo‘lsa,
qayta tiklanishi mumkin.
Siklli kutish vaziyatining oldini olish uchun eng oddiy yechim
barcha resurslar turlari raqamlari bo‘yicha tartiblashtirishni kiritish va
jarayon resurslarni faqat ularning raqamlarini ortib borishi tartibida
so‘rashi talabini kiritish hisoblanadi.
Amalda bunday yechimni qo‘llanishi va qulay bo‘lishi ehtimoli
kam, chunki iste’mol qilinadigan va talab qilinadigan resurslar
turlarining o‘ziga xosligi barcha bo‘lishi mumkin raqamlashlarga hech
qanday bog‘liq emas va istalgan raqamli resursga ehtiyoj zarurati
bo‘yicha vujudga kelishi mumkin.
|