1-rasm. Virtual manzilni jismoniy manzilga solishtirish
Virtual xotira tizimlari orasida ikkita sinfni ajratish mumkin: bloklangan o'lchamdagi tizimlar (sahifa tashkiloti) va o'zgaruvchan blok o'lchamiga ega tizimlar (segment tashkiloti). Odatda ikkala variant ham birlashtiriladi (segmentlangan sahifani tashkil qilish).
2. Virtual xotirani tashkil qilish
Sahifali tashkil qilish
2-rasmda disk xotirasini tashkillashtirish diagrammasi ko'rsatilgan. Har bir jarayonning virtual adres maydoni virtual sahifalar deb nomlangan ma'lum bir tizim uchun o'rnatiladigan bir xil o'lchamdagi qismlarga bo'linadi. Umuman olganda, virtual manzillar maydonining o'lchami sahifa o'lchamidan ko'p emas, shuning uchun har bir jarayonning oxirgi sahifasi dummy maydoni bilan to'ldiriladi.Mashinaning butun RAM qismi, shuningdek, jismoniy sahifalar (yoki bloklar) deb nomlangan bir xil o'lchamdagi qismlarga bo'linadi.Sahifa hajmi odatda ikkita kuchga teng tanlanadi: 512, 1024, va hokazo, bu bizga manzilni tarjima qilish mexanizmini soddalashtirishga imkon beradi. Jarayon yuklanganda, uning virtual sahifalarining bir qismi OXga, qolgan qismi esa diskka joylashtiriladi. Qo'shni virtual sahifalar qo'shni jismoniy sahifalarda bo'lishi shart emas. Yuklashda operatsion tizim har bir jarayon uchun axborot tuzilishini yaratadi - operativ xotiraga yuklangan sahifalar uchun virtual va fizik sahifalar raqamlari o'rtasida yozishmalar o'rnatilgan sahifa jadvali yoki virtual sahifa diskka tushirilganligi to'g'risida eslatma. Bundan tashqari virtual xotira mexanizmida foydalaniluvchi, sahifalar jadvalida nazorat qilish ma'lumotlari, masalan, sahifani o'zgartirish belgisi, yuklab olinmaydigan belgi (ba'zi sahifalarni tushirish taqiqlangan bo'lishi mumkin), sahifaga kirish belgisi (ma'lum vaqt davomida xitlar sonini hisoblash uchun ishlatiladi) va mexanizm tomonidan ishlab chiqarilgan va ishlatilgan boshqa ma'lumotlar mavjud bo'ladi.
2-rasm. Xotirani sahifali tashkil qilish
Keyingi jarayon faollashtirilganda, ushbu jarayonning sahifa jadvalining manzili maxsus protsessor registriga yuklanadi.
Xotiraga har bir kirish sahifadagi jadvaldan olingan virtual sahifa haqidagi ma'lumotlarni o'qiydi. Agar ushbu virtual sahifa RAMda bo'lsa, unda virtual manzil jismoniy holatga o'tkaziladi. Agar hozirda kerakli virtual sahifa diskka tushirilgan bo'lsa, u holda sahifani kesish deb ataladi. Ishlayotgan jarayon kutib turiladi va tayyor navbatdagi boshqa jarayon faollashadi. Shu bilan birga, sahifani kesish bilan ishlov berish dasturi kerakli virtual sahifani diskdan topadi va uni RAMga yuklashga harakat qiladi. Agar xotirada bo'sh jismoniy sahifa bo'lsa, u holda yuklash darhol amalga oshiriladi, lekin agar bo'sh sahifalar bo'lmasa, asosiy xotiradan qaysi sahifani olib tashlash kerakligi haqida savol tug'iladi.
Bunday vaziyatda juda ko'p turli xil tanlov mezonlaridan foydalanish mumkin, ularning eng mashhurlari quyidagilar:
• eng uzun ishlatilmagan sahifa,
• paydo bo'lgan birinchi sahifa,
• kamida tashrif buyurilgan sahifa.
Ba'zi tizimlar ishlaydigan sahifalar to'plamining kontseptsiyasidan foydalanadi. Ishchi to'plam har bir jarayon uchun aniqlanadi va eng tez-tez ishlatiladigan sahifalar ro'yxati bo'lib, ular doimo RAMda bo'lishi kerak, shuning uchun tushirishga to'g'ri kelmaydi.
RAMni tark etishi kerak bo'lgan sahifa tanlanganidan so'ng, uning o'zgartirish belgisi tahlil qilinadi (sahifa jadvalidan). Agar chiqarilgan sahifa yuklangandan keyin o'zgartirilgan bo'lsa, unda uning yangi versiyasi diskka qayta yozilishi kerak. Agar yo'q bo'lsa, u shunchaki yo'q qilinishi mumkin, ya'ni tegishli jismoniy sahifa bepul e'lon qilinadi.
Plaginli xotira tashkil etilishi bilan virtual manzilni jismoniy manzilga aylantirish mexanizmini ko'rib chiqing (3-rasm).
Sahifalar uchun virtual manzil juftlik (p, s) shaklida berilishi mumkin, bu erda p - jarayonning virtual sahifasining raqami (sahifa raqamlanishi 0 dan boshlanadi) va s - bu virtual sahifadagi ofset. Sahifaning o'lchamlari k darajadagi 2 ga tengligini hisobga olsak, sintaksisni virtual manzilning ikkilik kiritilishida k ahamiyatli bo'laklarni ajratish orqali olish mumkin. Qolgan yuqori tartibli bitlar bu p raqami uchun ikkilik nota.
3-rasm. Xotirani sahifali tashkil qilisjda virtual manzilni fizik manzilga aylantirish mexanizmi
Har safar xotiraga apparat orqali kirishda quyidagi harakatlar amalga oshiriladi:
1. sahifa jadvalining boshlang'ich manzili (sahifa jadvalining manzili registr registrining mazmuni), virtual sahifaning raqami (virtual manzilning yuqori satrlari) va sahifalar jadvalidagi kirish uzunligi (tizim doimiy) asosida jadvalda kerakli yozuvning manzili aniqlanadi,
2. jismoniy varaq raqami ushbu yozuvdan olingan,
3. Jismoniy sahifaning raqamiga ofset ilova qilinadi (virtual manzilning ahamiyatsiz qismi).
Sahifa o'lchamining 2-darajaga teng ekanligi (3) bandidan foydalanish bizga qo'shimcha manzilni olish vaqtini kamaytiradigan va shu sababli kompyuterning ishlashini yaxshilaydigan qo'shimcha qo'shimcha operatsiya o'rniga bog'lash (biriktirish) operatsiyasidan foydalanish imkonini beradi.
Peyj-xotirali tizimning ishlashiga peyj uzilishlarini qayta ishlash va virtual manzilni jismoniy manzilga aylantirish bilan bog'liq vaqt xarajatlari ta'sir qiladi. Tez-tez yuz beradigan sahifalarda uzilishlar yuzaga kelganda, tizim ko'p vaqtni almashtirishga sarflaydi. Sahifalardagi uzilishlar chastotasini kamaytirish uchun siz sahifaning hajmini oshirishingiz kerak. Bundan tashqari, sahifaning hajmini oshirish sahifa jadvalining hajmini kamaytiradi va shuning uchun xotira xarajatlarini kamaytiradi. Boshqa tomondan, agar sahifa katta bo'lsa, unda har bir dasturning so'nggi virtual sahifasidagi dummy maydoni ham katta. O'rtacha har bir dasturda sahifa hajmining yarmi yo'qoladi, bu katta hajmdagi sahifalar uchun ahamiyatli bo'lishi mumkin. Virtual manzilni jismoniy manzilga aylantirish vaqti, asosan, sahifalar jadvaliga kirish vaqtiga bog'liq. Shu munosabat bilan ular sahifalar jadvalini "tezkor" saqlash moslamalariga joylashtirishga harakat qilishadi. Bu, masalan, kirish vaqtini qisqartirish uchun assotsiativ qidirish va keshlashdan foydalanadigan maxsus registrlar yoki xotiralar to'plami bo'lishi mumkin.
Sahifalarni xotiraga joylashtirish soddalashtirilgan shaklda, sahifalarni diskka yuklamasdan amalga oshirilishi mumkin. Bunday holda, barcha jarayonlarning barcha virtual sahifalari doimiy ravishda RAMda bo'ladi. Sahifalarni tashkil etishning ushbu varianti foydalanuvchiga virtual xotirani taqdim etmasa ham, dasturni qo'shni bo'lmagan joylarga yuklash mumkinligi va shuningdek, virtual sahifalarni yuklashda qoldiqlar hosil bo'lmasligi sababli parchalanishni deyarli yo'q qiladi.
Segmentli tashkil qilish
Sahifali tashkil qilishda, jarayonning virtual manzillar maydoni mexanik ravishda teng qismlarga bo'linadi. Bu dasturning turli qismlariga (segmentlariga) kirish usullarini farqlashga imkon bermaydi va bu xususiyat ko'pincha foydali bo'ladi. Masalan, dasturning kod segmentiga yozish va o'qish operatsiyalarini taqiqlashingiz mumkin va faqat ma'lumotlar segmenti uchun o'qishingiz mumkin. Bundan tashqari, dasturni "mazmunli" qismlarga bo'lish bir segmentni bir necha jarayonlarga ajratishni tubdan amalga oshiradi. Masalan, agar ikkita jarayon bir xil matematik kichik dasturni ishlatsa, unda ushbu kichik dasturning faqat bitta nusxasini RAMga yuklash mumkin.Segmentlangan xotirani ajratish ushbu funktsiyalarni qanday amalga oshirishini ko'rib chiqaylik (4-rasm). Jarayonning virtual manzillar maydoni segmentlarga bo'linadi, ularning o'lchamlari ulardagi ma'lumotlarning semantik ma'nosini hisobga olgan holda dasturchi tomonidan belgilanadi. Bitta segment subroutin, ma'lumotlar to'plami va boshqalar bo'lishi mumkin. Ba'zida dastur segmentatsiyasi kompilyator tomonidan sukut bo'yicha amalga oshiriladi.Jarayon yuklanganda, segmentlarning bir qismi operativ xotiraga joylashtiriladi (bu holda, ushbu segmentlarning har biri uchun operatsion tizim bo'sh xotiraning tegishli qismini qidiradi) va segmentlarning bir qismi disk xotirasida joylashgan. Bitta dasturning segmentlari operativ xotirada qarama-qarshi bo'lmagan qismlarni egallashi mumkin. Yuklash vaqtida tizim jarayon segmentlari jadvalini yaratadi (sahifalar jadvaliga o'xshash), unda har bir segment uchun OXdagi segmentning boshlang'ich fizik manzili, segmentning kattaligi, kirish qoidalari, o'zgartirish belgisi, ushbu segmentga oxirgi marta kirish vaqti va boshqa ma'lumotlar ko'rsatilgan. Agar bir nechta jarayonlarning virtual manzil maydonlarida bir xil segment mavjud bo'lsa, unda ushbu jarayonlar segmentlari jadvallarida ushbu segment bitta nusxada joylashtirilgan operativ xotiraning bir xil qismiga havolalar keltirilgan.
4-rasm. Xotirani segmentlar bo'yicha taqsimlash
Segmentlangan tashkilot bilan ishlaydigan tizim xuddi shunday tartiblangan tashkilot bilan ishlaydigan tizimga o'xshaydi: vaqti-vaqti bilan xotirada kerakli segmentlar yo'qligi sababli uzilishlar yuzaga keladi, agar xotirani bo'shatish kerak bo'lsa, ba'zi segmentlar bo'shatiladi, har safar asosiy xotiraga kirishda virtual manzil jismoniy holatga o'tkaziladi. Bundan tashqari, xotiraga kirishda, ushbu segmentga kerakli turdagi kirishga ruxsat berilgan yoki yo'qligi tekshiriladi.
Segmentlangan xotira tashkilotida virtual manzilni juftlik (g, s) bilan ifodalash mumkin, bu erda g - segment raqami va s - segmentdagi ofset. Fizik manzili segmentlar jadvalida g raqami va s ofset bo'yicha berilgan segmentning boshlang'ich fizik manzilini qo'shish orqali olinadi.
Xotirani ajratishning ushbu usulining kamchiliklari segment darajasida qismlarga ajratish va sahifani tashkil qilishdan ko'ra manzilni sekinroq tarjima qilishdir.
Do'stlaringiz bilan baham: |