मेमोरी प्रबंधन इकाई

एक मेमोरी मैनेजमेंट यूनिट (MMU), जिसे कभी-कभी पेजेड मेमोरी मैनेजमेंट यूनिट (PMMU) कहा जाता है, एक संगणक धातु सामग्री  इकाई है जिसमें सभी कंप्यूटर मेमोरी संदर्भ स्वयं से गुजरते हैं, मुख्य रूप से आभासी पते का भौतिक पतों में अनुवाद करते हैं।

एक एमएमयू प्रभावी रूप से अप्रत्यक्ष स्मृति  प्रबंधन करता है, एक ही समय में  [[ स्मृति  सुरक्षा ]],  सीपीयू कैश  कंट्रोल,  कंप्यूटर बस   मध्यस्थ (इलेक्ट्रॉनिक्स)  और, सरल कंप्यूटर आर्किटेक्चर (विशेष रूप से  8 बिट  सिस्टम),  बैंक स्विचिंग  में संभालता है।

अवलोकन
आधुनिक एमएमयू आमतौर पर वर्चुअल पता स्थान  (प्रोसेसर द्वारा उपयोग किए जाने वाले पतों की श्रेणी) को पेज (कंप्यूटर साइंस) में विभाजित करते हैं, प्रत्येक का आकार 2 होता है, आमतौर पर कुछ  किलोबाइट, लेकिन वे बहुत बड़े हो सकते हैं। पते के निचले हिस्से (पृष्ठ के भीतर ऑफ़सेट) को अपरिवर्तित छोड़ दिया जाता है। ऊपरी पता बिट्स वर्चुअल पेज नंबर हैं।

पृष्ठ तालिका प्रविष्टियाँ
अधिकांश एमएमयू पेज टेबल नामक आइटम की इन-मेमोरी टेबल का उपयोग करते हैं, जिसमें प्रति पेज एक पृष्ठ तालिका प्रविष्टि  (पीटीई) होती है।, वर्चुअल पेज नंबरों को मुख्य मेमोरी में भौतिक पेज नंबरों पर मैप करने के लिए। पीटीई के एक सहयोगी कैश को  अनुवाद लुकसाइड बफर  (टीएलबी) कहा जाता है और हर बार वर्चुअल एड्रेस मैप किए जाने पर मुख्य मेमोरी तक पहुंचने की आवश्यकता से बचने के लिए इसका उपयोग किया जाता है। अन्य एमएमयू में स्मृति की एक निजी सरणी हो सकती है या रजिस्टर जो पेज टेबल प्रविष्टियों का एक सेट रखते हैं। भौतिक पृष्ठ संख्या को पूर्ण भौतिक पता देने के लिए पृष्ठ ऑफ़सेट के साथ जोड़ दिया जाता है।

एक पीटीई में इस बारे में जानकारी भी शामिल हो सकती है कि क्या पृष्ठ को लिखा गया है (गंदा बिट), जब इसे अंतिम बार उपयोग किया गया था (एक्सेस बिट, कम से कम हाल ही में उपयोग किए गए (एलआरयू) पृष्ठ प्रतिस्थापन एल्गोरिदम के लिए), किस तरह की प्रक्रियाएं ( उपयोगकर्ता मोड या  पर्यवेक्षक मोड ) इसे पढ़ और लिख सकता है, और क्या यह  कैश (कंप्यूटिंग)  होना चाहिए।

कभी-कभी, एक पीटीई वर्चुअल पेज तक पहुंच को प्रतिबंधित करता है, शायद इसलिए कि उस वर्चुअल पेज पर कोई भौतिक यादृच्छिक अभिगम स्मृति  (रैम) आवंटित नहीं की गई है। इस मामले में, एमएमयू सीपीयू को  पृष्ठ दोष  का संकेत देता है।  ऑपरेटिंग सिस्टम  (ओएस) तब स्थिति को संभालता है, शायद रैम के एक अतिरिक्त फ्रेम को खोजने की कोशिश करके और अनुरोधित आभासी पते पर इसे मैप करने के लिए एक नया पीटीई स्थापित करता है। यदि कोई RAM मुफ़्त नहीं है, तो कुछ प्रतिस्थापन  कलन विधि  का उपयोग करके मौजूदा पृष्ठ (पीड़ित के रूप में जाना जाता है) को चुनना और इसे डिस्क पर सहेजना आवश्यक हो सकता है (एक प्रक्रिया जिसे  पेजिंग  कहा जाता है)। कुछ एमएमयू के साथ, पीटीई की कमी भी हो सकती है, ऐसे में ओएस को नए मैपिंग के लिए एक को मुक्त करना होगा।

एमएमयू क्रमशः अवैध या गैर-मौजूदा मेमोरी एक्सेस पर अवैध एक्सेस त्रुटि की स्थिति या अमान्य पृष्ठ दोष  उत्पन्न कर सकता है, जिससे ऑपरेटिंग सिस्टम द्वारा नियंत्रित किए जाने पर  विखंडन दोष  या  बस त्रुटि  की स्थिति हो सकती है।

