पेज टेबल

एक पेज टेबल एक कंप्यूटर ऑपरेटिंग सिस्टम में आभासी मेमोरी  सिस्टम द्वारा वर्चुअल पतों और भौतिक पतों के बीच मैपिंग को स्टोर करने के लिए उपयोग की जाने वाली डेटा संरचना है। वर्चुअल पतों का उपयोग एक्सेसिंग  प्रक्रिया (कंप्यूटिंग)  द्वारा निष्पादित प्रोग्राम द्वारा किया जाता है, जबकि भौतिक पतों का उपयोग हार्डवेयर, या अधिक विशेष रूप से,  रैंडम एक्सेस मेमोरी  (RAM) सबसिस्टम द्वारा किया जाता है। पेज टेबल  [[आभासी पता अनुवाद ]] का एक प्रमुख घटक है जो मेमोरी में डेटा (कंप्यूटिंग) तक पहुंचने के लिए आवश्यक है।

{{Anchor|PTE}पृष्ठ तालिका की भूमिका
वर्चुअल मेमोरी का उपयोग करने वाले ऑपरेटिंग सिस्टम में, प्रत्येक प्रक्रिया को यह आभास दिया जाता है कि यह मेमोरी के बड़े, सन्निहित वर्गों के साथ काम कर रही है। भौतिक रूप से, प्रत्येक प्रक्रिया की मेमोरी को भौतिक मेमोरी के विभिन्न क्षेत्रों में फैलाया जा सकता है, या सेकेंडरी स्टोरेज में स्थानांतरित (पेजिंग) किया जा सकता है, आमतौर पर हार्ड डिस्क ड्राइव (HDD) या ठोस राज्य ड्राइव (SSD) में।

जब कोई प्रक्रिया अपनी मेमोरी में डेटा तक पहुंच का अनुरोध करती है, तो यह ऑपरेटिंग सिस्टम की जिम्मेदारी होती है कि वह प्रक्रिया द्वारा प्रदान किए गए वर्चुअल एड्रेस को वास्तविक मेमोरी के भौतिक पते पर मैप करे जहां वह डेटा संग्रहीत है। पेज टेबल वह जगह है जहां ऑपरेटिंग सिस्टम वर्चुअल एड्रेस के अपने मैपिंग को फिजिकल एड्रेस पर स्टोर करता है, प्रत्येक मैपिंग को पेज टेबल एंट्री (PTE) के रूप में भी जाना जाता है।

अनुवाद प्रक्रिया
CPU के अंदर स्मृति प्रबंधन इकाई  (MMU) ऑपरेटिंग सिस्टम के पेज टेबल से हाल ही में उपयोग किए गए मैपिंग का कैश स्टोर करता है। इसे अनुवाद लुकसाइड बफर (TLB) कहा जाता है, जो एक सहयोगी कैश है।

जब किसी आभासी पते को भौतिक पते में अनुवादित करने की आवश्यकता होती है, तो पहले TLB की खोज की जाती है। यदि कोई मैच मिलता है, जिसे TLB हिट के रूप में जाना जाता है, तो भौतिक पता लौटा दिया जाता है और मेमोरी एक्सेस जारी रह सकती है। हालाँकि, यदि कोई मेल नहीं है, जिसे TLB मिस कहा जाता है, तो MMU या ऑपरेटिंग सिस्टम का TLB मिस हैंडलर आमतौर पर पेज टेबल में एड्रेस मैपिंग को देखेगा कि मैपिंग मौजूद है या नहीं, जिसे पेज वॉक कहा जाता है। यदि कोई मौजूद है, तो इसे वापस टीएलबी में लिखा जाता है, जो किया जाना चाहिए क्योंकि हार्डवेयर टीएलबी के माध्यम से वर्चुअल मेमोरी सिस्टम में मेमोरी एक्सेस करता है, और फॉल्टिंग इंस्ट्रक्शन फिर से शुरू हो जाता है, जो समानांतर में भी हो सकता है। बाद के अनुवाद का परिणाम TLB हिट होगा, और मेमोरी एक्सेस जारी रहेगा।

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

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

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

फ़्रेम तालिका डेटा
सरलतम पेज टेबल सिस्टम अक्सर एक पेज फ्रेम टेबल और एक पेज टेबल बनाए रखते हैं। फ़्रेम तालिका में यह जानकारी होती है कि कौन से फ़्रेम मैप किए गए हैं। अधिक उन्नत प्रणालियों में, फ़्रेम तालिका में यह जानकारी भी हो सकती है कि कोई पृष्ठ किस पता स्थान से संबंधित है, सांख्यिकी जानकारी, या अन्य पृष्ठभूमि जानकारी।

पृष्ठ तालिका डेटा
पृष्ठ तालिका पृष्ठ तालिका प्रविष्टियों की एक सरणी है।

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

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

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

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

प्रक्रिया-अद्वितीय पहचानकर्ताओं के साथ पृष्ठ तालिका प्रविष्टियों को टैग करने के विकल्प के रूप में, पृष्ठ तालिका स्वयं प्रत्येक प्रक्रिया के लिए एक अलग वर्चुअल-मेमोरी पृष्ठ पर कब्जा कर सकती है ताकि पृष्ठ तालिका प्रक्रिया संदर्भ का एक हिस्सा बन जाए। इस तरह के कार्यान्वयन में, प्रक्रिया की पृष्ठ तालिका को पृष्ठांकित किया जा सकता है जब भी प्रक्रिया अब स्मृति में नहीं रहती है।

पृष्ठ तालिका प्रकार
कई प्रकार की पेज टेबल हैं, जिन्हें विभिन्न आवश्यकताओं के लिए अनुकूलित किया गया है। अनिवार्य रूप से, एक नंगे हड्डियों वाली पृष्ठ तालिका में आभासी पता, भौतिक पता जो इस आभासी पते के अंतर्गत है, और संभवतः कुछ पता स्थान की जानकारी को संग्रहित करना चाहिए।

{{Anchor|FRAME-TABLE}उलटा पेज टेबल
एक इनवर्टेड पेज टेबल (आईपीटी) को ट्रांसलेशन लुकसाइड बफर के ऑफ-चिप एक्सटेंशन के रूप में सबसे अच्छा माना जाता है जो सामान्य सिस्टम रैम का उपयोग करता है। वास्तविक पृष्ठ तालिका के विपरीत, यह आवश्यक नहीं है कि सभी मौजूदा मैपिंग को होल्ड कर सके। ऑपरेटिंग सिस्टम को मिसेस को संभालने के लिए तैयार रहना चाहिए, ठीक वैसे ही जैसे कि MIPS-शैली के सॉफ़्टवेयर से भरे TLB के साथ होता है।

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

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

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

इस स्कीमा में एक आभासी पता दो में विभाजित किया जा सकता है, पहली छमाही एक आभासी पृष्ठ संख्या और दूसरी छमाही उस पृष्ठ में ऑफसेट होती है।

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

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

उल्टे पृष्ठ तालिकाओं का उपयोग उदाहरण के लिए PowerPC, UltraSPARC और IA-64 आर्किटेक्चर पर किया जाता है।

बहुस्तरीय पेज टेबल
उलटा पृष्ठ तालिका भौतिक स्मृति में सभी फ़्रेमों के लिए स्थापित मैपिंग की एक सूची रखता है। हालाँकि, यह काफी बेकार हो सकता है। ऐसा करने के बजाय, हम एक पेज टेबल संरचना बना सकते हैं जिसमें वर्चुअल पेजों के लिए मैपिंग शामिल है। यह वर्चुअल मेमोरी के एक निश्चित ब्लॉक को कवर करने वाली कई पेज टेबल को रखकर किया जाता है। उदाहरण के लिए, हम छोटे 1024-प्रविष्टि वाले 4 केबी पृष्ठ बना सकते हैं जो 4 एमबी की वर्चुअल मेमोरी को कवर करते हैं।

यह उपयोगी है क्योंकि अक्सर एक प्रक्रिया को चलाने में वर्चुअल मेमोरी के सबसे ऊपरी हिस्से और सबसे निचले हिस्से का उपयोग किया जाता है - शीर्ष का उपयोग अक्सर टेक्स्ट और डेटा सेगमेंट के लिए किया जाता है जबकि स्टैक के लिए नीचे, बीच में मुफ्त मेमोरी के साथ। बहुस्तरीय पृष्ठ तालिका स्मृति के केवल ऊपरी और निचले हिस्सों को कवर करने के लिए कुछ छोटे पृष्ठ तालिकाओं को रख सकती है और केवल आवश्यक होने पर ही नई बना सकती है।

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

बहुस्तरीय पेज टेबल को पदानुक्रमित पेज टेबल भी कहा जाता है।

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

हालाँकि, इस रेखीय पृष्ठ तालिका संरचना का हिस्सा हमेशा भौतिक स्मृति में निवासी रहना चाहिए ताकि परिपत्र पृष्ठ दोषों को रोका जा सके और पृष्ठ तालिका के एक महत्वपूर्ण भाग की तलाश की जा सके जो पृष्ठ तालिका में मौजूद नहीं है।

नेस्टेड पेज टेबल


हार्डवेयर वर्चुअलाइजेशन के प्रदर्शन को बढ़ाने के लिए नेस्टेड पेज टेबल को लागू किया जा सकता है। पेज-टेबल वर्चुअलाइजेशन के लिए हार्डवेयर समर्थन प्रदान करने से अनुकरण करने की आवश्यकता बहुत कम हो जाती है। x86 वर्चुअलाइजेशन के लिए वर्तमान विकल्प इंटेल की विस्तारित पृष्ठ तालिका  फीचर और एएमडी की रैपिड वर्चुअलाइजेशन इंडेक्सिंग फीचर हैं।

यह भी देखें

 * अनुवाद लुकसाइड बफर
 * पृष्ठ प्रतिस्थापन एल्गोरिथ्म
 * सूचक (कंप्यूटर प्रोग्रामिंग)
 * डब्ल्यू ^ एक्स

अग्रिम पठन

 * Andrew S. Tanenbaum, Modern Operating Systems, ISBN 0-13-031358-0
 * A. Silberschatz, P. B. Galvin, G. Gagne, Operating System Concepts, ISBN 0-471-69466-5
 * Operating Systems: Three Easy Pieces, by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. Arpaci-Dusseau Books, 2014. Relevant chapters: Address Spaces Address Translation Introduction to Paging TLBs Advanced Page Tables
 * CNE Virtual Memory Tutorial, Center for the New Engineer George Mason University, Page Tables

बाहरी संबंध

 * The Memory Management Reference