Virtual xotirani sahifalash
|
Hamma narsa oddiy peyjingdagidek, faqat jarayonning barcha sahifalarini bir vaqtning o'zida yuklash talab qilinmaydi. Kerakli norezident sahifalar avtomatik ravishda xotiraga yuklanadi
|
Tashqi parchalanish yo'q; ko'p vazifani bajarishning yuqori darajasi; katta virtual manzil maydoni
|
|
Virtual xotira segmentatsiyasi
|
Hamma narsa oddiy segmentatsiyada bo'lgani kabi, bundan mustasno, jarayonning barcha segmentlarini bir vaqtning o'zida yuklash shart emas. Kerakli norezident segmentlar avtomatik ravishda xotiraga yuklanadi
|
Ichki parchalanish yo'q; ko'p vazifani bajarishning yuqori darajasi; katta virtual manzil maydoni; himoya qilish va almashish yordami
|
Xotirani boshqarish tizimining murakkabligi tufayli ortiqcha
|
RUXSAT ETILGAN TAQSIMOT
Xotirani boshqarish sxemalarining ko'pchiligida biz operatsion tizim ma'lum miqdorda asosiy xotirani egallaydi va asosiy xotiraning qolgan qismi bir nechta jarayonlar tomonidan foydalanish uchun mavjud deb taxmin qilamiz. Buning uchun eng oddiy nazorat sxemasi mavjud xotira- chegaralari belgilangan hududlarga taqsimlanishi.
BO'LIM O'LCHAMLARI
Shaklda. 7.2-rasmda qat'iy 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 ishlamayotgan bo'lsa, operatsion tizim istalgan bo'limdan jarayonni olib tashlashi va boshqa jarayonni yuklashi mumkin, bu esa protsessorni band qiladi.
Teng o'lchamdagi qismlardan foydalanishda ikkita qiyinchilik mavjud.
Dastur bo'limga sig'maslik uchun juda katta bo'lishi mumkin. Bunday holda, dasturchi har qanday vaqtda asosiy xotiraning faqat bitta bo'limiga muhtoj bo'lishi uchun qoplamalardan foydalanadigan dasturni loyihalashi kerak. Hozirda asosiy xotirada bo'lmagan modul kerak bo'lganda, foydalanuvchi dasturi o'zi ushbu modulni dastur xotirasi bo'limiga yuklashi kerak (bu modul kod yoki ma'lumot bo'lishidan qat'iy nazar).
Asosiy xotiradan foydalanish juda samarasiz. Har qanday dastur, o'lchamidan qat'i nazar, butun bo'limni egallaydi. Shunday qilib, bizning misolimizda, megabaytdan kichikroq dastur hali ham 8 MB bo'lgan butun qismni egallaydi; bu blokdan 7 MB foydalanilmay qoladi. Yuklash bloki bo'limdan kichikroq bo'lganligi sababli foydalanilmagan xotiraning bunday hodisasi ichki xotira deb ataladi. unga parchalanish (ichki parchalanish).
Ushbu qiyinchiliklarni (to'liq bartaraf etilmagan bo'lsa ham) turli o'lchamdagi qismlardan foydalanish orqali hal qilish mumkin (7.2b-rasmga qarang). Bunday holda, 16 MB hajmdagi dastur qoplamalarsiz ishlashi mumkin va kichik bo'limlar kichik dasturlarni yuklashda ichki parchalanishni kamaytirishi mumkin.
JOYLASHTIRISH ALGORITMI
Agar bo'limlar bir xil o'lchamda bo'lsa, jarayonlarni xotiraga joylashtirish ahamiyatsiz vazifadir. Jarayon erkin bo'limlarning qaysi birida joylashganligi muhim emas. 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. Qaysi jarayonni tushirishni tanlash rejalashtiruvchining ishi (bu haqda biz 4-qism, "Rejalashtirish" da gaplashamiz).
Bo'limlar turli o'lchamlarda bo'lsa, protsessorlarni xotira bo'limlariga belgilashning ikkita mumkin bo'lgan yondashuvi mavjud. Eng oddiy usul - har bir jarayonni ushbu jarayonni to'liq sig'dira oladigan eng kichik bo'limda bo'lishdir.1 Bu holda, har bir bo'lim ushbu bo'lim uchun mo'ljallangan almashtirilgan jarayonlarni ushlab turadigan rejalashtiruvchi navbatni talab qiladi (7.3-rasmga qarang)., lekin). Ushbu yondashuvning afzalligi shundaki ichida jarayonlar xotira bo'limlari o'rtasida ichki parchalanishni minimallashtiradigan tarzda taqsimlanishi mumkin.
Garchi bu usul bitta bo'lim nuqtai nazaridan optimal bo'lib tuyulsa ham, butun tizim nuqtai nazaridan u optimal emas. Tasavvur qiling-a, tizimda rasmda ko'rsatilgan. 7.2.6, bir vaqtning o'zida 12 dan 16 MB gacha bo'lgan o'lchamdagi bitta jarayon mavjud emas. Natijada, 16 MB hajmdagi bo'lim bo'sh bo'ladi, lekin undan kichikroq jarayonlarda muvaffaqiyatli foydalanish mumkin. Shunday qilib, afzal qilingan yondashuv barcha jarayonlar uchun bitta navbatdan foydalanishdir (7.3b-rasmga qarang). Jarayonni asosiy xotiraga yuklash kerak bo'lganda, jarayonga mos keladigan eng kichik bo'lim tanlanadi. Agar barcha bo'limlar band bo'lsa, ulardan birini ozod qilish to'g'risida qaror qabul qilish kerak. Ehtimol, yuklangan jarayonni joylashtirishga qodir bo'lgan eng kichik bo'limni egallagan jarayonga ustunlik berish kerak. Jarayonning ustuvorligi yoki uning holati (bloklangan yoki faol) kabi boshqa omillarni hisobga olish mumkin.
Turli o'lchamdagi qismlardan foydalanish bir xil o'lchamdagi qismlardan foydalanishga nisbatan ko'proq moslashuvchanlikni beradi bu usul. Bundan tashqari, sobit bo'lim sxemalari nisbatan sodda, minimal operatsion tizim talablari bilan; CPU yuki past. Biroq, bu sxemalar jiddiy kamchiliklarga ega.
Tizimni yaratish vaqtida aniqlangan bo'limlar soni faol (to'xtatilmagan) jarayonlar sonini cheklaydi.
Bo'lim o'lchamlari tizimni yaratish vaqtida oldindan o'rnatilganligi sababli, kichik jarayonlar xotiradan samarasiz foydalanishga olib keladi. Barcha vazifalarning xotira ehtiyojlari oldindan ma'lum bo'lgan muhitlarda tasvirlangan sxemadan foydalanishni oqlash mumkin, lekin ko'p hollarda bu texnologiyaning samaradorligi juda past.
Ruxsat etilgan ajratish hozirda deyarli ishlatilmaydi. Ushbu texnologiyadan foydalangan holda muvaffaqiyatli operatsion tizimga misol sifatida IBMning dastlabki asosiy kompyuter operatsion tizimi OS/MFT (Fixed number of Tasks bilan ko'p dasturlash) .
DINAMIK TAQSIMLASH
Ruxsat etilgan taqsimlash bilan bog'liq qiyinchiliklarni bartaraf etish uchun dinamik taqsimlash deb nomlanuvchi muqobil yondashuv ishlab chiqilgan. Ushbu yondashuv endi yanada murakkab va samarali xotirani boshqarish texnologiyalari bilan almashtirildi. Bir vaqtning o'zida dinamik taqsimlash IBM OS / MVT asosiy operatsion tizimi tomonidan ishlatilgan (Vazifalarning o'zgaruvchan soni bilan ko'p dasturlash).
Dinamik ajratish o'zgaruvchan uzunlikdagi o'zgaruvchan sonli qismlarni ishlab chiqaradi. Jarayon asosiy xotiraga joylashtirilganda, unga kerakli xotira miqdori ajratiladi va undan ortiq emas. Misol tariqasida, 6,4 MB asosiy xotiradan foydalanishni ko'rib chiqing (7.4-rasm). Dastlab, operatsion tizim tomonidan ishlatiladigan maydondan tashqari barcha xotira bo'sh (7.4-rasm, a). Dastlabki uchta jarayon operatsion tizim tugaydigan manzildan boshlab xotiraga yuklanadi va aynan shu jarayonga qancha xotira kerak bo'lsa, shuncha hajmda foydalaniladi (7.4b-d rasm). Bu asosiy xotira oxirida to'rtinchi jarayonni o'rnatish uchun juda kichik "teshik" qoldiradi. Bir nuqtada xotiradagi barcha jarayonlar faol emas va operatsion tizim ikkinchi jarayonni tushiradi (7.4-rasm, e), shundan so'ng yangi, to'rtinchi jarayonni yuklash uchun etarli xotira mavjud (7.4-rasm, f). 4-protsess 2-protsessdan kichikroq bo'lgani uchun yana bir kichik xotira "teshigi" hosil bo'ladi. Bir muncha vaqt o'tgach, xotiradagi barcha jarayonlar faol emas, lekin 2-jarayon ishlashga tayyor, uning uchun xotirada bo'sh joy yo'q va operatsion tizim kerakli joyni bo'shatish uchun 1-jarayonni tushirishga majbur bo'ladi ( 7.4-rasm,g) va 2-jarayonni asosiy xotiraga joylashtiring (7.4h-rasm).
Ko'rsatilganidek berilgan misol, bu usul yaxshi boshlanadi, lekin yaxshi davom etmaydi - u ko'plab kichik xotira teshiklari bilan tugaydi. Vaqt o'tishi bilan xotira tobora ko'proq bo'linadi va uning samaradorligi pasayadi. Ushbu hodisa tashqi parchalanish deb ataladi, bu barcha bo'limlar uchun tashqi bo'lgan xotiraning yuqori darajada parchalanishini aks ettiradi (yuqorida muhokama qilingan ichki parchalanishdan farqli o'laroq).
Ushbu hodisani bartaraf etish usullaridan biri siqishni qo'llashdir: vaqti-vaqti bilan operatsion tizim xotiradagi jarayonlarni xotiraning qo'shni hududlarini egallashi uchun ko'chiradi; bo'sh xotira bitta blokda yig'iladi. Misol uchun, rasmda. 7.4,h xotirani ixchamlagandan so'ng, biz 16 MB hajmdagi bo'sh xotira blokini olamiz, bu yangi jarayonni yuklash uchun etarli bo'lishi mumkin. Siqilishning qiyinligi shundaki, u qo'shimcha vaqtni oladi; bundan tashqari, siqilish xotiradagi jarayonlarning dinamik harakatini talab qiladi, ya'ni. dasturni asosiy xotiraning bir maydonidan ikkinchisiga uning xotiraga kirish to'g'riligini yo'qotmasdan o'tkazish imkoniyati bo'lishi kerak (ushbu bobning ilovasiga qarang).
JOYLASHTIRISH ALGORITMI
Xotirani siqish qo'shimcha protsessor vaqtini talab qilganligi sababli, operatsion tizim dizayneri xotiradagi jarayonlarni qanday taqsimlash (majoziy aytganda, teshiklarni qanday yopishtirish) haqida oqilona qaror qabul qilishi kerak. Jarayonni asosiy xotiraga yuklash vaqti kelganda va etarli hajmdagi bo'sh xotiraning bir nechta bloklari mavjud bo'lganda, operatsion tizim qaysi bo'sh blokdan foydalanishni hal qilishi kerak.
Uchta asosiy algoritmni ko'rib chiqish mumkin - eng yaxshi mos, birinchi mos, keyingi mos. Ularning barchasi, albatta, jarayonni o'rnatish uchun etarlicha katta hajmdagi bepul bloklarni tanlash bilan cheklangan. Eng yaxshi moslash usuli kerakli o'lchamga eng yaqin bo'lgan blokni tanlaydi; birinchi moslash usuli xotira boshidan barcha bo'sh bloklarni tekshiradi va jarayonni o'rnatish uchun etarlicha katta bo'lgan birinchi blokni tanlaydi. Keyingi o'rnatish usuli birinchi o'rnatish usuli bilan bir xil ishlaydi, lekin u blok oxirgi marta ajratilgan joydan tekshirishni boshlaydi (xotira oxiriga yetganda, u boshidan davom etadi).
Shaklda. 7.5a bir qator joylashtirish va xotiradan tushirish jarayonlaridan keyin xotira konfiguratsiyasi misolini ko'rsatadi. Oxirgi blok ishlatilgan Soxta 22 MB, unda 14 MB bo'lim yaratilgan. Shaklda. 7,5,6-rasmlar 16 MB blokni ajratish so'rovini bajarishda eng yaxshi, birinchi va keyingi eng yaxshi o'rtasidagi texnologiya farqini ko'rsatadi. Eng yaxshi moslash usuli barcha bepul bloklarni ko'rib chiqadi va eng yaqin 18 MB blokni tanlaydi va 2 MB bo'lakni qoldiradi. Bu holatda birinchi mos bo'lgan usul 6 MB hajmdagi bo'sh xotira qismini qoldiradi va keyingi mos keladigan usul 20 MB qoldiradi.
Ushbu usullardan qaysi biri eng yaxshisi, jarayonlarni yuklash va tushirishning aniq ketma-ketligiga va ularning hajmiga bog'liq bo'ladi. Biroq, biz ba'zi umumiy xulosalar haqida gapirishimiz mumkin (qarang, , ). Odatda birinchi mos algoritm nafaqat oddiy, balki tezroq va beradi yuqori ball. Keyingi mos keladigan algoritm biroz yomonroq natijalar beradi. Buning sababi, keyingi mos keladigan algoritm xotira oxiridagi bo'sh bloklardan xotirani tez-tez ajratishga intiladi. Natijada, bo'sh xotiraning eng katta bloklari (odatda xotira oxirida joylashgan) tezda kichikroq bo'laklarga bo'linadi va shuning uchun keyingi eng yaxshi usuldan foydalanganda siqishni tez-tez bajarish kerak. Boshqa tomondan, birinchi mos keladigan algoritm odatda xotiraning boshlanishini kichik bo'sh bloklar bilan to'sib qo'yadi, bu esa keyinchalik mos blokni qidirish vaqtini ko'paytirishga olib keladi. Eng yaxshi moslash usuli, uning nomidan farqli o'laroq, odatda eng yomoni hisoblanadi. U kerakli hajmga eng yaqin bloklarni qidirganligi sababli, u juda ko'p kichik bloklarni qoldiradi. Natijada, har bir ajratishda mumkin bo'lgan eng kam xotira miqdori isrof bo'lishiga qaramasdan, asosiy xotira hech qanday so'rovni qondira olmaydigan ko'plab kichik bloklar bilan juda tez tiqilib qoladi (shuning uchun xotirani siqish ushbu algoritm bilan tez-tez bajarilishi kerak).
ALMASHTIRISH ALGORITMI
Dinamik ajratishdan foydalanadigan ko'p vazifali tizimda asosiy xotiradagi barcha jarayonlar bloklangan holatda bo'lgan vaqt keladi va hatto siqilgandan keyin ham qo'shimcha jarayon uchun xotira etarli emas. Faol jarayonning chiqarilishini kutish uchun protsessor vaqtini behuda sarflamaslik uchun operatsion tizim asosiy xotiradan jarayonlardan birini almashtirishi va shu tariqa yangi jarayon yoki tayyor holatdagi jarayon uchun joy ochishi mumkin. Operatsion tizimning vazifasi qaysi jarayonni xotiradan almashtirish kerakligini aniqlashdir. Chunki almashtirish algoritmi mavzusi bilan bog'liq holda batafsil ko'rib chiqiladi turli sxemalar virtual xotira, hozircha biz bu masalani muhokama qilishni kechiktiramiz.
EGIZAK TIZIM
Ruxsat etilgan va dinamik xotira taqsimotining ham kamchiliklari bor. Ruxsat etilgan ajratish faol jarayonlar sonini cheklaydi va agar bo'lim va jarayon o'lchamlari o'rtasida nomuvofiqlik bo'lsa, xotiradan samarasiz foydalanadi. Dinamik taqsimlash ancha murakkab va xotirani siqish uchun qo'shimcha xarajatlarni o'z ichiga oladi. Bu borada qiziqarli kelishuv egizaklar tizimidir (, [RBTE77]).
Egizak tizimda xotira 2,k o'lchamdagi bloklarga taqsimlanadi. < К < U,
qayerda
Do'stlaringiz bilan baham: |