लाभ
कुछ मामलों में, एक पृष्ठ दोष एक सॉफ्टवेयर बग  का संकेत दे सकता है, जिसे एमएमयू के प्रमुख लाभों में से एक के रूप में स्मृति सुरक्षा का उपयोग करके रोका जा सकता है: एक ऑपरेटिंग सिस्टम इसका उपयोग किसी विशेष प्रोग्राम की मेमोरी तक पहुंच को अस्वीकार करके गलत प्रोग्रामों से बचाने के लिए कर सकता है। तक पहुंच नहीं होनी चाहिए। आमतौर पर, एक ऑपरेटिंग सिस्टम प्रत्येक प्रोग्राम को अपना वर्चुअल एड्रेस स्पेस प्रदान करता है।

एक एमएमयू स्मृति के विखंडन (कंप्यूटर)  की समस्या को भी कम करता है। स्मृति के ब्लॉक आवंटित और मुक्त होने के बाद, मुक्त स्मृति खंडित (असंतत) हो सकती है ताकि मुक्त स्मृति का सबसे बड़ा सन्निहित ब्लॉक कुल राशि से बहुत छोटा हो। वर्चुअल मेमोरी के साथ, वर्चुअल एड्रेस की एक सन्निहित श्रेणी को भौतिक मेमोरी के कई गैर-सन्निहित ब्लॉकों में मैप किया जा सकता है; यह गैर-सन्निहित आवंटन पेजिंग के लाभों में से एक है।

कुछ शुरुआती माइक्रोप्रोसेसर  डिज़ाइनों में, मेमोरी प्रबंधन एक अलग एकीकृत सर्किट द्वारा किया गया था जैसे कि  वीएलएसआई प्रौद्योगिकी  VI475 (1986),  मोटोरोला 68851  (1984) जिसका उपयोग मैकिन्टोश II में मोटोरोला 68020 सीपीयू के साथ किया गया था, या Z8010 और Z8015 (1985)  प्रोसेसर के  Zilog Z8000  परिवार के साथ प्रयोग किया जाता है। बाद में माइक्रोप्रोसेसरों (जैसे  मोटोरोला 68030  और  ज़िलोग Z280 ) ने एमएमयू को सीपीयू के साथ एक ही एकीकृत सर्किट पर रखा, जैसा कि इंटेल 802 86  और बाद में x86 माइक्रोप्रोसेसरों ने किया था।

हालांकि यह आलेख आधुनिक एमएमयू पर केंद्रित है, आमतौर पर पृष्ठों पर आधारित, प्रारंभिक प्रणालियों ने आधार-सीमा को संबोधित करने के लिए एक समान अवधारणा का उपयोग किया जो आगे विभाजन (स्मृति)  में विकसित हुआ। वे कभी-कभी आधुनिक वास्तुकला पर भी मौजूद होते हैं।  x86 आर्किटेक्चर  ने  80286  में पेजिंग के बजाय विभाजन प्रदान किया, और  80386  और बाद के प्रोसेसर में पेजिंग और सेगमेंटेशन दोनों प्रदान करता है (हालांकि विभाजन का उपयोग 64-बिट ऑपरेशन में उपलब्ध नहीं है)।

उदाहरण
अधिकांश आधुनिक प्रणालियाँ स्मृति को उन पृष्ठों में विभाजित करती हैं जो हैं 4-64 KB आकार में, अक्सर तथाकथित विशाल पृष्ठों का उपयोग करने की क्षमता के साथ 2 MB या 1 GB आकार में (अक्सर दोनों प्रकार संभव होते हैं)। पृष्ठ अनुवाद एक अनुवाद लुकसाइड बफर (TLB) में कैश किए जाते हैं। कुछ प्रणालियाँ, मुख्य रूप से पुराने RISC  डिज़ाइन, OS में  जाल (कंप्यूटिंग)  जब TLB में कोई पृष्ठ अनुवाद नहीं मिलता है। अधिकांश सिस्टम हार्डवेयर-आधारित ट्री वॉकर का उपयोग करते हैं। अधिकांश सिस्टम एमएमयू को अक्षम करने की अनुमति देते हैं, लेकिन कुछ ओएस कोड में फंसने पर एमएमयू को अक्षम कर देते हैं।

वैक्स
VAX पृष्ठ 512 बाइट्स हैं, जो बहुत छोटा है। एक OS कई पेजों के साथ ऐसा व्यवहार कर सकता है जैसे कि वे एक ही बड़े पेज हों। उदाहरण के लिए, VAX पर Linux  आठ पृष्ठों को एक साथ समूहित करता है। इस प्रकार, सिस्टम को होने के रूप में देखा जाता है 4 KB पृष्ठ। वैक्स मेमोरी को चार निश्चित-उद्देश्य वाले क्षेत्रों में विभाजित करता है, प्रत्येक 1 GB आकार में। वे हैं:
 * P0 स्थान: सामान्य प्रयोजन प्रति-प्रक्रिया स्मृति जैसे ढेर के लिए प्रयुक्त।
 * P1 स्थान: (या नियंत्रण स्थान) जो प्रति-प्रक्रिया भी है और आमतौर पर पर्यवेक्षक, कार्यकारी, कर्नेल (ऑपरेटिंग सिस्टम), उपयोगकर्ता  स्टैक (सार डेटा प्रकार)  और ऑपरेटिंग सिस्टम द्वारा प्रबंधित अन्य प्रति-प्रक्रिया नियंत्रण संरचनाओं के लिए उपयोग किया जाता है।
 * S0 स्पेस: (या सिस्टम स्पेस) जो सभी प्रक्रियाओं के लिए वैश्विक है और ऑपरेटिंग सिस्टम कोड और डेटा को स्टोर करता है, पेजटेबल सहित, पेजेड या नहीं।
 * S1 स्पेस: जो अप्रयुक्त है और डिजिटल उपकरण निगम  के लिए आरक्षित है।

