Laboratoriya ishi №28. Virtualized 1R Address Spase Virtual manzil bo'shliqlari
Protsessor xotira joyini o'qiganda yoki yozganda, u virtual manzildan foydalanadi. O'qish yoki yozish operatsiyasining bir qismi sifatida protsessor virtual manzilni jismoniy manzilga tarjima qiladi. Virtual manzil orqali xotiraga kirish quyidagi afzalliklarga ega:
Dastur jismoniy xotirada ulashgan bo'lmagan katta xotira buferiga kirish uchun virtual manzillarning ulashgan diapazonidan foydalanishi mumkin.
Dastur mavjud jismoniy xotiradan kattaroq xotira buferiga kirish uchun bir qator virtual manzillardan foydalanishi mumkin. Jismoniy xotira hajmi kamayganligi sababli, xotira menejeri jismoniy xotira sahifalarini (odatda 4 kilobayt hajmda) disk fayliga
saqlaydi. Ma'lumotlar yoki kod sahifalari kerak bo'lganda jismoniy xotira va disk o'rtasida ko'chiriladi.
Turli jarayonlar tomonidan ishlatiladigan virtual manzillar bir-biridan ajratilgan. Bitta jarayondagi kod boshqa jarayon yoki operatsion tizim tomonidan ishlatiladigan jismoniy xotirani o'zgartira olmaydi.
Jarayon uchun mavjud bo'lgan virtual manzillar oralig'i jarayon uchun virtual manzil maydoni deb ataladi . Har bir foydalanuvchi rejimi jarayoni o'zining shaxsiy virtual manzil maydoniga ega. 32-bitli jarayon uchun virtual manzil maydoni odatda 2 gigabaytlik 0x00000000 dan 0x7FFFFFFF oralig'ida bo'ladi. 64-bitli Windows-dagi 64-bitli jarayon uchun virtual manzil maydoni 0x000'00000000 dan 0x7FFF'FFFFFFFFgacha bo'lgan 128 terabaytlik diapazondir. Bir qator virtual manzillar ba'zan virtual xotira oralig'i deb ataladi . Qo'shimcha ma'lumot olish uchun Xotira va manzil maydoni chegaralariga qarang .
Ushbu diagramma virtual manzil maydonlarining ba'zi asosiy xususiyatlarini ko'rsatadi.
Diagrammada ikkita 64 bitli jarayon uchun virtual manzil bo'shliqlari ko'rsatilgan: Notepad.exe va MyApp.exe. Har bir jarayon 0x000'0000000 dan 0x7FF'FFFFFFFF gacha bo'lgan o'z virtual manzil maydoniga ega. Har bir soyali blok virtual yoki jismoniy xotiraning bir sahifasini (hajmi 4 kilobayt) ifodalaydi. Esda tutingki, Notepad jarayoni 0x7F7'93950000 dan boshlanadigan uchta qo'shni virtual manzil sahifalaridan foydalanadi. Ammo virtual manzillarning o'sha uchta qo'shni sahifalari jismoniy xotiradagi qo'shni bo'lmagan sahifalar bilan taqqoslanadi. Shuni ham yodda tutingki, ikkala jarayon ham 0x7F7'93950000 dan boshlanadigan virtual xotira sahifasidan foydalanadi, lekin bu virtual sahifalar jismoniy xotiraning turli sahifalari bilan taqqoslanadi.
Foydalanuvchi maydoni va tizim maydoni
Notepad.exe va MyApp.exe kabi jarayonlar foydalanuvchi rejimida ishlaydi. Asosiy operatsion tizim komponentlari va ko'plab drayverlar imtiyozli yadro rejimida ishlaydi. Protsessor rejimlari haqida ko'proq ma'lumot olish uchunFoydalanuvchi rejimi vayadro rejimigaqarang . Har bir foydalanuvchi rejimi jarayoni o'zining shaxsiy virtual manzil maydoniga ega, ammo yadro rejimida ishlaydigan barcha kodlar tizim maydoni deb ataladigan yagona virtual manzil maydonini baham ko'radi . Foydalanuvchi rejimi jarayoni uchun virtual manzil maydoni foydalanuvchi maydoni deb ataladi .
32-bitli Windows-da jami mavjud virtual manzil maydoni 2^32 bayt (4 gigabayt) ni tashkil qiladi. Odatda pastki 2 gigabayt foydalanuvchi maydoni uchun, yuqori 2 gigabayt esa tizim maydoni uchun ishlatiladi.
32-bitli Windows-da siz (yuklash vaqtida) foydalanuvchi maydoni uchun 2 gigabaytdan ko'proq joy mavjudligini belgilashingiz mumkin. Natijada, tizim maydoni uchun kamroq virtual manzillar mavjud. Siz foydalanuvchi maydoni hajmini 3 gigabaytgacha oshirishingiz mumkin, bu holda tizim maydoni uchun faqat 1 gigabayt mavjud. Foydalanuvchi maydoni hajmini oshirish uchunBCDEdit /set increaseuserva dan foydalaning.
64-bitli Windows-da virtual manzil maydonining nazariy miqdori 2^64 baytni (16 ekzabayt) tashkil qiladi, lekin aslida 16-ekzabayt diapazonning faqat kichik bir qismi ishlatiladi.
Foydalanuvchi rejimida ishlaydigan kod foydalanuvchi maydoniga kirish huquqiga ega, lekin tizim maydoniga kirish imkoniga ega emas. Ushbu cheklash foydalanuvchi rejimi kodini himoyalangan operatsion tizim ma'lumotlar tuzilmalarini o'qish yoki o'zgartirishni oldini oladi. Yadro rejimida ishlaydigan kod foydalanuvchi maydoniga ham, tizim maydoniga ham kirish huquqiga ega. Ya'ni yadro rejimida ishlaydigan kod tizim maydoniga va joriy foydalanuvchi rejimi jarayonining virtual manzil maydoniga kirish huquqiga ega.
Yadro rejimida ishlaydigan drayverlar foydalanuvchi maydonidagi manzillardan to'g'ridanto'g'ri o'qish yoki ularga yozishda juda ehtiyot bo'lishlari kerak. Ushbu stsenariy nima uchun ekanligini ko'rsatadi.
Foydalanuvchi rejimi dasturi qurilmadan ba'zi ma'lumotlarni o'qish uchun so'rovni boshlaydi. Dastur ma'lumotlarni qabul qilish uchun buferning boshlang'ich manzilini beradi.
Yadro rejimida ishlaydigan qurilma drayveri dasturi o'qish jarayonini boshlaydi va boshqaruvni chaqiruvchiga qaytaradi.
Keyinchalik qurilma o'qish jarayoni tugallanganligini aytish uchun hozirda ishlayotgan har qanday ipni to'xtatadi. Uzilish ixtiyoriy jarayonga tegishli bo'lgan ushbu ixtiyoriy oqimda ishlaydigan yadro rejimidagi drayverlar tartiblari tomonidan boshqariladi.
Bu vaqtda drayver 1-bosqichda taqdim etilgan foydalanuvchi rejimi dasturi tomonidan taqdim etilgan boshlang‘ich manzilga ma’lumotlarni yozmasligi kerak. Bu manzil so‘rovni boshlagan jarayonning virtual manzil maydonida joylashgan bo‘lib, u katta ehtimol bilan bir xil emas. joriy jarayon.
Displeyli hovuz va sahifasiz hovuz
Foydalanuvchi maydonida barcha jismoniy xotira sahifalari kerak bo'lganda disk fayliga ajratilishi mumkin. Tizim maydonida ba'zi jismoniy sahifalarni sahifalash mumkin, boshqalari esa mumkin emas. Tizim maydonida xotirani dinamik ravishda taqsimlash uchun ikkita hudud mavjud: sahifalangan hovuz va sahifasiz hovuz.
Sahifalashtirilgan pulda ajratilgan xotira kerak bo'lganda disk fayliga sahifalash mumkin. Sahifasiz hovuzda ajratilgan xotirani hech qachon disk fayliga sahifalashtirib bo'lmaydi.