Xotirani taqsimlash
Turli xil operatsion tizimlarda turlicha hal qilinadigan bir qator asosiy xotira boshqaruvi muammolari mavjud. Misol uchun, har bir jarayonga jismoniy xotiraning bitta qo'shni sohasini belgilash kerakmi yoki xotirani qismlarga ajratish mumkinmi? Xotiraga yuklangan dastur segmentlari butun jarayon davomida bir joyda turishi kerakmi yoki ularni vaqti-vaqti bilan almashtirish mumkinmi? Agar dastur segmentlari mavjud xotiraga mos kelmasa-chi? Xotirani boshqarish uchun tizim resurslari narxini qanday kamaytirish mumkin? Xotirani boshqarishning bir qator boshqa bir xil qiziqarli muammolari ham mavjud [ 5 , 10 , 13 , 17 ].
Quyida xotirani ajratish usullarining tasnifi keltirilgan bo'lib, unda usullarning ikkita klassi ajralib turadi - OP va VP (disk) o'rtasidagi jarayon segmentlarining harakati bilan va harakatsiz, ya'ni. ishtirokisiz tashqi xotira (guruch. 6.5). Ushbu tasnif faqat usullarning asosiy xususiyatlarini hisobga oladi. Har bir usul uchun uni amalga oshirish uchun bir nechta turli xil algoritmlardan foydalanish mumkin.
Guruch. 6.5. Xotirani taqsimlash usullarining tasnifi
Ustida guruch. 6.6 sobit taqsimotning ikkita misoli ko'rsatilgan. Imkoniyatlardan biri - bir xil o'lchamdagi qismlardan foydalanish. Bunday holda, hajmi bo'lim hajmidan oshmaydigan har qanday jarayon mavjud bo'lgan har qanday bo'limga yuklanishi mumkin. Agar barcha bo'limlar band bo'lsa va hech qanday jarayon tayyor yoki ishlamasa, OS istalgan bo'limdan jarayonni olib tashlashi va boshqa jarayonni yuklashi mumkin, shu bilan protsessor band bo'ladi.
Guruch. 6.6. Ruxsat etilgan xotira ajratish imkoniyatlari
Bir xil o'lchamdagi qismlardan foydalanishda ikkita muammo mavjud.
Dastur bo'limga sig'maslik uchun juda katta bo'lishi mumkin. Bunday holda, dasturchi har qanday vaqtda xotiraning faqat bitta bo'limi talab qilinadigan tarzda qoplamalardan foydalanadigan dasturni loyihalashi kerak. Hozirda operativ xotirada bo'lmagan modul kerak bo'lganda, foydalanuvchi dasturining o'zi uni dastur xotirasi bo'limiga yuklashi kerak. Shunday qilib, bu holda xotirani boshqarish asosan dasturchi zimmasiga tushadi.
OP dan foydalanish juda samarasiz. Har qanday dastur, o'lchamidan qat'i nazar, butun bo'limni egallaydi. Bunday holda, katta hajmdagi xotiraning foydalanilmagan joylari qolishi mumkin. Foydalanilmayotgan xotiraning bu hodisasi ichki parchalanish deb ataladi.
Ushbu qiyinchiliklarni turli o'lchamdagi qismlardan foydalangan holda (to'liq bartaraf etilmasa ham) engish mumkin. Bunday holda, hajmi 8 MB gacha bo'lgan dastur qoplamalarsiz ishlashi mumkin va kichik bo'limlar kichik dasturlarni yuklashda ichki parchalanishni kamaytiradi.
Bo'limlar bir xil bo'limga ega bo'lsa, jarayonlarni joylashtirish ahamiyatsiz - har qanday bo'sh bo'limda. Agar barcha bo'limlar zudlik bilan ishga tayyor bo'lmagan jarayonlar bilan band bo'lsa, yangi jarayon uchun xotirani bo'shatish uchun ulardan istalgan birini almashtirish mumkin.
Bo'limlar turli o'lchamlarda bo'lsa, xotira bo'limlariga jarayonlarni belgilashning ikkita mumkin bo'lgan yondashuvi mavjud. Eng oddiy usul - har bir jarayonni ushbu jarayonga mos keladigan eng kichik bo'limda bo'lish (bu holda foydalanuvchi ishi talab qilinadigan xotira miqdorini belgilaydi). Ushbu yondashuv bilan har bir bo'lim ushbu xotira bo'limi uchun mo'ljallangan yuklanmagan jarayonlarni ushlab turadigan rejalashtiruvchi navbatni talab qiladi. Ushbu usulning afzalligi ichki parchalanishni minimallashtirish uchun OPning bo'limlari o'rtasida jarayonlarni taqsimlash imkoniyatidir.
Kamchilik shundaki, bo'limlar uchun alohida navbatlar butun tizim uchun suboptimal xotira ajratilishiga olib kelishi mumkin. Misol uchun, agar bir vaqtning o'zida 7 dan 12 MB gacha bo'lgan jarayonlar bo'lmasa, u holda 12 MB bo'lim bo'sh bo'ladi, lekin undan kichikroq jarayonlarda foydalanish mumkin. Shuning uchun barcha jarayonlar uchun bitta navbatdan foydalanish afzalroqdir. Jarayonni RAMga yuklash zarur bo'lganda, ushbu jarayonni sig'dira oladigan eng kichik bo'lim tanlanadi.
Umuman olganda, sxemalar bilan ta'kidlash mumkin qattiq bo'limlar nisbatan sodda, operatsion tizim uchun minimal talablarga ega; Xotirani ajratish uchun protsessorning qo'shimcha xarajatlari kam. Biroq, bu sxemalar jiddiy kamchiliklarga ega.
Tizimni yaratish vaqtida aniqlangan bo'limlar soni faol jarayonlar sonini cheklaydi (ya'ni, ko'p dasturlash darajasi).
Bo'lim o'lchamlari tizimni yaratishda oldindan o'rnatilganligi sababli, kichik ishlar xotiradan samarasiz foydalanishga olib keladi. Barcha vazifalarning xotira talablari oldindan ma'lum bo'lgan muhitlarda ko'rib chiqilayotgan sxemadan foydalanishni oqlash mumkin, lekin ko'p hollarda bu texnologiyaning samaradorligi juda past.
Ruxsat etilgan taqsimlash bilan bog'liq qiyinchiliklarni bartaraf etish uchun dinamik taqsimlash deb nomlanuvchi muqobil yondashuv ishlab chiqilgan. Bir vaqtlar bu yondashuv IBM tomonidan OS / MVT-dagi asosiy operatsion tizimda qo'llanilgan (o'zgaruvchan sonli vazifalar bilan ko'p dasturlash - ko'p dasturlash Vazifalarning o'zgaruvchan soni bilan). Keyinchalik, xotirani taqsimlashda xuddi shunday yondashuv OS ES kompyuterlarida ham qo'llanildi [ 12 ] .
Dinamik ajratish o'zgaruvchan uzunlikdagi o'zgaruvchan sonli qismlarni ishlab chiqaradi. Protsess asosiy xotiraga joylashtirilsa, uning uchun aynan kerakli hajmdagi xotira ajratiladi. Misol tariqasida, 64 MB ( guruch. 6.7) asosiy xotira. Dastlab, operatsion tizim tomonidan ishlatiladigan maydondan tashqari barcha xotiralar bo'sh. Dastlabki uchta jarayon OS tugaydigan manzildan boshlab xotiraga yuklanadi va jarayon qancha kerak bo'lsa, shuncha ko'p xotiradan foydalanadi. Shundan so'ng, OP oxirida to'rtinchi jarayonni o'rnatish uchun juda kichik bo'lgan xotira maydoni mavjud. Vaqtning bir nuqtasida xotiradagi barcha jarayonlar faol emas va operatsion tizim ikkinchi jarayonni yuklaydi, shundan so'ng yangi, to'rtinchi jarayonni yuklash uchun etarli xotira mavjud.
Do'stlaringiz bilan baham: |