Xotirani boshqarish bo'limi - Memory management unit

Bu 68451 MMU dan foydalanish mumkin Motorola 68010

A xotirani boshqarish bo'limi (MMU), ba'zan chaqiriladi xotirali xotira boshqaruvi (PMMU), a kompyuter texnikasi hammasi bo'lgan birlik xotira o'z-o'zidan o'tib ketgan, asosan tarjimasini amalga oshiradigan ma'lumotnomalar virtual xotira manzillari ga jismoniy manzillar.

MMU samarali ishlaydi virtual xotira boshqarish, bir vaqtning o'zida boshqarish xotirani himoya qilish, kesh boshqaruv, avtobus hakamlik sudi va oddiyroq kompyuter arxitekturalarida (ayniqsa 8-bit tizimlar), bank kommutatsiyasi.

Umumiy nuqtai

MMU ishining sxemasi[1]:186 ff.

Zamonaviy MMUlar odatda virtualni ajratadilar manzil maydoni (protsessor tomonidan ishlatiladigan manzillar diapazoni) ichiga sahifalar, har birining kattaligi 2 ga teng, odatda bir nechta kilobayt, lekin ular juda katta bo'lishi mumkin. Manzilning pastki qismlari (sahifadagi ofset) o'zgarishsiz qoldiriladi. Yuqori manzil bitlari virtual sahifa raqamlari.[2]

Sahifa jadvalidagi yozuvlar

Ko'pgina MMUlarda "" deb nomlangan elementlarning xotiradagi jadvali ishlatiladi.sahifalar jadvali bitta, o'z ichiga olgan "sahifalar jadvalini kiritish "Virtual sahifa raqamlarini asosiy xotiradagi jismoniy sahifa raqamlariga solishtirish uchun har bir sahifaga (PTE). PTE-larning assotsiativ keshi a tarjima ko'rinishidagi bufer (TLB) va virtual manzil xaritada har safar asosiy xotiraga kirish zarurligini oldini olish uchun ishlatiladi. Boshqa MMUlarda shaxsiy xotira massivi bo'lishi mumkin[3] yoki sahifalar jadvali yozuvlari to'plamini saqlaydigan registrlar. To'liq jismoniy manzilni berish uchun fizik sahifa raqami sahifa ofset bilan birlashtiriladi.[2]