पेज टेबल बड़े रैखिक सरणियाँ हैं। आम तौर पर, यह बहुत बेकार होगा जब संभावित सीमा के दोनों सिरों पर पते का उपयोग किया जाता है, लेकिन अनुप्रयोगों के लिए पृष्ठ तालिका स्वयं कर्नेल की पेजेड मेमोरी में संग्रहीत होती है। इस प्रकार, प्रभावी रूप से एक दो-स्तरीय ट्री (डेटा संरचना) है, जो अनुप्रयोगों को अप्रयुक्त पृष्ठ तालिका प्रविष्टियों पर बहुत अधिक स्थान बर्बाद किए बिना विरल मेमोरी लेआउट की अनुमति देता है। एक्सेस किए गए बिट की कमी के लिए वैक्स एमएमयू उल्लेखनीय है। पेजिंग को लागू करने वाले ओएस को एक्सेस किए गए बिट का अनुकरण करने का कोई तरीका खोजना होगा यदि वे कुशलता से संचालित करना चाहते हैं। आम तौर पर, ओएस समय-समय पर पृष्ठों को अनमैप करेगा ताकि ओएस को एक एक्सेस किया गया बिट  सेट करने के लिए पेज-न-मौजूदा दोषों का उपयोग किया जा सके।

एआरएम
एआरएम वास्तुकला -आधारित एप्लिकेशन प्रोसेसर एआरएम के वर्चुअल मेमोरी सिस्टम आर्किटेक्चर द्वारा परिभाषित एमएमयू को लागू करते हैं। वर्तमान आर्किटेक्चर वर्णन करने के लिए पृष्ठ तालिका प्रविष्टि को परिभाषित करता है 4 KB तथा 64 KB पन्ने, 1 MB अनुभाग और 16 MB सुपर-सेक्शन; विरासत संस्करणों को भी परिभाषित किया गया है 1 KB छोटा पृष्ठ। यदि उपयोग कर रहे हैं तो एआरएम दो-स्तरीय पृष्ठ तालिका का उपयोग करता है 4 KB तथा 64 KB पृष्ठ, या के लिए केवल एक-स्तरीय पृष्ठ तालिका 1 MB अनुभाग और 16 MB खंड।

टीएलबी अपडेट पेज टेबल वॉकिंग हार्डवेयर द्वारा स्वचालित रूप से किए जाते हैं। पीटीई में विशेषाधिकार, कैशेबिलिटी जानकारी, एक एनएक्स बिट  और एक गैर-सुरक्षित बिट के आधार पर पढ़ने/लिखने की अनुमति शामिल है।

