17-18-Ma’ruza:Virtual xotira tushunchasi. Virtual xotirani sahifali tashkil etish. FIFO, LRU va “ikkinchi imkoniyat” algoritmlari Virtual xotira tushunchasi. Virtual xotirani sahifali tashkil etish Annotatsiya: Ushbu ma’ruzada quyidagi masalalar ko’rib chiqiladi: virtual xotira kontseptsiyasi, virtual xotirani sahifali tashkil etish; xotirada sahifalarning yo’qligini qayta ishlash (page fault); talab bo’yicha sahifani qayta ishlash; jarayonlarning sahifalardan birgalikda foydalanishi; xotirada akslanuvchi fayllar (memory-mapped files); sahifalarni almashtirish strategiyasi; FIFO va LRU algoritmlari; “ikkinchi imkoniyat” algoritmi; hisoblagich bo’yicha algoritmlar; freymlar ajratish – fiksirlangan va ustivorlik; thrashing; Windows NT va Solaris OTlarida sahifali tashkil etilishi.
Kalit so’zlari: xotirani taqsimlash, adreslarni o’girish, sahifali tashkil etish, thrashing, maydon, fizik xotira, virtual xotira, xotirani tashkil etish, fault, joylashtirish, sahifa jadvali, qiymat, bit, valid, invalid, mantiqiy xotira, havola, joy, uzilish, freym, almashirish strategiyasi, kirish vaqti, qaytarish vaqti, qayta boshlash, nusxalash, Write, COW, fizik sahifa, read, faylni yopish, so’rov satri, FIFO, LRU, RISC, mul’tidasturlash darajasi, SPARC, Windows, service pack, thresholding.
Kirish Virtual xotira – xotirani taqsimlashning keng tarqalgan strategiyasi bo’lib, barcha zamonaviy OTlarda qo’llaniladi. Kengaytirilgan xotirani diskka joylashtirish yo’li bilan fizi xotirani kengaytirish g’oyasiga asoslangan va adreslarni o’tkazish uchun sahifalar (yoki segmantlar) jadvalidan foydalanadi. Quyidagi masalalarni qarab chiqiladi:
· Virtual xotira tushunchasining moslashishi;
· Sahifali tashkil etishga talablar;
· Jarayonni hosil qilish va uning virtual xotira maydoni;
· Sahifalarni almashtirish;
· Freymlar joylashishi;
· Thrashing;
· Turli OT larda virtual xotirani tashkil etishga doir misollar.
Virtual xotira tushunchasining moslashishi Virtual xotira tushunchasi foydalanuvchining mantiqiy xotirasini fizik xotiradan ajratish va mantiqiy xotirani uning obrazini diskda saqlash yo’li bilan kengaytirish g’oyasiga asoslangan.
Dasturlar bajarilish vaqtida uning kodining faqat bir qismini va har bir lahzada dastur murojaat qiladigan ma'lumotlar fizik xotirada joylashtirilishini talab qiladi. Shu sababli, tabiiy ravishda fizik xotiradan ko’proq katta hajmdagi mantiqiy xotirani kengaytirish g’oyasi paydo bo’ladi. Mana shu virtual xotirani tashkil etishning asosiy printsipi hisoblanadi.
Virtual xotira bitta va aynan shu adres maydonini bir nechta jarayonlar birgalikda foydalanishi, umumiy virtual xotira maydonida yengil jarayonlarni yaratish va ularning bajarilishini qo'llab-quvvatlaydi.
Virtual xotira oldingi xotira va jarayonni tashkil etish sxemalariga qaraganda jarayonni yanada samarali yaratishga imkon beradi.
Shuni alohida ta’kidlash kerakki, virtual xotira tushunchasi, xotirani taqsimlashning sahifali yoki segmentli tashkil etish trategiyalariga bevosita bog’liq emas. Virutal xotira turli xil usullardan tatbiq qilinishi mumkin, masalan:
· Talab bo’yicha sahifali tashkil etish (paging on demand); · Talab bo’yicha segmentli tashkil etish (segmentation on demand).
Keltirilgan atamalar virtual xotirani dinamik boshqarish xarakteristikasi belgilab beradi. Talab bo’yicha atamasi agar unga haqiqatan ham foydalanuvchi dasturidan murojaat qilinganda fizik xotirada sahifali va segmentli joylashtirilishini bildiradi. Bundan tashqari, agar virtual xotiraning qayta ishlangan maydonining hajmi (masalan, massiv) juda katta bo'lsa - masalan, 1000 sahifadan iborat bo’lsa, u holda faqat foydalanuvchi dasturi murojaat qiladigan sahifa fizik xotirada joylashgan bo'ladi.
Virtual xotirani boshqarish printsipi 1-rasmda tasvirlangan.
1-rasm. Virtual xotira va fizik xotira.
Tasvirdan ko’rinib turibidiki, virtual xotira fizik xotiraga nisbatan katta hajmga ega bo’ladi. Virtual xotira qismlari va fizik xotira qismlari o’rtasidagi o’zaro muloqot xotira aksi -tizimli jadval (segmentlar, sahifalar va boshq.) orqali amalga oshiriladi. Jarayonning virtual xotira namunasi (tasviri) diskda saqlanadi.
Talab bo’yicha sahifali tashkil etish
Virtual xotirani talabga bo’yicha xotira shaklida amalga oshirish printsipi shundan iboratki, har bir sahifa xotiraga faqat dastur bajarilishi paytida talab qilingan taqdirdagina yuklanadi - unda kirish kodi yoki ma'lumotlar mavjud bo’ladi.
Ushbu yondoshuvning afzalliklari:
· Kiritish-chiqarishning kichik hajmi: xotiraga faqat zarur bo’lgan ma’lumotlarning eng kichik – minimal qiymatlili yuklab olinadi (masalan, katta massivdan bittagina sahifa, ko’p sahifali massiv emas);
· Xotiraning kichik hajmi: ushbu usulda zarur fizik xotiraning minimal qismi sarflanadi;
· Tizimning tezkor reaktsiyasi (javobi): o’tkazilayotgan ma’lumot hajmi kichik bo’lganligi sabali, tizim xotiraga bo’lgan har bir so’rovga o’rtacha tezlikda javob qaytaradi;
· Tizim ko’p sonli foydalanuvchilarga xizmat ko’rsatishi mumkin: murojaat vaqtini va fizik xotirani tejash hisobiga tizim ushbu yondoshuv yordamida ko’proq foydalanuvchi jarayonlariga xizmat ko’rsatish imkoniga ega bo’ladi.
Talab bo’yicha sahifali tashkil etishning asosiy printsiplari:
1. Agar sahifa dastur tomonidan talab qilinadigan bo'lsa, unga dasturdan havola mavjud.
2. Agar havola noto’g’ri bo’lsa (masalan, berilgan raqamdagi sahifa mavjud bo’lmasa), uzilish sodir bo’ladi.
3. Agar talab qilingan sahifa xotirada mavjud bo’lmasa, u holda u xotiraga o’tkaziladi (podkachka qilinadi). Podkachka mexanizmi uzilish orqali amalga oshiriladi (page fault – sahifadagi xatolik).
2-rasmda virtual xotiraning diskdagi joylashishi va uning otkachka va podkachkasi.
2-rasm. Sahifali xotirani uzluksiz disk maydoniga akslantirish.
Sxemadan ko’rinib turibdiki, har bir dastur nuqtai nazaridan qaraganda, uning virtual xotirasi maydoni uzluksizdir. Diskli xotiraning uzluksiz sohasiga akslantiriladi. Xotiradan yuklash – xotiraga yuklash mexnizmi yordamida kerakli vaqt lahzasida virtual xotira sahifasi asosiy xotiraga joylashtiriladi.
"valid/invalid" biti sahifa jadvalining har bir elementi bilan bog'liq, ammo mantiqiy xotirani tashkil qilishdan farqli o'laroq, u biroz boshqacha rol o'ynaydi - bu asosiy xotirada sahifa borligini yoki yo'qligini ko'rsatadi. Bitning qiymati 1 ga yetng bo’lsa, u holda xotirada sahifa bor, qiymati 0 bo’lsa xotirada sahifa yo’q. Dastlabki holatda sahifaning barcha elmentlari uchun valid/invalid bitning qiymati 0 ga o’rnatiladi.
Agar adresni akslantirish paytida valid/invalid bitining qiymati 0 ga teng bo’lib chiqsa, u holda xotirada sahifa yo’qligi sababli uzilish paydo bo’ladi (page fault).
3-rasmda asosiy xotirada barcha sahifalari mavjud bo’lmagan sahifalar jadvaliga misol keltirilgan.