Qayta taqsimlanmaslik printsipining buzilishi.
Agar ushbu jarayonlarni yakunlashdan oldin ularni ushlab turgan jarayonlardan resurslarni tanlash mumkin bo'lsa, unda uchinchi holat to'xtab qolishining bajarilmasligiga erishish mumkin bo'ladi. Keling, ushbu yondashuvning kamchiliklarini keltiraylik.
Birinchidan, jarayonlar faqat davlatni saqlab qolish oson bo'lgan resurslarni tanlashi va keyinchalik, masalan, protsessor holatini tiklashi mumkin. Ikkinchidan, agar jarayon bir muncha vaqtdan beri muayyan resurslardan foydalansa va keyinchalik ushbu resurslarni ozod qilsa, u hozirgi kunga qadar amalga oshirilgan ishlarning natijalarini yo'qotishi mumkin. Nihoyat, ushbu sxemaning natijasi resurslarni doimiy ravishda tanlab olgan ayrim jarayonlarni kamsitish bo'lishi mumkin.
Agar resurslarni tanlash zarurati tez-tez sodir bo'lsa, juda yuqori bo'lishi mumkin, bunday qaror, narxi butun savol.
Shunday qilib, bitta usul-barcha jarayonlarni bajarishdan oldin kerakli resurslarni talab qilish ("hamma narsa yoki hech narsa"). Agar tizim jarayonni zarur bo'lgan hamma narsani ta'kidlay olsa, u tugagunga qadar ishlashi mumkin. Agar kamida bitta resurs band bo'lsa, jarayon kutadi.
Ushbu yechim ommaviy mainframe (mainframe) da qo'llaniladi, bu esa foydalanuvchilarga barcha kerakli resurslarni ro'yxatga olishni talab qiladi. Yana bir misol DBMS yozuvlar ikki fazali mahalliylashtirish mexanizmi hisoblanadi. Biroq, umuman olganda, bunday yondashuv juda jozibali emas va kompyuterdan samarasiz foydalanishga olib keladi. Yuqorida aytib o'tilganidek, resurslar uchun kelajakdagi so'rovlar ro'yxati kamdan-kam hollarda taxmin qilinadi. Agar bunday ma'lumot bo'lsa, bankirning algoritmidan foydalanishingiz mumkin. Shuni ham ta'kidlash kerakki, ta'riflangan yondashuv dasturlashda modulyarlikning paradigmasiga zid keladi, chunki dastur barcha modullarda resurslar uchun mo'ljallangan so'rovlar haqida bilishi kerak.
Dumaloq holatni buzish.
"O'lik uchlari" bo'limidan so'nggi shartlardan qochish uchun oqilona strategiyani taklif qilish qiyin – bu davriy kutish.
Buning bir usuli-resurslarni tartibga solish. Misol uchun, barcha resurslarga noyob raqamlar berilishi mumkin va jarayonlarning ortib borayotgan tartibda resurslarni talab qilishini talab qilish mumkin. Keyin dumaloq kutish mumkin emas. Oxirgi so'rovdan so'ng va barcha resurslarni ozod qilgandan so'ng, jarayon yana birinchi so'rovni amalga oshirishga ruxsat berilishi mumkin. Shubhasiz, barchani qondiradigan tartibni topish deyarli mumkin emas.
Resurslarni tartibga solishning bir nechta misolidan biri Windows 2000-da Spin-Lock ierarxiyasini yaratishdir. Spin-Lock-sinxronlashning eng oddiy usuli (jarayonlarni sinxronlashtirish masalalari tegishli ma'ruzada ko'rib chiqiladi). Spin-Lock jarayoni bilan qo'lga olinishi va ozod qilinishi mumkin. P1 jarayoni S1 Spin-qulfini ushlab turganda va S2 Spin-Lock va P2 jarayonini talab qilganda, S2 Spin-Lockni ushlab turganda va S1 Spin-Lock-ni qo'shimcha ravishda qo'lga kiritmoqchi bo'lganida klassik o'lik holat yuzaga keladi. Bunga yo'l qo'ymaslik uchun barcha Spin-qulflar tartiblangan ro'yxatga joylashtiriladi. Ta'qib qilish faqat ro'yxatda ko'rsatilgan tartibda amalga oshirilishi mumkin.
Hujumning yana bir usuli dumaloq kutish shartlari har bir jarayonning har bir daqiqada faqat bitta resursga ega bo'lishi mumkin bo'lgan qoidaga muvofiq harakat qilishdir. Agar ikkinchi resurs kerak bo'lsa-birinchi ozod. Shubhasiz, ko'plab jarayonlar uchun bu qabul qilinishi mumkin emas.
Shunday qilib, tsiklik kutishning oldini olish texnologiyasi odatda samarasiz va resurslarga kirishni yopmasdan yopilishi mumkin.
Do'stlaringiz bilan baham: |