आईबीएम सिस्टम/360 मॉडल 67, आईबीएम सिस्टम/370, और उत्तराधिकारी
आईबीएम सिस्टम/360 मॉडल 67, जिसे अगस्त 1965 में पेश किया गया था, में एक एमएमयू शामिल है जिसे डायनेमिक एड्रेस ट्रांसलेशन (डीएटी) बॉक्स कहा जाता है। इसमें पृष्ठ तालिका के बाहर एक्सेस किए गए और गंदे बिट्स को संग्रहीत करने की असामान्य विशेषता है (सभी S/360 प्रोसेसर के लिए चार बिट मेमोरी_प्रोटेक्शन#प्रोटेक्शन_की के साथ)। वे वर्चुअल मेमोरी के बजाय भौतिक मेमोरी को संदर्भित करते हैं, और विशेष-उद्देश्य निर्देशों द्वारा उपयोग किए जाते हैं। यह ओएस के लिए ओवरहेड को कम करता है, जिसे अन्यथा पेज टेबल से एक्सेस और गंदे बिट्स को अधिक भौतिक रूप से उन्मुख डेटा संरचना में प्रचारित करने की आवश्यकता होगी। यह  ऑपरेटिंग सिस्टम-स्तरीय वर्चुअलाइजेशन  | ओएस-स्तरीय वर्चुअलाइजेशन को आसान बनाता है, जिसे बाद में  पैरावर्चुअलाइजेशन  कहा जाता है।

अगस्त, 1972 से शुरू होकर, आईबीएम सिस्टम/370 में एक समान एमएमयू है, हालांकि यह शुरू में सिस्टम/360 मॉडल 67 के 32-बिट वर्चुअल एड्रेस स्पेस के बजाय केवल 24-बिट वर्चुअल एड्रेस स्पेस का समर्थन करता है। यह एक्सेस किए गए को भी स्टोर करता है। और पेज टेबल के बाहर गंदे बिट्स। 1983 की शुरुआत में, सिस्टम/370-XA आर्किटेक्चर ने वर्चुअल एड्रेस स्पेस को 31 बिट्स तक विस्तारित किया, और 2000 में, 64-बिट  z/आर्किटेक्चर को पेश किया गया, जिसमें एड्रेस स्पेस को 64 बिट्स तक विस्तारित किया गया; वे पेज टेबल के बाहर एक्सेस और गंदे बिट्स को स्टोर करना जारी रखते हैं।

दिसंबर अल्फा
डीईसी अल्फा प्रोसेसर मेमोरी को विभाजित करता है 8 KB पृष्ठ। एक TLB चूक के बाद, निम्न-स्तरीय  फर्मवेयर  मशीन कोड (यहाँ  PALcode  कहा जाता है) तीन-स्तरीय ट्री-स्ट्रक्चर्ड पेज टेबल पर चलता है। पते निम्नानुसार टूट गए हैं: 21 बिट्स अप्रयुक्त, पेड़ के रूट स्तर को इंडेक्स करने के लिए 10 बिट्स, पेड़ के मध्य स्तर को इंडेक्स करने के लिए 10 बिट्स, पेड़ के पत्ते के स्तर को इंडेक्स करने के लिए 10 बिट्स, और 13 बिट्स जो गुजरते हैं संशोधन के बिना भौतिक पते पर। पूर्ण पढ़ने/लिखने/निष्पादित अनुमति बिट्स समर्थित हैं।

एमआईपीएस
एमआईपीएस वास्तुकला टीएलबी में एक से 64 प्रविष्टियों का समर्थन करता है। टीएलबी प्रविष्टियों की संख्या संश्लेषण से पहले सीपीयू विन्यास पर विन्यास योग्य है। टीएलबी प्रविष्टियां दोहरी हैं। प्रत्येक टीएलबी प्रविष्टि वर्चुअल पेज नंबर (वीपीएन 2) को दो पेज फ्रेम नंबरों (पीएफएन 0 या पीएफएन 1) में से किसी एक में मैप करती है, जो वर्चुअल एड्रेस के कम से कम महत्वपूर्ण बिट पर निर्भर करती है जो पेज  मुखौटा (कंप्यूटिंग)  का हिस्सा नहीं है। यह बिट और पेज मास्क बिट्स VPN2 में स्टोर नहीं होते हैं। प्रत्येक टीएलबी प्रविष्टि का अपना पृष्ठ आकार होता है, जिसका कोई भी मान हो सकता है 1 KB प्रति 256 MB चार के गुणकों में। टीएलबी प्रविष्टि में प्रत्येक पीएफएन में एक कैशिंग विशेषता, एक गंदा और एक वैध स्थिति बिट होता है। एक वीपीएन 2 में एक वैश्विक स्थिति बिट और एक ओएस असाइन की गई आईडी होती है जो वर्चुअल एड्रेस टीएलबी एंट्री मैच में भाग लेती है, अगर वैश्विक स्थिति बिट शून्य पर सेट है। एक पीएफएन पेज मास्क बिट्स के बिना भौतिक पता संग्रहीत करता है।

टीएलबी रीफिल अपवाद तब उत्पन्न होता है जब टीएलबी में मैप किए गए वर्चुअल पते से मेल खाने वाली कोई प्रविष्टियां नहीं होती हैं। एक मिलान होने पर एक टीएलबी अमान्य अपवाद उत्पन्न होता है लेकिन प्रविष्टि को अमान्य चिह्नित किया जाता है। एक टीएलबी संशोधित अपवाद तब उत्पन्न होता है जब कोई स्टोर निर्देश मैप किए गए पते का संदर्भ देता है और मेल खाने वाली प्रविष्टि की गंदी स्थिति सेट नहीं होती है। यदि टीएलबी अपवाद को संसाधित करते समय एक टीएलबी अपवाद होता है, एक डबल गलती टीएलबी अपवाद, इसे अपने स्वयं के अपवाद हैंडलिंग के लिए भेजा जाता है।

MIPS32 और MIPS32r2 वर्चुअल एड्रेस स्पेस के 32 बिट्स और फिजिकल एड्रेस स्पेस के 36 बिट्स तक सपोर्ट करते हैं। MIPS64 वर्चुअल एड्रेस स्पेस के 64 बिट तक और फिजिकल एड्रेस स्पेस के 59 बिट तक सपोर्ट करता है।

सूर्य 1
मूल सन 1 मोटोरोला 68000  माइक्रोप्रोसेसर के आसपास बनाया गया एक  सिंगल बोर्ड कंप्यूटर  है और 1982 में पेश किया गया। इसमें मूल सन 1 मेमोरी प्रबंधन इकाई शामिल है जो सीपीयू पर चलने वाली कई प्रक्रियाओं के लिए एड्रेस ट्रांसलेशन, मेमोरी प्रोटेक्शन, मेमोरी शेयरिंग और मेमोरी आवंटन प्रदान करती है।. सीपीयू की निजी ऑन-बोर्ड रैम, बाहरी बहुतों को  मेमोरी, ऑन-बोर्ड इनपुट/आउटपुट|I/O और मल्टीबस I/O तक सभी पहुंच एमएमयू के माध्यम से चलती है, जहां एड्रेस ट्रांसलेशन और सुरक्षा एक समान तरीके से की जाती है। एमएमयू को सीपीयू बोर्ड पर हार्डवेयर में लागू किया जाता है।

MMU में एक संदर्भ रजिस्टर, एक स्मृति विभाजन  मैप और एक पेज मैप होता है। सीपीयू से वर्चुअल एड्रेस को सेगमेंट मैप द्वारा इंटरमीडिएट एड्रेस में ट्रांसलेट किया जाता है, जो बदले में पेज मैप द्वारा फिजिकल एड्रेस में ट्रांसलेट किया जाता है। पृष्ठ का आकार है 2 KB और खंड का आकार है 32 KB जो प्रति सेगमेंट 16 पेज देता है। एक साथ 16 संदर्भों को मैप किया जा सकता है। किसी संदर्भ के लिए अधिकतम तार्किक पता स्थान है 1024 pages या 2 MB. अधिकतम भौतिक पता जिसे एक साथ मैप किया जा सकता है वह भी है 2 MB. मल्टीटास्किंग ऑपरेटिंग सिस्टम में संदर्भ रजिस्टर महत्वपूर्ण है क्योंकि यह सीपीयू को सभी अनुवाद स्थिति की जानकारी को पुनः लोड किए बिना प्रक्रियाओं के बीच स्विच करने की अनुमति देता है। 4-बिट संदर्भ रजिस्टर पर्यवेक्षक नियंत्रण के तहत खंड मानचित्र के 16 अनुभागों के बीच स्विच कर सकता है, जो 16 संदर्भों को समवर्ती रूप से मैप करने की अनुमति देता है। प्रत्येक संदर्भ का अपना वर्चुअल पता स्थान होता है। विभिन्न संदर्भों के खंड या पृष्ठ मानचित्रों में समान मान लिखकर आभासी पता स्थान और अंतर-संदर्भ संचार साझा करना प्रदान किया जा सकता है। अतिरिक्त संदर्भों को खंड मानचित्र को संदर्भ कैश के रूप में मानकर और कम से कम हाल ही में उपयोग किए गए आधार पर पुराने संदर्भों को बदलकर नियंत्रित किया जा सकता है।

संदर्भ रजिस्टर उपयोगकर्ता और पर्यवेक्षक राज्यों के बीच कोई अंतर नहीं करता है। इंटरप्ट और ट्रैप संदर्भों को स्विच नहीं करते हैं, जिसके लिए सभी मान्य इंटरप्ट वैक्टर को हमेशा संदर्भ के पृष्ठ 0 में मैप किया जाना चाहिए, साथ ही साथ वैध पर्यवेक्षक स्टैक भी।

पावरपीसी
PowerPC में G1, G2, G3, और G4 पृष्ठ सामान्य रूप से होते हैं 4 KB. एक टीएलबी चूक के बाद, मानक पावरपीसी एमएमयू एक साथ दो लुकअप शुरू करता है। एक लुकअप चार या आठ डेटा ब्लॉक एड्रेस ट्रांसलेशन (डीबीएटी) रजिस्टरों में से एक के साथ पते का मिलान करने का प्रयास करता है, या चार या आठ निर्देश ब्लॉक एड्रेस ट्रांसलेशन रजिस्टर (आईबीएटी), जैसा उपयुक्त हो। BAT रजिस्टर मेमोरी के रैखिक भाग को जितना बड़ा कर सकते हैं मैप कर सकते हैं 256 MB, और आमतौर पर ओएस द्वारा ओएस कर्नेल के स्वयं के उपयोग के लिए एड्रेस स्पेस के बड़े हिस्से को मैप करने के लिए उपयोग किया जाता है। यदि बैट लुकअप सफल होता है, तो अन्य लुकअप रोक दिया जाता है और अनदेखा कर दिया जाता है।

अन्य लुकअप, इस परिवार के सभी प्रोसेसर द्वारा सीधे समर्थित नहीं है, एक तथाकथित उलटा पृष्ठ तालिका  के माध्यम से है, जो टीएलबी के हैशेड ऑफ-चिप एक्सटेंशन के रूप में कार्य करता है। सबसे पहले, पते के शीर्ष चार बिट्स का उपयोग 16 मेमोरी सेगमेंटेशन रजिस्टरों में से एक का चयन करने के लिए किया जाता है। फिर खंड रजिस्टर से 24 बिट्स उन चार बिट्स को प्रतिस्थापित करते हैं, जो 52-बिट पते का निर्माण करते हैं। खंड रजिस्टरों का उपयोग कई प्रक्रियाओं को एक ही हैश तालिका साझा करने की अनुमति देता है।

52-बिट पता हैश किया गया है, फिर ऑफ-चिप तालिका में एक अनुक्रमणिका के रूप में उपयोग किया जाता है। वहां, मेल खाने वाले के लिए आठ-पृष्ठ तालिका प्रविष्टियों का एक समूह स्कैन किया जाता है। यदि अत्यधिक हैश टकराव के कारण कोई मेल नहीं खाता है, तो प्रोसेसर थोड़ा अलग हैश फंकशन  के साथ फिर से प्रयास करता है। यदि यह भी विफल हो जाता है, तो सीपीयू ओएस (एमएमयू अक्षम के साथ) में फंस जाता है ताकि समस्या का समाधान हो सके। नई प्रविष्टि के लिए स्थान बनाने के लिए OS को हैश तालिका से एक प्रविष्टि को त्यागने की आवश्यकता है। ओएस अधिक सामान्य पेड़ जैसी पृष्ठ तालिका या प्रति-मानचित्रण डेटा संरचनाओं से नई प्रविष्टि उत्पन्न कर सकता है जो धीमी और अधिक स्थान-कुशल होने की संभावना है। एनएक्स बिट के लिए समर्थन | नो-निष्पादन नियंत्रण खंड रजिस्टरों में है, जिसके कारण 256 MB ग्रैन्युलैरिटी

इस डिज़ाइन के साथ एक बड़ी समस्या हैश फ़ंक्शन के कारण खराब कैश स्थान है। ट्री-आधारित डिज़ाइन आसन्न स्थानों में आसन्न पृष्ठों के लिए पृष्ठ तालिका प्रविष्टियाँ रखकर इससे बचते हैं। PowerPC पर चलने वाला एक ऑपरेटिंग सिस्टम इस समस्या को कम करने के लिए हैश तालिका के आकार को छोटा कर सकता है।

किसी प्रक्रिया की पृष्ठ तालिका प्रविष्टियों को निकालना भी कुछ धीमा है। ओएस इसका सामना करने में देरी करने के लिए खंड मूल्यों का पुन: उपयोग करने से बच सकता है, या यह प्रति-प्रक्रिया हैश टेबल से जुड़ी स्मृति की बर्बादी को भुगतने का चुनाव कर सकता है। G1 चिप्स पृष्ठ तालिका प्रविष्टियों की खोज नहीं करते हैं, लेकिन वे हैश उत्पन्न करते हैं, इस उम्मीद के साथ कि OS सॉफ़्टवेयर के माध्यम से मानक हैश तालिका खोजेगा। ओएस टीएलबी को लिख सकता है। G2, G3 और प्रारंभिक G4 चिप्स हैश तालिका को खोजने के लिए हार्डवेयर का उपयोग करते हैं। नवीनतम चिप्स ओएस को किसी भी विधि को चुनने की अनुमति देते हैं। चिप्स पर जो इसे वैकल्पिक बनाते हैं या इसका बिल्कुल भी समर्थन नहीं करते हैं, OS विशेष रूप से ट्री-आधारित पृष्ठ तालिका का उपयोग करना चुन सकता है।

आइए-32 / x86
OS कोड के लिए भी, पूर्ण सॉफ़्टवेयर संगतता बनाए रखते हुए x86 आर्किटेक्चर बहुत लंबे समय में विकसित हुआ है। इस प्रकार, एमएमयू बेहद जटिल है, जिसमें कई अलग-अलग संभावित ऑपरेटिंग मोड हैं। पारंपरिक 80386 CPU और उसके उत्तराधिकारियों ( IA-32 ) के सामान्य संचालन का वर्णन यहाँ किया गया है।

सीपीयू मुख्य रूप से मेमोरी को विभाजित करता है 4 KB पृष्ठ। खंड रजिस्टर, पुराने इंटेल 8088  और 80286 एमएमयू डिजाइन के लिए मौलिक, आधुनिक ओएस में उपयोग नहीं किया जाता है, एक प्रमुख अपवाद के साथ: थ्रेड (कंप्यूटर विज्ञान) तक पहुंच - अनुप्रयोगों के लिए विशिष्ट डेटा या ओएस कर्नेल के लिए सीपीयू-विशिष्ट डेटा, जो किया जाता है एफएस और जीएस खंड रजिस्टरों के स्पष्ट उपयोग के साथ। सभी मेमोरी एक्सेस में एक सेगमेंट रजिस्टर शामिल होता है, जिसे निष्पादित किए जा रहे कोड के अनुसार चुना जाता है। खंड रजिस्टर एक तालिका में एक सूचकांक के रूप में कार्य करता है, जो आभासी पते में जोड़े जाने के लिए एक ऑफसेट प्रदान करता है। FS या GS का उपयोग करने के अलावा, OS सुनिश्चित करता है कि ऑफ़सेट शून्य होगा।

ऑफ़सेट जोड़ने के बाद, पता 32 बिट से बड़ा नहीं होना चाहिए। परिणाम एक पेड़-संरचित पृष्ठ तालिका के माध्यम से देखा जा सकता है, पते के बिट्स को निम्नानुसार विभाजित किया जा सकता है: पेड़ की शाखा के लिए 10 बिट्स, शाखा की पत्तियों के लिए 10 बिट्स, और 12 सबसे कम बिट्स सीधे परिणाम में कॉपी किया गया। कुछ ऑपरेटिंग सिस्टम, जैसे OpenBSD  अपनी W^X सुविधा के साथ, और Linux  Exec Shield  या  PaX  पैच के साथ, कोड खंड की लंबाई को भी सीमित कर सकता है, जैसा कि CS रजिस्टर द्वारा निर्दिष्ट किया गया है, ताकि संशोधित क्षेत्रों में कोड के निष्पादन को रोका जा सके। पता स्थान।

इंटेल P5 के साथ पेश किए गए एमएमयू के छोटे संशोधनों ने बहुत बड़ी अनुमति दी है 4 MB ट्री के निचले स्तर को छोड़ कर पृष्ठ (यह पृष्ठ पदानुक्रम के पहले स्तर को अनुक्रमित करने के लिए 10 बिट्स छोड़ता है और शेष 10+12 बिट्स को सीधे परिणाम में कॉपी किया जाता है)।  पेंटियम प्रो  के साथ पेश किए गए एमएमयू के मामूली संशोधनों ने  भौतिक पता विस्तार  (पीएई) सुविधा की शुरुआत की, जिससे तीन-स्तरीय पृष्ठ तालिकाओं के लिए 2+9+9 बिट्स के साथ 36-बिट भौतिक पतों को सक्षम किया गया और 12 सबसे कम बिट्स को सीधे परिणाम में कॉपी किया गया। बड़े पृष्ठ (2 MB) पेड़ के निचले स्तर को छोड़ कर भी उपलब्ध हैं (परिणामस्वरूप दो-स्तरीय तालिका पदानुक्रम के लिए 2+9 बिट्स और शेष 9+12 निम्नतम बिट्स सीधे कॉपी किए गए)। इसके अलावा,  पृष्ठ विशेषता तालिका  ने एक छोटे ऑन-सीपीयू टेबल में कुछ उच्च बिट्स को देखकर कैशेबिलिटी के विनिर्देशन की अनुमति दी।

NX बिट | नो-एक्ज़िक्यूट सपोर्ट मूल रूप से केवल प्रति-सेगमेंट के आधार पर प्रदान किया गया था, जिससे इसका उपयोग करना बहुत अजीब हो गया। हाल ही में x86 चिप्स पीएई मोड में प्रति-पृष्ठ नो-एक्ज़ीक्यूट बिट प्रदान करते हैं। ऊपर वर्णित W^X, Exec Shield, और PaX तंत्र, प्रदर्शन हानि और उपलब्ध पता स्थान में कमी के साथ, कोड खंड की लंबाई निर्धारित करके NX बिट की कमी वाली मशीनों x86 प्रोसेसर पर प्रति-पृष्ठ गैर-निष्पादित समर्थन का अनुकरण करते हैं।.

x86-64
x86-64 x86 का 64-बिट एक्सटेंशन है जो 386 या नए प्रोसेसर के लिए लगभग सभी ऑपरेटिंग सिस्टम द्वारा उपयोग किए जाने वाले  फ्लैट मेमोरी मॉडल  के पक्ष में विभाजन को लगभग पूरी तरह से हटा देता है। लॉन्ग मोड में, FS और GS सेगमेंट को छोड़कर, सभी सेगमेंट ऑफ़सेट को नज़रअंदाज कर दिया जाता है। जब के साथ प्रयोग किया जाता है 4 KB पेज, पेज टेबल ट्री में तीन के बजाय चार स्तर होते हैं।

आभासी पतों को इस प्रकार विभाजित किया गया है: 16 बिट अप्रयुक्त, नौ बिट्स प्रत्येक चार पेड़ स्तरों के लिए (कुल 36 बिट्स के लिए), और 12 सबसे कम बिट्स सीधे परिणाम में कॉपी किए गए हैं। साथ 2 MB पेज, पेज टेबल के केवल तीन स्तर हैं, पेजिंग में उपयोग किए जाने वाले कुल 27 बिट्स और ऑफ़सेट के 21 बिट्स के लिए। कुछ नए CPU भी सपोर्ट करते हैं a 1 GB पेजिंग के दो स्तरों वाला पेज और 30 bits ऑफसेट का। CPUID का उपयोग यह निर्धारित करने के लिए किया जा सकता है कि 1 GB पृष्ठ समर्थित हैं। तीनों मामलों में, 16 highest बिट्स को 48 वें बिट के बराबर होना चाहिए, या दूसरे शब्दों में, निम्न 48 bits उच्च बिट्स के लिए  साइन एक्सटेंशन  हैं। यह पश्चगामी संगतता से समझौता किए बिना, पता योग्य सीमा के भविष्य के विस्तार की अनुमति देने के लिए किया जाता है। पृष्ठ तालिका के सभी स्तरों में, पृष्ठ तालिका प्रविष्टि में एक NX बिट | नो-निष्पादित बिट शामिल होता है।

यूनिसिस एमसीपी सिस्टम्स (बरोज बी5000)
1961 से बरोज़ B5000  वर्चुअल मेमोरी ( एटलस कंप्यूटर (मैनचेस्टर)  के बाद) का समर्थन करने वाला पहला वाणिज्यिक सिस्टम था, भले ही इसमें कोई MMU नहीं है यह एक एमएमयू के दो कार्य प्रदान करता है - वर्चुअल मेमोरी एड्रेस और मेमोरी प्रोटेक्शन - एक अलग आर्किटेक्चरल दृष्टिकोण के साथ।

सबसे पहले, वर्चुअल मेमोरी एड्रेस की मैपिंग में, एमएमयू की आवश्यकता के बजाय, बरोज़ एमसीपी  सिस्टम  डेटा डिस्क्रिप्टर -आधारित होते हैं। प्रत्येक आवंटित मेमोरी ब्लॉक को ब्लॉक के गुणों के साथ एक मास्टर डिस्क्रिप्टर दिया जाता है (यानी, आकार, पता, और क्या स्मृति में मौजूद है)। जब पढ़ने या लिखने के लिए ब्लॉक तक पहुंचने का अनुरोध किया जाता है, तो हार्डवेयर डिस्क्रिप्टर में उपस्थिति बिट (पीबीटी) के माध्यम से इसकी उपस्थिति की जांच करता है।

1 का पीबिट ब्लॉक की उपस्थिति को इंगित करता है। इस मामले में, विवरणक में भौतिक पते के माध्यम से ब्लॉक तक पहुँचा जा सकता है। यदि पीबिट शून्य है, तो एमसीपी (ऑपरेटिंग सिस्टम) के लिए ब्लॉक को उपस्थित करने के लिए एक इंटरप्ट उत्पन्न होता है। यदि पता फ़ील्ड शून्य है, तो यह इस ब्लॉक की पहली पहुंच है, और इसे आवंटित किया जाता है (एक init pbit)। यदि पता फ़ील्ड गैर-शून्य है, तो यह ब्लॉक का एक डिस्क पता है, जिसे पहले रोल आउट किया गया है, इसलिए ब्लॉक को डिस्क से प्राप्त किया जाता है और पीबीटी को एक पर सेट किया जाता है और ब्लॉक को इंगित करने के लिए भौतिक मेमोरी पता अपडेट किया जाता है स्मृति में (एक और पीबीटी)। यह विवरणकों को एमएमयू सिस्टम में पेज-टेबल एंट्री के बराबर बनाता है। सिस्टम के प्रदर्शन की निगरानी pbits की संख्या के माध्यम से की जा सकती है। Init pbits प्रारंभिक आवंटन को इंगित करता है, लेकिन अन्य pbits का एक उच्च स्तर इंगित करता है कि सिस्टम थ्रैशिंग हो सकता है।

इसलिए सभी मेमोरी आवंटन पूरी तरह से स्वचालित है (आधुनिक प्रणालियों की विशेषताओं में से एक ) और इस तंत्र के अलावा अन्य ब्लॉक आवंटित करने का कोई तरीका नहीं है। C डायनेमिक मेमोरी आवंटन या डेलोक जैसी कोई कॉल नहीं है, क्योंकि मेमोरी ब्लॉक भी स्वचालित रूप से त्याग दिए जाते हैं। यह योजना भी आलसी आवंटन  है, क्योंकि किसी ब्लॉक को तब तक आवंटित नहीं किया जाएगा जब तक कि उसे वास्तव में संदर्भित नहीं किया जाता है। जब मेमोरी लगभग भर जाती है, तो एमसीपी काम करने वाले सेट की जांच करता है, संघनन की कोशिश करता है (क्योंकि सिस्टम खंडित है, पृष्ठांकित नहीं है), केवल-पढ़ने के लिए खंडों (जैसे कोड-सेगमेंट जिन्हें उनकी मूल प्रति से पुनर्स्थापित किया जा सकता है) और, एक के रूप में अंतिम उपाय, गंदे डेटा सेगमेंट को डिस्क पर रोल आउट करना।

एक और तरीका है कि B5000 एक MMU का एक कार्य प्रदान करता है जो सुरक्षा में है। चूंकि सभी एक्सेस डिस्क्रिप्टर के माध्यम से होते हैं, हार्डवेयर यह जांच सकता है कि सभी एक्सेस सीमा के भीतर हैं और लिखने के मामले में, प्रक्रिया में लिखने की अनुमति है। एमसीपी प्रणाली स्वाभाविक रूप से सुरक्षित है और इस प्रकार स्मृति सुरक्षा के इस स्तर को प्रदान करने के लिए एमएमयू की कोई आवश्यकता नहीं है। डिस्क्रिप्टर केवल उपयोगकर्ता प्रक्रियाओं के लिए पढ़े जाते हैं और केवल सिस्टम (हार्डवेयर या एमसीपी) द्वारा अपडेट किए जा सकते हैं। (जिन शब्दों का टैग विषम संख्या है, वे केवल पढ़ने के लिए हैं; वर्णनकर्ताओं के पास 5 का टैग होता है और कोड शब्दों में 3 का टैग होता है।)

प्रक्रिया स्टैक में कॉपी डिस्क्रिप्टर के माध्यम से प्रक्रियाओं के बीच ब्लॉक साझा किए जा सकते हैं। इस प्रकार, कुछ प्रक्रियाओं में लिखने की अनुमति हो सकती है, जबकि अन्य में नहीं। एक कोड खंड केवल पढ़ा जाता है, इस प्रकार प्रक्रियाओं के बीच पुन: प्रवेश और साझा किया जाता है। कॉपी डिस्क्रिप्टर में 20-बिट एड्रेस फ़ील्ड होता है जो मास्टर डिस्क्रिप्टर एरे में मास्टर डिस्क्रिप्टर का इंडेक्स देता है। यह एक बहुत ही कुशल और सुरक्षित आईपीसी तंत्र को भी लागू करता है। ब्लॉक को आसानी से स्थानांतरित किया जा सकता है, क्योंकि ब्लॉक की स्थिति में परिवर्तन होने पर केवल मास्टर डिस्क्रिप्टर को अपडेट की आवश्यकता होती है।

एकमात्र अन्य पहलू प्रदर्शन है – क्या एमएमयू-आधारित या गैर-एमएमयू-आधारित सिस्टम बेहतर प्रदर्शन प्रदान करते हैं? एमसीपी सिस्टम मानक हार्डवेयर के शीर्ष पर लागू किया जा सकता है जिसमें एमएमयू होता है (उदाहरण के लिए, एक मानक पीसी)। भले ही सिस्टम कार्यान्वयन किसी तरह से एमएमयू का उपयोग करता हो, यह एमसीपी स्तर पर बिल्कुल भी दिखाई नहीं देगा।

यह भी देखें

 * मेमोरी कंट्रोलर

इस पृष्ठ में अनुपलब्ध आंतरिक कड़ियों की सूची

 * आभासी पता
 * भौतिक पता
 * पृष्ठ (कंप्यूटर विज्ञान)
 * गंदा सा
 * कम से कम हाल ही में प्रयुक्त
 * पृष्ठ प्रतिस्थापन एल्गोरिथ्म
 * एकीकृत परिपथ
 * स्मृति प्रबंधन
 * बेस-लिमिट एड्रेसिंग
 * इंटेल 80286
 * पेड़ (डेटा संरचना)
 * एक्सेप्शन हेंडलिंग
 * हैश टक्कर
 * हैश टेबल
 * कैशे इलाका
 * धागा (कंप्यूटर विज्ञान)
 * सी गतिशील स्मृति आवंटन