|
Linux da fizik xotirani boshqarish
|
bet | 189/222 | Sana | 15.05.2024 | Hajmi | 5,84 Mb. | | #236377 |
Linux da fizik xotirani taqsimlash tizimi xotiraning sahifalari, sahifalar guruhlari va uncha katta bo‘lmagan bloklarini joylashtirish va bo‘shatish bilan shug‘ullanadi. U bajarilayotgan jarayonlarining manzil maydonida aks ettiriladigan virtual xotira uchun qo‘shimcha mexanizmlarga ega. Sahifalarni taqsimlovchi fizik sahifalarni joylashtiradi va bo‘shatadi; u so‘rov bo‘yicha yondosh sahifalar guruhlarini ham joylashtirishi mumkin. Linux ning sahifalar taqsimlovchisi buddy-heap (hamkorlik to‘plami) algoritmini foydalanidigan fizik sahifalarni kuzatish uchun ishlatadi; uning tamoyillari quyidagicha:
taqsimlanishi lozim bo‘lgan xotiraning har bir qismi uning yondosh “hamkori” bilan birga juftlikni tashkil etadi;
ikkala qism-hamkorlar bo‘shatilganida ular birlashadi va ikki barobar kattaroq yondosh hududni tashkil etadi.
Agar xotiraga kichik so‘rovni qondirishga xotiraning kichik maydoni bo‘lmasa, unda mazkur so‘rovni qondirish maqsadida xotiraning kattaroq maydoni ikkita hamkor-maydonga bo‘linadi.
Xotirani Linux ning yadrosi uchun bo‘linish ham statik (drayver tizimni yuklash paytida xotiraning statik hududini zahiralaydi) ham dinamik (sahifalarni taqsimlash yordamida) tarzda amalga oshirish mumkin. Xotirani bo‘linishi 9.4- rasmda ko‘rsatilgan.
9.4- rasm. Linux tizimida xotirani bo‘linishi
Linux dagi virtual xotira tizimi har bir jarayonga ko‘rinadigan manzil maydonni qo‘llab-quvvatlaydi: u talab bo‘yicha virtual xotiraning sahifalarini tashkil etadi va bu sahifalarni diskka yuklashni, hamda kerak bo‘lganda diskdan qayta chiqarishni boshqaradi. Virtual xotiraning menejeri har bir jarayonning manzil maydoniga ikki nuqtai nazarni qo‘llab-quvvatlaydi:
mantiqiy – manzil maydonini boshqarish buyruqlarini qo‘llab-quvvatlash; manzil maydoni kesishmaydigan yondosh hududlar jamlamasi sifatida qaraladi;
fizik – har bir jarayonning sahifalar jadvali yordamida. Virtual xotirani boshqarish uchun quyidagilardan foydalaniladi:
mazkur hududga qayerdan sahifalar olinishini tavsiflovchi qayta chiqarish fayli (backing store);
hududlar odatda fayl tomonidan qo‘llab-quvvatlanadi, yoki umuman qo‘llab-quvvatlanmaydi (xotira talabiga ko‘ra bekor qilinadi);
hududni yozuvga javob harakati (sahifalardan birgalikda foydalanish yoki yozib olish vaqtida nusxa olish - cow).
Yadro ikki vaziyatda yangi virtual manzil maydonni yaratadi:
jarayon exec tizim chaqiruvi bilan yangi dasturni ishga tushiradi;
fork tizim chaqiruvi bilan yangi jarayonni yaratadi.
Yangi dastur bajarilishida jarayonga yangi, bo‘sh manzil maydoni tadqim etiladi; dasturlarni yuklash protseduralari bu manzil maydoni virtual xotiraning hududlari bilan to‘ldiradi. Fork yordamida yangi jarayonni yaratish amaldagi manzil maydonining to‘liq nusxasini yaratishni nazarda tutadi. Yadro ona jarayonning virtual xotirasidan foydalanish deskriptorlaridan nusxa oladi, keyin farzand jarayon uchun sahifalar jadvallarining yangi jamlamasini yaratadi. Ona jarayonning sahifalar jadvallaridan bevosita farzand jarayonning sahifalar jadvallariga nusxalar olinadi. fork bajarilganidan keyin ona va farzand jarayonlar o‘z virtual manzili maydonlarida bir xil fizik sahifalaridan foydalanadi. Agar fizik xotiraning sahifalarini birorta boshqa maqsad uchun kerak bo‘lsa, sahifalarni boshqarish tizimi ularni diskka ko‘chiradi (o‘tkazadi). Sahifalarni boshqarish tizimi ikki qismga bo‘linadi:
qaysi sahifalarni va qachon diskka ko‘chirishni belgilaydigan algoritm;
almashtirish mexanizmi, kerak bo‘lgan hollarda ma’lumotlarni uzatish va fizik xotiraga qayta ko‘chirishni amalda bajaradi.
Linux yadrosi har bir jarayonga, uni o‘ziga tegishli ichki foydalanish uchun doimiy, hudud arxitekturasiga bog‘liq manzil maydonni zahiralaydi. Virtual xotiraning bu hududi ikki hududdan iborat:
statik hudud – tizimdagi xotiraning har bir foydalanadigan fizik sahifa uchun sahifalar jadvalida havolani saqlaydi, shuning uchun yadro kodi bajarilishida fizik manzilni virtual manzilga translyatsiya qilishda ishlatiladi;
zahiralangan qismning qoldig‘i – birorta boshqa maqsadda ishlatilmaydi; uning sahifalar jadvalining elementlari o‘zgartirilishi va xotiraning istalgan sahifalariga yo‘naltirilishi mumkin.
|
| |