Shuningdek, PTE sahifaga ("" ga yozilganligi yoki yozilmaganligi to'g'risida ma'lumot kiritishi mumkin.iflos bit "), qachon u oxirgi marta ishlatilgan bo'lsa (" erishilgan bit ", a yaqinda ishlatilgan (LRU) sahifani almashtirish algoritmi ), qanday jarayonlar (foydalanuvchi rejimi yoki nazoratchi rejimi ) o'qishi va yozishi mumkin va shunday bo'lishi kerak keshlangan.

Ba'zan, PTE virtual sahifaga kirishni taqiqlaydi, ehtimol jismoniy bo'lmaganligi sababli tasodifiy kirish xotirasi ushbu virtual sahifaga ajratilgan. Bunday holda, MMU signallari a sahifa xatosi protsessorga. The operatsion tizim (OS) keyin vaziyatni, ehtimol, uning ramkasini topishga urinib ko'radi Ram va uni so'ralgan virtual manzilga moslashtirish uchun yangi PTE-ni o'rnating. Hech qanday RAM bo'sh bo'lmasa, ba'zi bir almashtirishni ishlatib, mavjud sahifani ("jabrlanuvchi" nomi bilan tanilgan) tanlash kerak bo'lishi mumkin algoritm va uni diskka saqlang ("deb nomlangan jarayon"xotira Ba'zi MMUlarda PTE etishmasligi ham bo'lishi mumkin, bu holda OS yangi xaritalash uchun uni bo'shatishi kerak bo'ladi.[2]

MMU, shuningdek, noqonuniy kirishda xatoliklarni keltirib chiqarishi mumkin yaroqsiz sahifadagi xatolar noqonuniy yoki mavjud bo'lmagan xotiraga kirish paytida, mos ravishda, olib keladi segmentatsiya xatosi yoki avtobus xatosi operatsion tizim tomonidan boshqariladigan sharoitlar.

Foyda

VLSI VI475 MMU "Apple HMMU"
dan Macintosh II
bilan ishlatilgan Motorola 68020

Ba'zi hollarda, sahifaning xatosi a ni ko'rsatishi mumkin dasturiy ta'minotdagi xato, yordamida oldini olish mumkin xotirani himoya qilish MMU ning asosiy afzalliklaridan biri sifatida: operatsion tizim uni ma'lum bir dasturga kira olmasligi kerak bo'lgan xotiraga kirishni taqiqlab, noto'g'ri dasturlardan himoya qilish uchun ishlatishi mumkin. Odatda, operatsion tizim har bir dasturga o'ziga xos virtual manzil maydonini tayinlaydi.[2]

MMU ham muammoni yumshatadi parchalanish xotira. Xotira bloklari ajratilgandan va bo'shatilgandan so'ng, bo'sh xotira bo'linib (to'xtab qolishi) mumkin, shuning uchun eng katta tutashgan bo'sh xotira bloki umumiy hajmdan ancha kichik bo'lishi mumkin. Virtual xotira bilan tutashgan virtual manzillar diapazoni fizikaviy xotiraning bir-biriga yaqin bo'lmagan bir nechta bloklari bilan taqqoslanishi mumkin; bu qo'shni bo'lmagan taqsimlash afzalliklaridan biridir xotira.[2]

Ba'zilarida erta mikroprotsessor dizaynlar, xotirani boshqarish alohida tomonidan amalga oshirildi integral mikrosxema kabi VLSI texnologiyasi VI475 (1986), the Motorola 68851 (1984) bilan ishlatilgan Motorola 68020 CPU Macintosh II yoki Z8015 (1985)[4] bilan ishlatilgan Zilog Z8000 protsessorlar oilasi. Keyinchalik mikroprotsessorlar (masalan Motorola 68030 va Zilog Z280 ) protsessor bilan birga MMU ni xuddi shunday integral mikrosxemaga joylashtirdi Intel 80286 va keyinroq x86 mikroprotsessorlar.

Ushbu maqola odatda sahifalarga asoslangan zamonaviy MMU-larga qaratilgan bo'lsa-da, dastlabki tizimlar shunga o'xshash tushunchani ishlatgan asosiy cheklash manzili yanada rivojlangan segmentatsiya. Ular vaqti-vaqti bilan zamonaviy me'morchilikda ham mavjud. The x86 arxitekturasi diskda disk raskadrovka o'rniga segmentatsiyani ta'minladi 80286, va ikkala paging va segmentatsiyani ta'minlaydi 80386 va undan keyingi protsessorlar (garchi segmentatsiyadan foydalanish 64-bitli operatsiyada mavjud bo'lmasa ham).

Misollar

Aksariyat zamonaviy tizimlar xotirani quyidagi sahifalarga ajratadi 4-64 KB hajmida, ko'pincha katta sahifalarni ishlatish qobiliyatiga ega 2 MB yoki 1 GB hajmi bo'yicha (ko'pincha ikkala variant ham mumkin). Sahifa tarjimalari a tarjima ko'rinishidagi bufer (TLB). Ba'zi tizimlar, asosan eskirgan RISC dizaynlar, tuzoq TLB-da sahifa tarjimasi topilmaganda OS-ga. Aksariyat tizimlar apparatlarga asoslangan daraxt yurish moslamasidan foydalanadi. Ko'pgina tizimlar MMU-ni o'chirishga imkon beradi, ammo ba'zilari OS kodiga tushganda MMU-ni o'chirib qo'yishadi.

VAX

VAX sahifalar 512 baytni tashkil etadi, bu juda kichik. OS bir nechta sahifalarni xuddi bitta kattaroq sahifa kabi ko'rib chiqishi mumkin. Masalan, Linux VAX guruhlarida sakkiz sahifa birgalikda. Shunday qilib, tizim mavjud deb hisoblanadi 4 KB sahifalar. VAX xotirani har birini aniq belgilangan to'rt mintaqaga ajratadi 1 GB hajmi bo'yicha. Ular:

P0 bo'sh joy
Umumiy maqsadlar uchun protsess uchun xotira, masalan, uyumlar uchun ishlatiladi.
P1 maydoni
(Yoki boshqarish maydoni), u ham har bir jarayon uchun mo'ljallangan va odatda rahbar, ijrochi, yadro, foydalanuvchi vayronalar va operatsion tizim tomonidan boshqariladigan jarayonlar davomida boshqariladigan boshqa tuzilmalar.
S0 bo'shliq
(Yoki tizim maydoni), bu barcha jarayonlar uchun global bo'lib, operatsion tizim kodlari va ma'lumotlarini, sahifalangan yoki yo'qligidan qat'i nazar, saqlaydi, shu jumladan sahifalar jadvallari.
S1 bo'shliq
Qaysi biri ishlatilmayapti va "Xavfsizdir Raqamli ".

Sahifalar jadvallari katta chiziqli massivlardir. Odatda, manzillar mumkin bo'lgan diapazonning ikkala uchida ishlatilganda, bu juda isrofgar bo'ladi, ammo dasturlarning sahifalar jadvali o'zi yadroning xotirali xotirasida saqlanadi. Shunday qilib, samarali ikki darajali mavjud daraxt, foydalanilmayotgan sahifalar jadvalidagi yozuvlarda juda ko'p joyni yo'qotmasdan, dasturlarning xotirasi siyrak joylashishiga imkon berish. VAX MMU an etishmasligi bilan ajralib turadi kirilgan bit. Disk xotira dasturini amalga oshiradigan operatsion tizimlar, agar ular samarali ishlashi uchun, kirilgan bitni taqlid qilishning biron bir usulini topishi kerak. Odatda, operatsion tizim vaqti-vaqti bilan sahifalarni xaritadan chiqaradi, shunda mavjud bo'lmagan xatolar yordamida operatsion tizimga kirish bitini o'rnatishi mumkin.

ARM

ARM arxitekturasi asoslangan dastur protsessorlari ARM virtual xotira tizimi arxitekturasi tomonidan belgilangan MMUni amalga oshiradi. Hozirgi me'morchilik belgilaydi PTElar tasvirlash uchun 4 KB va 64 KB sahifalar, 1 MB bo'limlari va 16 MB super bo'limlar; eski versiyalar ham aniqlangan a 1 KB kichik sahifa. ARM foydalanayotgan bo'lsa, ikki darajali sahifalar jadvalidan foydalanadi 4 KB va 64 KB sahifalar yoki faqat bitta darajadagi sahifalar jadvali 1 MB bo'limlari va 16 MB bo'limlar.

TLB yangilanishlari sahifalar jadvali yurish apparati tomonidan avtomatik ravishda amalga oshiriladi. PTE-larga imtiyoz, keshga oid ma'lumot va boshqalarga asoslangan o'qish / yozish uchun kirish huquqi kiradi NX bit va xavfsiz bo'lmagan bit.[5]

IBM System / 360 Model 67, IBM System / 370 va vorislari

The IBM System / 360 Model 67 1965 yil avgustda taqdim etilgan bo'lib, unga dinamik manzil tarjimasi (DAT) qutisi deb nomlangan MMU kiritilgan.[6][7] U kirish va iflos bitlarni sahifalar jadvalidan tashqarida saqlashning g'ayrioddiy xususiyatiga ega (to'rtta bit bilan birga) himoya kaliti barcha S / 360 protsessorlari uchun). Ular virtual xotiraga emas, balki jismoniy xotiraga murojaat qilishadi va ularga maxsus ko'rsatmalar orqali murojaat qilishadi.[7] Bu operatsion tizim uchun xarajatlarni qisqartiradi, aks holda kirilgan va iflos bitlarni sahifalar jadvallaridan jismonan yo'naltirilgan ma'lumotlar tarkibiga etkazish kerak bo'ladi. Bu qiladi OS darajasida virtualizatsiya, keyinchalik chaqirildi paravirtuallashtirish, Sekinroq.

1972 yil avgustdan boshlab IBM System / 370 shunga o'xshash MMU-ga ega, garchi u dastlab System / 360 Model 67-ning 32-bitli virtual manzil maydonini emas, balki faqat 24-bitli virtual manzil maydonini qo'llab-quvvatlagan bo'lsa-da. Shuningdek, kirilgan va iflos bitlarni sahifalar jadvali tashqarisida saqlaydi. 1983 yil boshida System / 370-XA arxitekturasi virtual manzil maydonini 31 bitgacha kengaytirdi va 2000 yilda 64-bit z / Arxitektura joriy etildi, manzil maydoni 64 bitgacha kengaytirildi; ular kirilgan va iflos bitlarni sahifalar stoli tashqarisida saqlashni davom ettirmoqdalar.

Alpha

The Alpha protsessor xotirani ikkiga ajratadi 8 KB sahifalar. TLB o'tkazib yuborilgandan so'ng, past darajali proshivka mashina kodi (bu erda deyiladi PALkod ) uch darajali daraxt tuzilgan sahifalar jadvalida yuradi. Manzillar quyidagicha taqsimlanadi: ishlatilmaydigan 21 bit, daraxtning ildiz darajasini indeksatsiya qilish uchun 10 bit, daraxtning o'rta darajasini indeksatsiya qilish uchun 10 bit, daraxtning barg sathini indeksatsiya qilish uchun 10 bit va o'tadigan 13 bit. o'zgartirishsiz jismoniy manzilga. To'liq o'qish / yozish / bajarish uchun ruxsat bitlari qo'llab-quvvatlanadi.

MIPS

The MIPS arxitekturasi TLB-da bitta-64 tagacha yozuvlarni qo'llab-quvvatlaydi. TLB yozuvlari soni sintezdan oldin CPU konfiguratsiyasida sozlanishi mumkin. TLB yozuvlari ikki tomonlama. Har bir TLB yozuvi virtual sahifaning (VPN2) raqamini sahifaning bir qismi bo'lmagan virtual manzilning eng kam ahamiyatli qismiga qarab (PFN0 yoki PFN1) ikkita sahifa ramkasidan biriga (PFN0 yoki PFN1) mos keladi. niqob. Ushbu bit va sahifa maskalari bitlari VPN2-da saqlanmaydi. Har bir TLB yozuvining har qanday qiymati bo'lishi mumkin bo'lgan o'z sahifa hajmi mavjud 1 KB ga 256 MB to'rtga ko'paytiriladi. TLB yozuvidagi har bir PFN keshlash xususiyati, iflos va yaroqli holat bitiga ega. VPN2-da global status biti va operatsion tizim tayinlangan identifikatori mavjud, agar u global status biti nolga o'rnatilgan bo'lsa, TLB kirishining virtual manzilida qatnashadi. PFN jismoniy manzilni sahifa maskalari bitlarisiz saqlaydi.

TLB-da to'ldirilgan istisno, TLB-da xaritalangan virtual manzilga mos keladigan yozuvlar bo'lmaganida hosil bo'ladi. Agar match mavjud bo'lsa, lekin yozuv yaroqsiz deb belgilangan bo'lsa, TLB bekor qilingan istisno hosil bo'ladi. TLB o'zgartirilgan istisno, agar do'kon ko'rsatmasi xaritada ko'rsatilgan manzilga murojaat qilsa va mos yozuvning iflos holati o'rnatilmagan bo'lsa. Agar TLB istisnosi, TLB istisnosini qayta ishlashda yuzaga kelsa, ikkilamchi TLB istisnosi bo'lsa, u o'ziga yuboriladi istisno ishlovchisi.

MIPS32 va MIPS32r2 32 bit virtual manzil maydonini va 36 bitgacha jismoniy manzil maydonini qo'llab-quvvatlaydi. MIPS64 64 bitgacha virtual manzil maydonini va 59 bitgacha jismoniy manzil maydonini qo'llab-quvvatlaydi.

Quyosh 1

Asl nusxa Quyosh 1 a bitta taxtali kompyuter atrofida qurilgan Motorola 68000 mikroprotsessor va 1982 yilda taqdim etilgan. Bu protsessorda ishlaydigan bir nechta jarayonlar uchun manzil tarjimasi, xotirani himoya qilish, xotira almashinuvi va xotirani taqsimlashni ta'minlaydigan original Sun 1 xotirani boshqarish blokini o'z ichiga oladi. Protsessorning shaxsiy ichki RAMga barcha kirishi, tashqi Multibus xotira, bortda I / O va Multibus I / O MMU orqali o'tadi, bu erda manzil tarjimasi va himoyasi bir xilda amalga oshiriladi. MMU protsessor kartasidagi apparatda amalga oshiriladi.

MMU kontekst registridan iborat, a segment xarita va sahifa xaritasi. CPU-dan virtual manzillar segment xaritasi orqali oraliq manzillarga, ular o'z navbatida sahifalar xaritasi orqali jismoniy manzillarga tarjima qilinadi. Sahifa hajmi 2 KB va segment hajmi 32 KB bu segment uchun 16 ta sahifani beradi. Bir vaqtning o'zida 16 ta kontekstni xaritalash mumkin. Kontekst uchun maksimal mantiqiy manzil maydoni 1024 sahifa yoki 2 MB. Bir vaqtning o'zida xaritalash mumkin bo'lgan maksimal jismoniy manzil ham 2 MB.

Kontekst registri ko'p vazifali operatsion tizimda muhim ahamiyatga ega, chunki u protsessorga barcha tarjima holati ma'lumotlarini qayta yuklamasdan jarayonlar o'rtasida o'tishga imkon beradi. 4-bitli kontekst registri nazoratchi nazorati ostida segment xaritasining 16 bo'limi o'rtasida almashinishi mumkin, bu esa 16 kontekstni bir vaqtning o'zida xaritalashga imkon beradi. Har bir kontekstning o'ziga xos virtual manzil maydoni mavjud. Virtual manzil maydonini va kontekstlararo aloqalarni almashish turli xil kontekstdagi segment yoki sahifa xaritalariga bir xil qiymatlarni yozish orqali ta'minlanishi mumkin. Qo'shimcha kontekstlarni segment xaritasini kontekst keshi sifatida ko'rib chiqish va eskirgan kontekstlarni eng kam ishlatilgan asosda almashtirish orqali boshqarish mumkin.

Kontekst registri foydalanuvchi va nazoratchi davlatlari o'rtasida farq qilmaydi. Interruptlar va tuzoqlar kontekstni almashtirmaydi, buning uchun barcha amaldagi uzilish vektorlari har doim kontekstning 0-sahifasida va shuningdek, amaldagi rahbarlar to'plamida xaritada bo'lishini talab qiladi.[8]

PowerPC

Yilda PowerPC G1, G2, G3 va G4 sahifalari odatdagidek 4 KB. TLB o'tkazib yuborilgandan so'ng, standart PowerPC MMU bir vaqtning o'zida ikkita qidiruvni boshlaydi. Bitta qidiruv manzilni to'rt yoki sakkizta ma'lumotlar bloklari manzillarini tarjima qilish (DBAT) registrlaridan biri yoki mos ravishda to'rt yoki sakkizta ko'rsatmalar bloklari manzillarini tarjima qilish registrlari (IBAT) bilan moslashtirishga harakat qiladi. BAT registrlari xotiraning chiziqli qismlarini kattaroq hajmda xaritalashtirishi mumkin 256 MB, va odatda OS yadrosining o'zi foydalanishi uchun manzil maydonining katta qismlarini xaritalash uchun OS tomonidan ishlatiladi. Agar BATni qidirish muvaffaqiyatli bo'lsa, boshqa qidiruv to'xtatiladi va e'tiborga olinmaydi.

Ushbu oiladagi barcha protsessorlar tomonidan to'g'ridan-to'g'ri qo'llab-quvvatlanmaydigan boshqa qidiruv "" deb nomlanganteskari sahifalar jadvali, "bu TLB-ning chipdan tashqari kengaytmasi vazifasini bajaradi. Birinchidan, manzilning yuqori to'rtta biti 16 bittasini tanlash uchun ishlatiladi segment registrlar. Keyin segment registridan 24 bit 52 bitli manzilni ishlab chiqaradigan to'rtta bitni almashtiradi. Segment registrlaridan foydalanish bir nechta jarayonlarni bir xil bo'lishiga imkon beradi xash jadvali.

52-bitli manzil xeshlangan, keyin chipdan tashqari jadvalda indeks sifatida ishlatiladi. U erda sakkiz sahifali jadval yozuvlari guruhi mos keladigan skanerdan o'tkaziladi. Agar haddan tashqari ortiqcha narsa tufayli hech kim mos kelmasa xash to'qnashuvlari, protsessor biroz boshqacha qilib yana urinib ko'radi xash funktsiyasi. Agar bu ham bajarilmasa, protsessor operatsion tizimga tushib qoladi (MMU o'chirilgan), shunda muammo hal qilinishi mumkin. Yangi yozuv uchun joy ajratish uchun OS xash jadvalidagi yozuvni bekor qilishi kerak. Operatsion tizim odatdagidek daraxtga o'xshash sahifalar jadvalidan yoki sekinroq va bo'sh joyni tejashga imkon beradigan har bir xaritalash ma'lumotlari tuzilmalaridan yangi yozuv yaratishi mumkin. Qo'llab-quvvatlash ijro etilmaydi boshqarish segment registrlarida, ga olib keladi 256 MB donadorlik.

Ushbu dizayndagi asosiy muammo yomon keshning joylashuvi xash funktsiyasidan kelib chiqadi. Daraxtlarga asoslangan dizaynlar, qo'shni sahifalar uchun sahifalar jadvalidagi yozuvlarni qo'shni joylarda joylashtirish orqali bunga yo'l qo'ymaydi. PowerPC-da ishlaydigan operatsion tizim ushbu muammoni kamaytirish uchun xash jadvali hajmini minimallashtirishi mumkin.

Jarayonning sahifalar jadvalidagi yozuvlarni olib tashlash ham biroz sust. OS bu segmentni kechiktirish uchun segment qiymatlarini qayta ishlatishdan qochishi mumkin yoki har bir jarayon uchun xash jadvallar bilan bog'liq bo'lgan xotira chiqindilariga duch kelishi mumkin. G1 chiplari sahifalar jadvali yozuvlarini qidirmaydi, lekin ular xesh hosil qiladi, chunki OS dasturiy ta'minot orqali standart xesh jadvalini qidiradi. OS TLB-ga yozishi mumkin. G2, G3 va erta G4 chiplari xash jadvalini qidirish uchun qo'shimcha qurilmalardan foydalanadi. Eng so'nggi chiplar operatsion tizimga ikkala usulni tanlashga imkon beradi. Buni ixtiyoriy qiladigan yoki umuman qo'llab-quvvatlamaydigan mikrosxemalarda OS faqat daraxtga asoslangan sahifalar jadvalidan foydalanishni tanlashi mumkin.

IA-32 / x86

The x86 arxitektura juda uzoq vaqt davomida rivojlanib, hatto OS kodlari uchun ham to'liq dasturiy ta'minot mosligini saqlab qoldi. Shunday qilib, MMU juda murakkab, turli xil ish rejimlari mavjud. An'anaviy normal ishlash 80386 CPU va uning izdoshlari (IA-32 ) bu erda tasvirlangan.

CPU birinchi navbatda xotirani ikkiga ajratadi 4 KB sahifalar. Segment registrlari, yoshi kattaroq 8088 va 80286 MMU konstruktsiyalari zamonaviy operatsion tizimlarda qo'llanilmaydi, faqat bitta muhim istisno: kirish ip - ilovalar uchun maxsus ma'lumotlar yoki FS va GS segment registrlaridan aniq foydalanish bilan bajariladigan OS yadrolari uchun protsessorga xos ma'lumotlar. Barcha xotiraga kirish segment kodini o'z ichiga oladi, bajarilayotgan kod bo'yicha tanlanadi. Segment registri jadvalga indeks vazifasini bajaradi, bu esa virtual manzilga ofset qo'shilishini ta'minlaydi. FS yoki GS dan foydalanishdan tashqari, OS ofset nolga teng bo'lishini ta'minlaydi.

Ofset qo'shilgandan so'ng, manzil 32 bitdan katta bo'lmagan holda maskalanadi. Natija daraxt tuzilgan sahifalar jadvali orqali ko'rib chiqilishi mumkin, bunda manzil bitlari quyidagicha bo'linadi: daraxt novdasi uchun 10 bit, novdaning barglari uchun 10 bit va eng past 12 bit to'g'ridan-to'g'ri natijaga ko'chirildi. Kabi ba'zi operatsion tizimlar OpenBSD uning bilan W ^ X xususiyati va Linux bilan Exec Shield yoki PaX yamalar, shuningdek, kodlar segmentining uzunligini cheklashi mumkin, bu CS registri tomonidan belgilab qo'yilgan bo'lib, manzil maydonining o'zgartirilishi mumkin bo'lgan hududlarida kodning bajarilishini taqiqlashi mumkin.

Bilan kiritilgan MMUning kichik tahrirlari Pentium juda katta ruxsat bergan 4 MB daraxtning pastki sathidan o'tish orqali sahifalar (bu natijalar uchun to'g'ridan-to'g'ri qolgan 10 + 12 bitlar bilan sahifa iyerarxiyasining birinchi darajasini indeksatsiya qilish uchun 10 bit qoldiradi). Bilan kiritilgan MMUning kichik tahrirlari Pentium Pro tanishtirdi jismoniy manzilni kengaytirish (PAE) xususiyati, natijada 36-bitli fizik-manzillarni 3 + 2 + 9 + 9 bitli uch darajali sahifalar jadvallari va 12 ta eng past bitlar to'g'ridan-to'g'ri natijaga ko'chiriladi. Katta sahifalar (2 MB) daraxtning pastki sathidan o'tish orqali ham mavjud (natijada ikki darajali jadval iyerarxiyasi uchun 2 + 9 bit va qolgan 9 + 12 eng past bitlar to'g'ridan-to'g'ri ko'chiriladi). Bundan tashqari, sahifa atributlari jadvali kichik protsessor stolida bir nechta yuqori bitlarni qidirib, keshlash xususiyatiga ruxsat berdi.

Ijro etilmaydi qo'llab-quvvatlash dastlab faqat segmentlar bo'yicha taqdim etilib, foydalanishni juda noqulay qildi. So'nggi paytdagi x86 chiplari PAE rejimida har bir sahifada bajarilmaslikni ta'minlaydi. The W ^ X, Exec Shield va PaX Yuqorida tavsiflangan mexanizmlar NX bitiga ega bo'lmagan x86 protsessorli mashinalarda ishlashning yo'qolishi va mavjud manzil maydonining kamayishi bilan kod segmentining uzunligini belgilash orqali bajarilmaydigan qo'llab-quvvatlashni taqlid qiladi.

x86-64

Geterogen tizim arxitekturasi (HSA) xaritalash fokuslarini va ma'lumotlarni nusxalashni eskirgan holda CPU, GPU va DSP-lar uchun birlashtirilgan virtual manzil maydonini yaratadi.

x86-64 x86-ning 64-bitli kengaytmasi bo'lib, deyarli foydasiga segmentatsiyani olib tashlaydi tekis xotira modeli deyarli barcha operatsion tizimlar tomonidan 386 yoki undan yangi protsessorlar uchun foydalaniladi. Uzoq rejimda FS va GS segmentlari bundan mustasno, barcha segmentlarni almashtirish hisobga olinmaydi. Bilan ishlatilganda 4 KB sahifalar, jadvallar daraxti uchta o'rniga to'rt darajaga ega.

Virtual manzillar quyidagicha bo'linadi: 16 bit ishlatilmagan, to'rtta daraxt sathi uchun har biri to'qqiz bit (jami 36 bit) va natijaga to'g'ridan-to'g'ri ko'chirilgan 12 ta eng past bit. Bilan 2 MB sahifalar jadvalida faqat uchta sath mavjud, jami 27 bit bitli pacingda va 21 bit ofsetda ishlatilgan. Ba'zi yangi protsessorlar ham qo'llab-quvvatlaydi 1 GB Ikki darajadagi disk xotira va 30 bit ofset[9]

CPUID yoki yo'qligini aniqlash uchun ishlatilishi mumkin 1 GB sahifalar qo'llab-quvvatlanadi. Uchala holatda ham 16 eng yuqori bitlar 48-bitga, boshqacha aytganda, pastga teng bo'lishi talab qilinadi 48 bit bor belgisi kengaytirilgan yuqoriroq bitlarga. Bu kelajakda mos keladigan moslikni buzmasdan, manzil doirasini kelajakda kengaytirishga imkon berish uchun qilingan. Sahifa jadvalining barcha darajalarida, jadval jadvaliga yozuv a ni o'z ichiga oladi ijro etilmaydi bit.

Unisys MCP tizimlari (Burroughs B5000)

The Burrouz B5000 1961 yildan boshlab virtual xotirani qo'llab-quvvatlaydigan birinchi tijorat tizimi ( Atlas ), garchi unda MMU yo'q bo'lsa ham [10] U MMU ning ikkita funktsiyasini - virtual xotira manzillarini va xotirani himoya qilishni - boshqa me'moriy yondashuv bilan ta'minlaydi.

Birinchidan, MMU o'rniga, virtual xotira manzillarini xaritalashda MCP tizimlar tavsiflovchi asoslangan. Har bir ajratilgan xotira blokiga blokning xususiyatlari (ya'ni hajmi, manzili va xotirada mavjudligini) o'z ichiga olgan asosiy tavsiflovchi beriladi. O'qish yoki yozish uchun blokga kirish uchun so'rov yuborilganda, apparat uning mavjudligini identifikatorda mavjudlik biti (pbit) orqali tekshiradi.

Pbit 1 blok mavjudligini bildiradi. Bunday holda blokka deskriptorda jismoniy manzil orqali kirish mumkin. Agar pbit nolga teng bo'lsa, blokni mavjud qilish uchun MCP (operatsion tizim) uchun uzilish hosil bo'ladi. Agar manzil maydoni nolga teng bo'lsa, bu ushbu blokga birinchi kirish va u ajratilgan (init pbit). Agar manzil maydoni nolga teng bo'lmasa, u ilgari chiqarilgan blokning disk manzili, shuning uchun blok diskdan olinadi va pbit biriga o'rnatiladi va fizik xotira manzili blokga ishora qilish uchun yangilanadi xotirada (boshqa pbit). Bu identifikatorlarni MMU tizimidagi varaq-jadval yozuviga tenglashtiradi. Tizimning ishlashini pbit soni orqali kuzatib borish mumkin. Init pbitlari dastlabki ajratmalarni bildiradi, ammo boshqa pbitlarning yuqori darajasi tizimning buzilishi mumkinligini ko'rsatadi.

Shuning uchun barcha xotira ajratish to'liq avtomatik (zamonaviy tizimlarning xususiyatlaridan biri)[11]) va ushbu mexanizmdan tashqari bloklarni ajratishning hech qanday usuli yo'q. Kabi qo'ng'iroqlar mavjud emas malloc yoki dealloc, chunki xotira bloklari ham avtomatik ravishda tashlanadi. Sxema ham dangasa, chunki blok unga havola qilinmaguncha ajratilmaydi. Xotira deyarli to'lgan bo'lsa, MCP ishchi to'plamni tekshiradi, siqishni sinab ko'radi (tizim segmentlanganligi sababli, diskda emas), faqat o'qish uchun ajratilgan qismlarni taqsimlaydi (masalan, asl nusxasidan tiklanishi mumkin bo'lgan kod segmentlari) va oxirgi chora, axloqsiz ma'lumotlar segmentlarini diskka tarqatish.

B5000 MMU funktsiyasini ta'minlashning yana bir usuli - bu himoya qilishdir. Barcha kirishlar identifikator orqali amalga oshirilganligi sababli, apparat barcha kirishlar chegaralarida ekanligini tekshirishi mumkin va agar yozilgan bo'lsa, jarayon yozish uchun ruxsatga ega. MCP tizimi tabiiy ravishda xavfsizdir va shuning uchun ushbu darajadagi xotirani himoya qilish uchun MMUga ehtiyoj yo'q. Deskriptorlar faqat foydalanuvchi jarayonlari uchun o'qiladi va faqat tizim tomonidan yangilanishi mumkin (apparat yoki MCP). (Yorlig'i g'alati raqam bo'lgan so'zlar faqat o'qish uchun mo'ljallangan; tavsiflovchilarda yorliq 5 ga, kod so'zlarda esa 3 ga teng.)

Bloklarni jarayonlar stackidagi nusxa ko'chirish identifikatorlari orqali bo'lishish mumkin. Shunday qilib, ba'zi jarayonlar yozish uchun ruxsat olishlari mumkin, boshqalari esa yo'q. Kod segmenti faqat o'qiladi, shuning uchun qayta yo'naltiriladi va jarayonlar o'rtasida taqsimlanadi. Nusxalashtiruvchi identifikatorlar master-descriptor qatorida master-descriptor indeksini beradigan 20-bitli manzil maydonini o'z ichiga oladi. Bu juda samarali va xavfsiz IPC mexanizmini amalga oshiradi. Bloklarni osongina boshqa joyga ko'chirish mumkin, chunki blokning holati o'zgarganda faqat master tavsiflovchi yangilanishi kerak.

Faqatgina boshqa jihat - bu ishlash - MMU asosidagi yoki MMUga asoslangan bo'lmagan tizimlar yaxshi ishlashni ta'minlaydimi? MCP tizimlari MMU (masalan, standart kompyuter) ga ega bo'lgan standart uskuna ustida amalga oshirilishi mumkin. Tizimni amalga oshirish MMU ni qandaydir usulda ishlatgan taqdirda ham, bu MCP darajasida umuman ko'rinmaydi.

Shuningdek qarang

Adabiyotlar

  1. ^ Tanenbaum, Endryu S. (2009). Zamonaviy operatsion tizimlar. Yuqori Egar daryosi (Nyu-Jersi): Prentis-Xoll. ISBN  978-0-13-600663-3.
  2. ^ a b v d e Frank Uyeda (2009). "7-ma'ruza: Xotirani boshqarish" (PDF). CSE 120: Operatsion tizim tamoyillari. San-Diego UC. Olingan 2013-12-04.
  3. ^ Spectra 70 70-46 protsessori uchun qo'llanma (PDF). RCA. Mart 1968. p. 4. Olingan 15 avgust, 2013.
  4. ^ "Elektron ma'lumotlar sahifasini qidirish va yuklab olish sayti" (PDF). Ic-on-line.cn. Olingan 2017-05-03.[doimiy o'lik havola ]
  5. ^ "Cortex-A8 texnik qo'llanmasi" (PDF). Infoventer.arm.com. Olingan 2017-05-03.
  6. ^ "IBM Archives: System / 360 Sanalari va xususiyatlari". 03.ibm.com. Olingan 2017-05-03.
  7. ^ a b "IBM System / 360 Model 67 funktsional xususiyatlari, uchinchi nashr" (PDF). 1972 yil fevral. GA27-2719-2. Arxivlandi asl nusxasi (PDF) 2012-03-14. Olingan 2016-11-08.
  8. ^ Sun 68000 Kengashdan foydalanish bo'yicha qo'llanma, Sun Microsystems, Inc, 1983 yil fevral, Revision B
  9. ^ "AMD64 Architecture Programmer's Manual Volume 2: System Programming". (PDF). 2017 yil mart. Olingan 2017-12-05.
  10. ^ Tanenbaum, Endryu S.; Xerder, Jorrit N .; Bos, Gerbert (2006 yil may). "Operatsion tizimlarni ishonchli va xavfsiz qila olamizmi?". Kompyuter. 39 (5): 44–51. CiteSeerX  10.1.1.112.3028. doi:10.1109 / MC.2006.156.
  11. ^ Daniel H. H. Ingalls (1981 yil avgust). "Smalltalk ortidagi dizayn tamoyillari". Bayt jurnali. Arxivlandi asl nusxasi 2007-09-27.

Ushbu maqola olingan ma'lumotlarga asoslangan Kompyuterning bepul on-layn lug'ati 2008 yil 1-noyabrgacha va "reitsenziyalash" shartlariga kiritilgan GFDL, 1.3 yoki undan keyingi versiyasi.