7.7.1. Kirish-chiqarish uchun xotirani boshqarish bloklari
U yoki bu tarzda hal qilinishi kerak bo'lgan yana bir muammo - bu mutlaq manzillardan foydalanadigan to'g'ridan-to'g'ri xotiradan foydalanish, DMA. xotira. Hipervisor bu yerda bo'lishi sizni ajablantirmasa kerak aralashish va DMA ni boshlashdan oldin manzillarni qayta tayinlash. Ammo uskunada allaqachon blok mavjud I/U xotirasini boshqarish (I/U MMU), bu MMU xotirani virtualizatsiya qilgani kabi kirish/chiqishni virtuallashtiradi. I/O MMU mavjud turli xil protsessor arxitekturalari uchun turli shakl va shakllarda. Garchi biz o'zimizni x86 oilasi bilan cheklash, keyin Intel va AMD biroz farq qiladi
texnologiya do'sti. Ammo niyat bir. Ushbu uskuna
DMA muammosini hal qiladi.
Oddiy MMUlar singari, I/U MMU ko'rsatish uchun sahifa jadvallaridan foydalanadi
qurilma foydalanmoqchi bo'lgan xotira manzili (qurilma manzili), yoqilgan
jismoniy manzil. Virtual muhitda gipervisor sahifa jadvallarini o'rnatishi mumkin
DMA ni bajaradigan qurilma xotiraga kirmaydigan tarzda
nomidan ishlaydigan virtual mashinaga tegishli. Virtuallashtirilgan dunyoda qurilma bilan ishlashda I/U MMUlar taklif qiladi
turli imtiyozlar. Qurilma orqali o'tish imkonini beradi
ma'lum bir virtual mashinaga bevosita tayinlanadigan jismoniy qurilma. Umuman olganda, agar qurilma manzil maydoni mos kelsa, ideal bo'ladi
mehmonning jismoniy manzil maydoni bilan. Ammo bu qadar sodir bo'lishi dargumon
sizda I/U MMU bo'lmaydi. Xotirani boshqarish bloki manzillarni aniq uzatish imkonini beradi
qayta tayinlanadi, keyin esa qurilma ham, virtual mashina ham joylashadi
apparat ichaklarida ishlab chiqarilgan manzil tarjimasi mutlaq johillikda.
Qurilmaning izolyatsiyasi virtual mashinaga tayinlangan qurilma boshqa mehmon operatsion tizimlarining yaxlitligini buzmasdan bevosita ushbu virtual mashinaga kirishini ta'minlaydi. Boshqa
Boshqacha qilib aytganda, I/U MMU xuddi shunday tarzda boshqarilmaydigan DMA trafigini oldini oladi
oddiy MMU jarayonlardan nazoratsiz xotiraga kirishni oldini oladi.
Ikkala holatda ham xaritalanmagan sahifalarga kirish halokatga olib keladi. Ammo, afsuski, I/U tarixi DMA va manzillar bilan tugamaydi. Uchun
Rasmni yakunlash uchun biz uzilishlarni virtualizatsiya qilishimiz kerak, shunda uzilishlar sodir bo'ladi
tomonidan chiqarilgan qurilma kerakli virtual mashinaga to'g'ri keladi
xona. Shu munosabat bilan zamonaviy I / O MMUlar remappingni qo'llab-quvvatlaydi
uzilishlar (uzilishni qayta ko'rib chiqish). Qurilma xabar yubordi deylik,
uzilish raqamini e'lon qilish 1. Birinchidan, bu xabar I / O MMU ga boradi,
virtual mashina hozirda ishlayotgan markaziy protsessor uchun mo'ljallangan yangi xabarga aylantirilishi va hatto raqam bilan
ushbu VM tomonidan kutilgan vektor (masalan, 66) ishlatiladi
Remapping jadvalini to'xtatish.
Nihoyat, I/U MMU mavjudligi 32-bitli qurilmalarga 4 Gb chegaradan ortiq xotiraga kirishga yordam beradi. Odatda bunday qurilmalar (masalan,
DMA) 4 GB dan ortiq manzillarga kira olmaydi, lekin I/O MMU osongina kirishi mumkin
qurilmaning pastki manzillarini kattaroq jismoniy manzil maydonidagi har qanday manzilga o'zgartiring.
Do'stlaringiz bilan baham: |