पेज टेबल: Difference between revisions
(Created page with "{{Short description|Data structure that maps virtual addresses with physical addresses}} File:Virtual address space and physical address space relationship.svg|thumb|right|u...") |
No edit summary |
||
| Line 1: | Line 1: | ||
{{Short description|Data structure that maps virtual addresses with physical addresses}} | {{Short description|Data structure that maps virtual addresses with physical addresses}} | ||
[[File:Virtual address space and physical address space relationship.svg|thumb|right|upright=2|एक साधारण पता स्थान योजना के | [[File:Virtual address space and physical address space relationship.svg|thumb|right|upright=2|एक साधारण पता स्थान योजना के अंदर आभासी पतों और भौतिक स्मृति में पृष्ठों के बीच संबंध। भौतिक स्मृति में कई प्रक्रियाओं से संबंधित पृष्ठ हो सकते हैं। पृष्ठों को डिस्क पर रखा जा सकता है यदि संभवतः ही कभी उपयोग किया जाता है, या यदि भौतिक मेमोरी भरी हुई है। उपरोक्त आरेख में, कुछ पृष्ठ भौतिक स्मृति में नहीं हैं।]]एक पेज टेबल एक [[कंप्यूटर]] [[ऑपरेटिंग सिस्टम|ऑपरेटिंग]] प्रणाली में [[ आभासी मेमोरी ]] प्रणाली द्वारा वर्चुअल पतों और भौतिक पतों के बीच मैपिंग को स्टोर करने के लिए उपयोग की जाने वाली [[डेटा संरचना]] है। वर्चुअल पतों का उपयोग एक्सेसिंग [[ प्रक्रिया (कंप्यूटिंग) ]] द्वारा निष्पादित प्रोग्राम द्वारा किया जाता है, जबकि भौतिक पतों का उपयोग हार्डवेयर, या अधिक विशेष रूप से, [[ रैंडम एक्सेस मेमोरी ]] (रैम) उप प्रणाली द्वारा किया जाता है। पेज टेबल [[ [[आभासी पता]] अनुवाद ]] का एक प्रमुख घटक है जो मेमोरी में [[डेटा (कंप्यूटिंग)]] तक पहुंचने के लिए आवश्यक है। | ||
== {{Anchor| | == <nowiki>{{Anchor|पीटीई }पृष्ठ तालिका की भूमिका</nowiki> == | ||
वर्चुअल मेमोरी का उपयोग करने वाले ऑपरेटिंग | वर्चुअल मेमोरी का उपयोग करने वाले ऑपरेटिंग प्रणाली में, प्रत्येक प्रक्रिया को यह आभास दिया जाता है कि यह मेमोरी के बड़े, सन्निहित वर्गों के साथ काम कर रही है। भौतिक रूप से, प्रत्येक प्रक्रिया की मेमोरी को भौतिक मेमोरी के विभिन्न क्षेत्रों में फैलाया जा सकता है, या सेकेंडरी स्टोरेज में स्थानांतरित ([[पेजिंग]]) किया जा सकता है, सामान्यतः [[हार्ड डिस्क ड्राइव]] (एचडीडी ) या [[ठोस राज्य ड्राइव]] (एसएसडी ) में। | ||
जब कोई प्रक्रिया अपनी मेमोरी में डेटा तक पहुंच का अनुरोध करती है, तो यह ऑपरेटिंग | जब कोई प्रक्रिया अपनी मेमोरी में डेटा तक पहुंच का अनुरोध करती है, तो यह ऑपरेटिंग प्रणाली की जिम्मेदारी होती है कि वह प्रक्रिया द्वारा प्रदान किए गए वर्चुअल एड्रेस को वास्तविक मेमोरी के भौतिक पते पर मैप करे जहां वह डेटा संग्रहीत है। पेज टेबल वह स्थान है जहां ऑपरेटिंग प्रणाली वर्चुअल एड्रेस के अपने मैपिंग को फिजिकल एड्रेस पर स्टोर करता है, प्रत्येक मैपिंग को पेज टेबल एंट्री (पीटीई ) के रूप में भी जाना जाता है।<ref>{{cite web|url=http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Memory/virtual.html|title=आभासी मेमोरी|work=umd.edu|access-date=28 September 2015}}</ref><ref>{{cite web|url=https://www.kernel.org/doc/gorman/html/understand/understand006.html|title=पृष्ठ तालिका प्रबंधन|work=kernel.org|access-date=28 September 2015}}</ref> | ||
== अनुवाद प्रक्रिया == | == अनुवाद प्रक्रिया == | ||
[[File:Page table actions.svg|thumb|right|upright=2|आभासी से भौतिक पता अनुवाद पर की गई कार्रवाइयाँ। यदि कोई टीएलबी मिस होती है तो प्रत्येक अनुवाद फिर से शुरू हो जाता है, | [[File:Page table actions.svg|thumb|right|upright=2|आभासी से भौतिक पता अनुवाद पर की गई कार्रवाइयाँ। यदि कोई टीएलबी मिस होती है तो प्रत्येक अनुवाद फिर से शुरू हो जाता है, जिससे हार्डवेयर के माध्यम से लुकअप सही ढंग से हो सके।]]सीपीयू के अंदर [[ स्मृति प्रबंधन इकाई ]] (एमएमयू) ऑपरेटिंग प्रणाली के पेज टेबल से हाल ही में उपयोग किए गए मैपिंग का कैश स्टोर करता है। इसे [[अनुवाद लुकसाइड बफर]] (टीएलबी ) कहा जाता है, जो एक सहयोगी कैश है। | ||
जब किसी आभासी पते को भौतिक पते में अनुवादित करने की आवश्यकता होती है, तो पहले | जब किसी आभासी पते को भौतिक पते में अनुवादित करने की आवश्यकता होती है, तो पहले टीएलबी की खोज की जाती है। यदि कोई मैच मिलता है, जिसे टीएलबी हिट के रूप में जाना जाता है, तो भौतिक पता लौटा दिया जाता है और मेमोरी एक्सेस जारी रह सकती है। चूंकि , यदि कोई मेल नहीं है, जिसे टीएलबी मिस कहा जाता है, तो एमएमयू या ऑपरेटिंग प्रणाली का टीएलबी मिस हैंडलर सामान्यतः पेज टेबल में एड्रेस मैपिंग को देखेगा कि मैपिंग उपस्थित है या नहीं, जिसे पेज वॉक कहा जाता है। यदि कोई उपस्थित है, तो इसे वापस टीएलबी में लिखा जाता है, जो किया जाना चाहिए क्योंकि हार्डवेयर टीएलबी के माध्यम से वर्चुअल मेमोरी प्रणाली में मेमोरी एक्सेस करता है, और फॉल्टिंग इंस्ट्रक्शन फिर से शुरू हो जाता है, जो समानांतर में भी हो सकता है। बाद के अनुवाद का परिणाम टीएलबी हिट होगा, और मेमोरी एक्सेस जारी रहेगा। | ||
== अनुवाद विफलता == | == अनुवाद विफलता == | ||
पेज टेबल लुकअप विफल हो सकता है, पेज फॉल्ट को दो कारणों से ट्रिगर कर सकता है: | पेज टेबल लुकअप विफल हो सकता है, पेज फॉल्ट को दो कारणों से ट्रिगर कर सकता है: | ||
* वर्चुअल एड्रेस के लिए कोई अनुवाद उपलब्ध नहीं होने पर लुकअप विफल हो सकता है, जिसका अर्थ है कि वर्चुअल एड्रेस अमान्य है। यह | * वर्चुअल एड्रेस के लिए कोई अनुवाद उपलब्ध नहीं होने पर लुकअप विफल हो सकता है, जिसका अर्थ है कि वर्चुअल एड्रेस अमान्य है। यह सामान्यतः एक प्रोग्रामिंग त्रुटि के कारण होता है, और समस्या से निपटने के लिए ऑपरेटिंग प्रणाली को कुछ कार्रवाई करनी चाहिए। आधुनिक ऑपरेटिंग प्रणाली पर, यह आपत्तिजनक प्रोग्राम को भेजे जाने वाले [[ विखंडन दोष ]] सिग्नल का कारण बनेगा। | ||
* लुकअप विफल भी हो सकता है यदि पृष्ठ वर्तमान में भौतिक स्मृति में निवासी नहीं है। यह तब होगा जब अनुरोधित पृष्ठ दूसरे पृष्ठ के लिए | * लुकअप विफल भी हो सकता है यदि पृष्ठ वर्तमान में भौतिक स्मृति में निवासी नहीं है। यह तब होगा जब अनुरोधित पृष्ठ दूसरे पृष्ठ के लिए स्थान बनाने के लिए भौतिक स्मृति का पेजिंग कर रहा हो। इस स्थिति में पृष्ठ को हार्ड डिस्क ड्राइव जैसे माध्यम पर स्थित द्वितीयक स्टोर में पृष्ठांकित किया जाता है (यह द्वितीयक स्टोर, या बैकिंग स्टोर, यदि यह डिस्क विभाजन है, या स्वैप फ़ाइल है, तो इसे अधिकांशतः स्वैप विभाजन कहा जाता है। या पृष्ठ फ़ाइल यदि यह एक फ़ाइल है)। जब ऐसा होता है तो पृष्ठ को डिस्क से लिया जाना चाहिए और भौतिक स्मृति में वापस रखा जाना चाहिए। [[मेमोरी-मैप की गई फ़ाइल]] के लिए एक समान तंत्र का उपयोग किया जाता है, जिन्हें वर्चुअल मेमोरी में मैप किया जाता है और मांग पर भौतिक मेमोरी में लोड किया जाता है। | ||
जब भौतिक स्मृति पूर्ण नहीं होती है तो यह एक साधारण संक्रिया है; पृष्ठ को भौतिक मेमोरी में वापस लिखा जाता है, पृष्ठ तालिका और | जब भौतिक स्मृति पूर्ण नहीं होती है तो यह एक साधारण संक्रिया है; पृष्ठ को भौतिक मेमोरी में वापस लिखा जाता है, पृष्ठ तालिका और टीएलबी को अपडेट किया जाता है, और निर्देश को फिर से शुरू किया जाता है। चूंकि , जब भौतिक स्मृति भर जाती है, तो अनुरोधित पृष्ठ के लिए स्थान बनाने के लिए भौतिक स्मृति में एक या अधिक पृष्ठों को पृष्ठांकित करने की आवश्यकता होगी। पृष्ठ तालिका को यह चिह्नित करने के लिए अद्यतन करने की आवश्यकता है कि जो पृष्ठ पहले भौतिक मेमोरी में थे, वे अब नहीं हैं, और यह चिह्नित करने के लिए कि डिस्क पर उपस्थित पृष्ठ अब भौतिक मेमोरी में है। टीएलबी को भी अपडेट करने की आवश्यकता है, जिसमें पेज आउट पेज को हटाना और निर्देश को फिर से शुरू करना सम्मिलित है। कौन सा पेज टू पेज आउट [[पृष्ठ प्रतिस्थापन एल्गोरिथ्म]] का विषय है। | ||
कुछ | कुछ एमएमयू अन्य कारणों से पेज फॉल्ट को ट्रिगर करते हैं, चाहे पेज वर्तमान में भौतिक मेमोरी में स्थित हो या नहीं और किसी प्रक्रिया के वर्चुअल एड्रेस स्पेस में मैप किया गया हो: | ||
* पृष्ठ तालिका में केवल-पढ़ने के लिए बिट सेट होने पर लिखने का प्रयास [[पृष्ठ दोष]] का कारण बनता है। यह कई ऑपरेटिंग | * पृष्ठ तालिका में केवल-पढ़ने के लिए बिट सेट होने पर लिखने का प्रयास [[पृष्ठ दोष]] का कारण बनता है। यह कई ऑपरेटिंग प्रणाली के [[लिखने पर नकल]] के कार्यान्वयन का एक सामान्य हिस्सा है; यह तब भी हो सकता है जब एक ऐसे स्थान पर लिखा जाता है जहां से प्रक्रिया को पढ़ने की अनुमति दी जाती है किन्तु जिस पर लिखने की अनुमति नहीं होती है, उस स्थिति में प्रक्रिया को एक संकेत दिया जाता है। | ||
* पृष्ठ तालिका में पृष्ठ तालिका में | * पृष्ठ तालिका में पृष्ठ तालिका में एनएक्स बिट (नो-एक्ज़ीक्यूट बिट) सेट होने पर कोड निष्पादित करने का प्रयास पृष्ठ दोष का कारण बनता है। यह एक ऑपरेटिंग प्रणाली द्वारा उपयोग किया जा सकता है, रीड-ओनली बिट के संयोजन में, [[एक्सओआर निष्पादन लिखें]] सुविधा प्रदान करने के लिए जो कुछ प्रकार के कारनामों को रोकता है।<ref> | ||
[http://www.openbsd.org/papers/ven05-deraadt/mgp00009.html "W^X - The Mechanism"]. | [http://www.openbsd.org/papers/ven05-deraadt/mgp00009.html "W^X - The Mechanism"]. | ||
</ref> | </ref> | ||
| Line 28: | Line 28: | ||
== फ़्रेम तालिका डेटा == | == फ़्रेम तालिका डेटा == | ||
सरलतम पेज टेबल | सरलतम पेज टेबल प्रणाली अधिकांशतः एक [[पेज फ्रेम]] टेबल और एक पेज टेबल बनाए रखते हैं। फ़्रेम तालिका में यह जानकारी होती है कि कौन से फ़्रेम मैप किए गए हैं। अधिक उन्नत प्रणालियों में, फ़्रेम तालिका में यह जानकारी भी हो सकती है कि कोई पृष्ठ किस पता स्थान से संबंधित है, सांख्यिकी जानकारी, या अन्य पृष्ठभूमि जानकारी। | ||
== पृष्ठ तालिका डेटा == | == पृष्ठ तालिका डेटा == | ||
| Line 36: | Line 36: | ||
=== पृष्ठ तालिका प्रविष्टि === | === पृष्ठ तालिका प्रविष्टि === | ||
प्रत्येक पृष्ठ तालिका प्रविष्टि ( | प्रत्येक पृष्ठ तालिका प्रविष्टि (पीटीई ) पृष्ठ के आभासी पते और भौतिक फ़्रेम के पते के बीच मानचित्रण रखती है। पृष्ठ के बारे में सहायक जानकारी भी है जैसे कि वर्तमान बिट, डर्टी बिट या संशोधित बिट, पता स्थान या प्रक्रिया आईडी जानकारी, अन्य। | ||
हार्ड डिस्क ड्राइव जैसे सेकेंडरी स्टोरेज का उपयोग भौतिक मेमोरी बढ़ाने के लिए किया जा सकता है। पृष्ठों को भौतिक मेमोरी और डिस्क से अंदर और बाहर पृष्ठांकित किया जा सकता है। वर्तमान बिट इंगित कर सकता है कि वर्तमान में भौतिक स्मृति में कौन से पृष्ठ | हार्ड डिस्क ड्राइव जैसे सेकेंडरी स्टोरेज का उपयोग भौतिक मेमोरी बढ़ाने के लिए किया जा सकता है। पृष्ठों को भौतिक मेमोरी और डिस्क से अंदर और बाहर पृष्ठांकित किया जा सकता है। वर्तमान बिट इंगित कर सकता है कि वर्तमान में भौतिक स्मृति में कौन से पृष्ठ उपस्थित हैं या डिस्क पर हैं, और यह संकेत कर सकता है कि इन विभिन्न पृष्ठों का इलाज कैसे किया जाए, अर्थात डिस्क से एक पृष्ठ लोड करना है और भौतिक स्मृति में एक और पृष्ठ बाहर करना है। | ||
[[गंदा सा]] प्रदर्शन अनुकूलन के लिए अनुमति देता है। डिस्क पर एक पेज जिसे भौतिक मेमोरी में पेज किया जाता है, फिर से पढ़ा जाता है, और बाद में फिर से पेज आउट किया जाता है, उसे वापस डिस्क पर लिखने की आवश्यकता नहीं होती है, क्योंकि पेज नहीं बदला है। | [[गंदा सा]] प्रदर्शन अनुकूलन के लिए अनुमति देता है। डिस्क पर एक पेज जिसे भौतिक मेमोरी में पेज किया जाता है, फिर से पढ़ा जाता है, और बाद में फिर से पेज आउट किया जाता है, उसे वापस डिस्क पर लिखने की आवश्यकता नहीं होती है, क्योंकि पेज नहीं बदला है। चूंकि , यदि पेज को पेजिंग के बाद लिखा गया था, तो इसका गंदा बिट सेट किया जाएगा, यह दर्शाता है कि पेज को बैकिंग स्टोर में वापस लिखा जाना चाहिए। इस रणनीति के लिए आवश्यक है कि बैकिंग स्टोर पृष्ठ की एक प्रति को स्मृति में रखने के बाद बनाए रखे। जब एक गंदे बिट का उपयोग नहीं किया जाता है, तो बैकिंग स्टोर को किसी भी क्षण सभी पेज-आउट पृष्ठों के तात्क्षणिक कुल आकार जितना बड़ा होना चाहिए। जब एक गंदे बिट का उपयोग किया जाता है, तो हर समय कुछ पृष्ठ भौतिक मेमोरी और बैकिंग स्टोर दोनों में उपस्थित रहेंगे। | ||
ऑपरेटिंग | ऑपरेटिंग प्रणाली में जो [[सिंगल एड्रेस स्पेस ऑपरेटिंग सिस्टम|सिंगल एड्रेस स्पेस ऑपरेटिंग]] प्रणाली नहीं हैं, एड्रेस स्पेस या प्रोसेस आईडी की जानकारी आवश्यक है, इसलिए वर्चुअल मेमोरी मैनेजमेंट प्रणाली जानता है कि किस पेज को किस प्रोसेस से जोड़ा जाए। दो प्रक्रियाएँ विभिन्न उद्देश्यों के लिए दो समान आभासी पतों का उपयोग कर सकती हैं। पृष्ठ तालिका को दो प्रक्रियाओं के लिए अलग-अलग वर्चुअल मेमोरी मैपिंग की आपूर्ति करनी चाहिए। यह दो प्रक्रियाओं को अलग-अलग पता नक्शा पहचानकर्ता निर्दिष्ट करके या प्रक्रिया आईडी का उपयोग करके किया जा सकता है। वर्चुअल मेमोरी पेजों के साथ प्रोसेस आईडी को जोड़ने से पेज आउट करने के लिए पेजों के चयन में भी सहायता मिल सकती है, क्योंकि निष्क्रिय प्रक्रियाओं से जुड़े पेज, विशेष रूप से ऐसी प्रक्रियाएं जिनके कोड पेज पेज आउट हो चुके हैं, सक्रिय प्रक्रियाओं से संबंधित पेजों की तुलना में तुरंत इसकी आवश्यकता कम होती है। | ||
प्रक्रिया-अद्वितीय पहचानकर्ताओं के साथ पृष्ठ तालिका प्रविष्टियों को टैग करने के विकल्प के रूप में, पृष्ठ तालिका स्वयं प्रत्येक प्रक्रिया के लिए एक अलग वर्चुअल-मेमोरी पृष्ठ पर कब्जा कर सकती है | प्रक्रिया-अद्वितीय पहचानकर्ताओं के साथ पृष्ठ तालिका प्रविष्टियों को टैग करने के विकल्प के रूप में, पृष्ठ तालिका स्वयं प्रत्येक प्रक्रिया के लिए एक अलग वर्चुअल-मेमोरी पृष्ठ पर कब्जा कर सकती है जिससे पृष्ठ तालिका प्रक्रिया संदर्भ का एक हिस्सा बन जाए। इस तरह के कार्यान्वयन में, प्रक्रिया की पृष्ठ तालिका को पृष्ठांकित किया जा सकता है जब भी प्रक्रिया अब स्मृति में नहीं रहती है। | ||
== पृष्ठ तालिका प्रकार == | == पृष्ठ तालिका प्रकार == | ||
| Line 50: | Line 50: | ||
=== {{Anchor|FRAME-TABLE}उलटा पेज टेबल === | === {{Anchor|FRAME-TABLE}उलटा पेज टेबल === | ||
एक इनवर्टेड पेज टेबल (आईपीटी) को ट्रांसलेशन लुकसाइड बफर के ऑफ-चिप एक्सटेंशन के रूप में सबसे अच्छा माना जाता है जो सामान्य | एक इनवर्टेड पेज टेबल (आईपीटी) को ट्रांसलेशन लुकसाइड बफर के ऑफ-चिप एक्सटेंशन के रूप में सबसे अच्छा माना जाता है जो सामान्य प्रणाली रैम का उपयोग करता है। वास्तविक पृष्ठ तालिका के विपरीत, यह आवश्यक नहीं है कि सभी वर्तमान मैपिंग को होल्ड कर सके। ऑपरेटिंग प्रणाली को मिसेस को संभालने के लिए तैयार रहना चाहिए, ठीक वैसे ही जैसे कि एमआईपीएस -शैली के सॉफ़्टवेयर से भरे टीएलबी के साथ होता है। | ||
आईपीटी एक डेटा संरचना में एक पेज टेबल और एक फ्रेम टेबल को जोड़ती है। इसके मूल में एक निश्चित आकार की तालिका होती है जिसमें पंक्तियों की संख्या मेमोरी में फ़्रेम की संख्या के बराबर होती है। यदि 4,000 फ्रेम हैं, तो उल्टे पृष्ठ तालिका में 4,000 पंक्तियाँ हैं। प्रत्येक पंक्ति के लिए वर्चुअल पृष्ठ संख्या (वीपीएन), भौतिक पृष्ठ संख्या (भौतिक पता नहीं), कुछ अन्य डेटा और [[हैश टक्कर]] श्रृंखला बनाने के साधन के लिए एक प्रविष्टि है, जैसा कि हम बाद में देखेंगे। | |||
कोर आईपीटी संरचना की सभी प्रविष्टियों के माध्यम से खोज करने के लिए अक्षम है, और आईपीटी में एक सूचकांक के लिए आभासी पतों (और पता स्थान / पीआईडी जानकारी) को मैप करने के लिए एक [[हैश तालिका]] का उपयोग किया जा सकता है - यह वह | कोर आईपीटी संरचना की सभी प्रविष्टियों के माध्यम से खोज करने के लिए अक्षम है, और आईपीटी में एक सूचकांक के लिए आभासी पतों (और पता स्थान / पीआईडी जानकारी) को मैप करने के लिए एक [[हैश तालिका]] का उपयोग किया जा सकता है - यह वह स्थान है जहां टक्कर श्रृंखला का उपयोग किया जाता है . इस हैश टेबल को हैश एंकर टेबल कहा जाता है। हैशिंग फ़ंक्शन सामान्यतः कवरेज के लिए अनुकूलित नहीं होता है - अपरिष्कृत गति अधिक वांछनीय है। बेशक, हैश टेबल टकराव का अनुभव करते हैं। इस चुने हुए हैशिंग फ़ंक्शन के कारण, हम उपयोग में बहुत सारी टक्करों का अनुभव कर सकते हैं, इसलिए तालिका में प्रत्येक प्रविष्टि के लिए वीपीएन यह जांचने के लिए प्रदान किया जाता है कि यह खोजी गई प्रविष्टि है या टक्कर। | ||
मैपिंग की खोज में हैश एंकर टेबल का उपयोग किया जाता है। यदि कोई प्रविष्टि | मैपिंग की खोज में हैश एंकर टेबल का उपयोग किया जाता है। यदि कोई प्रविष्टि उपस्थित नहीं है, तो पेज फॉल्ट होता है। अन्यथा, प्रविष्टि पाई जाती है। वास्तुकला के आधार पर, प्रविष्टि को फिर से टीएलबी में रखा जा सकता है और मेमोरी संदर्भ को फिर से शुरू किया जा सकता है, या टक्कर श्रृंखला का तब तक पालन किया जा सकता है जब तक कि यह समाप्त न हो जाए और पृष्ठ दोष न हो जाए। | ||
इस स्कीमा में एक आभासी पता दो में विभाजित किया जा सकता है, पहली छमाही एक आभासी पृष्ठ संख्या और दूसरी छमाही उस पृष्ठ में ऑफसेट होती है। | इस स्कीमा में एक आभासी पता दो में विभाजित किया जा सकता है, पहली छमाही एक आभासी पृष्ठ संख्या और दूसरी छमाही उस पृष्ठ में ऑफसेट होती है। | ||
इस डिज़ाइन के साथ एक बड़ी समस्या [[हैश फंकशन]] के कारण खराब कैश स्थान है। ट्री-आधारित डिज़ाइन सन्निकट स्थानों में सन्निकट पृष्ठों के लिए पृष्ठ तालिका प्रविष्टियाँ रखकर इससे बचते हैं, | इस डिज़ाइन के साथ एक बड़ी समस्या [[हैश फंकशन]] के कारण खराब कैश स्थान है। ट्री-आधारित डिज़ाइन सन्निकट स्थानों में सन्निकट पृष्ठों के लिए पृष्ठ तालिका प्रविष्टियाँ रखकर इससे बचते हैं, किन्तु एक उलटी पृष्ठ तालिका प्रविष्टियों को चारों ओर बिखेर कर संदर्भ के स्थानिक इलाके को नष्ट कर देती है। एक ऑपरेटिंग प्रणाली इस समस्या को कम करने के लिए हैश टेबल के आकार को कम कर सकता है, जिसमें ट्रेड-ऑफ एक बढ़ी हुई मिस रेट है। | ||
सामान्य रूप से एक हैश तालिका होती है, भौतिक मेमोरी में सन्निहित, सभी प्रक्रियाओं द्वारा साझा की जाती है। एक प्रति-प्रक्रिया पहचानकर्ता का उपयोग विभिन्न प्रक्रियाओं के पृष्ठों को एक-दूसरे से अलग करने के लिए किया जाता है। किसी दी गई प्रक्रिया की पृष्ठ तालिका प्रविष्टियों को हटाना कुछ धीमा है; ओएस इसका सामना करने में देरी के लिए प्रति-प्रक्रिया पहचानकर्ता मानों का पुन: उपयोग करने से बच सकता है। वैकल्पिक रूप से, प्रति-प्रक्रिया हैश तालिका का उपयोग किया जा सकता है, | सामान्य रूप से एक हैश तालिका होती है, भौतिक मेमोरी में सन्निहित, सभी प्रक्रियाओं द्वारा साझा की जाती है। एक प्रति-प्रक्रिया पहचानकर्ता का उपयोग विभिन्न प्रक्रियाओं के पृष्ठों को एक-दूसरे से अलग करने के लिए किया जाता है। किसी दी गई प्रक्रिया की पृष्ठ तालिका प्रविष्टियों को हटाना कुछ धीमा है; ओएस इसका सामना करने में देरी के लिए प्रति-प्रक्रिया पहचानकर्ता मानों का पुन: उपयोग करने से बच सकता है। वैकल्पिक रूप से, प्रति-प्रक्रिया हैश तालिका का उपयोग किया जा सकता है, किन्तु [[विखंडन (कंप्यूटिंग)]] के कारण वे अव्यावहारिक हैं, जिसके लिए तालिकाओं को पूर्व-आवंटित करने की आवश्यकता होती है। | ||
उल्टे पृष्ठ तालिकाओं का उपयोग उदाहरण के लिए [[PowerPC]], [[UltraSPARC]] और [[IA-64]] आर्किटेक्चर पर किया जाता है।<ref>William Stallings, ''Operating Systems Internals and Design Principles'', p. 353.</ref> | उल्टे पृष्ठ तालिकाओं का उपयोग उदाहरण के लिए [[PowerPC]], [[UltraSPARC]] और [[IA-64]] आर्किटेक्चर पर किया जाता है।<ref>William Stallings, ''Operating Systems Internals and Design Principles'', p. 353.</ref> | ||
| Line 69: | Line 69: | ||
=== {{Anchor|MULTILEVEL}}बहुस्तरीय पेज टेबल === | === {{Anchor|MULTILEVEL}}बहुस्तरीय पेज टेबल === | ||
[[File:X86 Paging 4K.svg|thumb|right|upright=2|x[[86]] आर्किटेक्चर में दो-स्तरीय पृष्ठ तालिका संरचना (भौतिक पता एक्सटेंशन या पृष्ठ आकार एक्सटेंशन के बिना)।]] | [[File:X86 Paging 4K.svg|thumb|right|upright=2|x[[86]] आर्किटेक्चर में दो-स्तरीय पृष्ठ तालिका संरचना (भौतिक पता एक्सटेंशन या पृष्ठ आकार एक्सटेंशन के बिना)।]] | ||
[[File:X86 Paging PAE 4K.svg|thumb|right|upright=2|X86 आर्किटेक्चर में तीन-स्तरीय पृष्ठ तालिका संरचना (भौतिक पता एक्सटेंशन के साथ, पृष्ठ आकार एक्सटेंशन के बिना)।]]उलटा पृष्ठ तालिका भौतिक स्मृति में सभी फ़्रेमों के लिए स्थापित मैपिंग की एक सूची रखता है। | [[File:X86 Paging PAE 4K.svg|thumb|right|upright=2|X86 आर्किटेक्चर में तीन-स्तरीय पृष्ठ तालिका संरचना (भौतिक पता एक्सटेंशन के साथ, पृष्ठ आकार एक्सटेंशन के बिना)।]]उलटा पृष्ठ तालिका भौतिक स्मृति में सभी फ़्रेमों के लिए स्थापित मैपिंग की एक सूची रखता है। चूंकि , यह अधिक व्यर्थ हो सकता है। ऐसा करने के अतिरिक्त , हम एक पेज टेबल संरचना बना सकते हैं जिसमें वर्चुअल पेजों के लिए मैपिंग सम्मिलित है। यह वर्चुअल मेमोरी के एक निश्चित ब्लॉक को कवर करने वाली कई पेज टेबल को रखकर किया जाता है। उदाहरण के लिए, हम छोटे 1024-प्रविष्टि वाले 4 केबी पृष्ठ बना सकते हैं जो 4 एमबी की वर्चुअल मेमोरी को कवर करते हैं। | ||
यह उपयोगी है क्योंकि | यह उपयोगी है क्योंकि अधिकांशतः एक प्रक्रिया को चलाने में वर्चुअल मेमोरी के सबसे ऊपरी हिस्से और सबसे निचले हिस्से का उपयोग किया जाता है - शीर्ष का उपयोग अधिकांशतः टेक्स्ट और डेटा सेगमेंट के लिए किया जाता है जबकि स्टैक के लिए नीचे, बीच में मुफ्त मेमोरी के साथ। बहुस्तरीय पृष्ठ तालिका स्मृति के केवल ऊपरी और निचले हिस्सों को कवर करने के लिए कुछ छोटे पृष्ठ तालिकाओं को रख सकती है और केवल आवश्यक होने पर ही नई बना सकती है। | ||
अब, इनमें से प्रत्येक छोटे पेज टेबल एक मास्टर पेज टेबल द्वारा एक साथ जुड़े हुए हैं, प्रभावी रूप से ट्री (डेटा स्ट्रक्चर) डेटा स्ट्रक्चर बनाते हैं। केवल दो स्तरों की आवश्यकता नहीं है, बल्कि संभवतः कई स्तर हैं। उदाहरण के लिए, इस स्कीमा में एक वर्चुअल एड्रेस को तीन भागों में विभाजित किया जा सकता है: रूट पेज टेबल में इंडेक्स, सब-पेज टेबल में इंडेक्स और उस पेज में ऑफसेट। | अब, इनमें से प्रत्येक छोटे पेज टेबल एक मास्टर पेज टेबल द्वारा एक साथ जुड़े हुए हैं, प्रभावी रूप से ट्री (डेटा स्ट्रक्चर) डेटा स्ट्रक्चर बनाते हैं। केवल दो स्तरों की आवश्यकता नहीं है, बल्कि संभवतः कई स्तर हैं। उदाहरण के लिए, इस स्कीमा में एक वर्चुअल एड्रेस को तीन भागों में विभाजित किया जा सकता है: रूट पेज टेबल में इंडेक्स, सब-पेज टेबल में इंडेक्स और उस पेज में ऑफसेट। | ||
| Line 78: | Line 78: | ||
=== वर्चुअलाइज्ड पेज टेबल === | === वर्चुअलाइज्ड पेज टेबल === | ||
यह उल्लेख किया गया था कि एक पेज टेबल संरचना बनाना जिसमें वर्चुअल एड्रेस स्पेस में प्रत्येक वर्चुअल पेज के लिए मैपिंग | यह उल्लेख किया गया था कि एक पेज टेबल संरचना बनाना जिसमें वर्चुअल एड्रेस स्पेस में प्रत्येक वर्चुअल पेज के लिए मैपिंग सम्मिलित है, व्यर्थ हो सकता है। लेकिन, हम पेज टेबल को वर्चुअल मेमोरी में डालकर और वर्चुअल मेमोरी प्रणाली को पेज टेबल के लिए मेमोरी को मैनेज करने की अनुमति देकर अत्यधिक स्थान की चिंताओं को दूर कर सकते हैं। | ||
चूंकि , इस रेखीय पृष्ठ तालिका संरचना का हिस्सा सदैव भौतिक स्मृति में निवासी रहना चाहिए जिससे परिपत्र पृष्ठ दोषों को रोका जा सके और पृष्ठ तालिका के एक महत्वपूर्ण भाग की तलाश की जा सके जो पृष्ठ तालिका में उपस्थित नहीं है। | |||
=== नेस्टेड पेज टेबल === | === नेस्टेड पेज टेबल === | ||
:{{see also| | :{{see also|द्वितीय स्तर का पता अनुवाद}} | ||
[[हार्डवेयर वर्चुअलाइजेशन]] के प्रदर्शन को बढ़ाने के लिए नेस्टेड पेज टेबल को | [[हार्डवेयर वर्चुअलाइजेशन]] के प्रदर्शन को बढ़ाने के लिए नेस्टेड पेज टेबल को प्रयुक्त किया जा सकता है। [[पेज-टेबल वर्चुअलाइजेशन]] के लिए हार्डवेयर समर्थन प्रदान करने से अनुकरण करने की आवश्यकता बहुत कम हो जाती है। [[x86 वर्चुअलाइजेशन]] के लिए वर्तमान विकल्प [[इंटेल]] की [[ विस्तारित पृष्ठ तालिका ]] फीचर और [[एएमडी]] की [[रैपिड वर्चुअलाइजेशन इंडेक्सिंग]] फीचर हैं। | ||
== यह भी देखें == | == यह भी देखें == | ||
Revision as of 14:16, 30 April 2023
एक पेज टेबल एक कंप्यूटर ऑपरेटिंग प्रणाली में आभासी मेमोरी प्रणाली द्वारा वर्चुअल पतों और भौतिक पतों के बीच मैपिंग को स्टोर करने के लिए उपयोग की जाने वाली डेटा संरचना है। वर्चुअल पतों का उपयोग एक्सेसिंग प्रक्रिया (कंप्यूटिंग) द्वारा निष्पादित प्रोग्राम द्वारा किया जाता है, जबकि भौतिक पतों का उपयोग हार्डवेयर, या अधिक विशेष रूप से, रैंडम एक्सेस मेमोरी (रैम) उप प्रणाली द्वारा किया जाता है। पेज टेबल [[ आभासी पता अनुवाद ]] का एक प्रमुख घटक है जो मेमोरी में डेटा (कंप्यूटिंग) तक पहुंचने के लिए आवश्यक है।
{{Anchor|पीटीई }पृष्ठ तालिका की भूमिका
वर्चुअल मेमोरी का उपयोग करने वाले ऑपरेटिंग प्रणाली में, प्रत्येक प्रक्रिया को यह आभास दिया जाता है कि यह मेमोरी के बड़े, सन्निहित वर्गों के साथ काम कर रही है। भौतिक रूप से, प्रत्येक प्रक्रिया की मेमोरी को भौतिक मेमोरी के विभिन्न क्षेत्रों में फैलाया जा सकता है, या सेकेंडरी स्टोरेज में स्थानांतरित (पेजिंग) किया जा सकता है, सामान्यतः हार्ड डिस्क ड्राइव (एचडीडी ) या ठोस राज्य ड्राइव (एसएसडी ) में।
जब कोई प्रक्रिया अपनी मेमोरी में डेटा तक पहुंच का अनुरोध करती है, तो यह ऑपरेटिंग प्रणाली की जिम्मेदारी होती है कि वह प्रक्रिया द्वारा प्रदान किए गए वर्चुअल एड्रेस को वास्तविक मेमोरी के भौतिक पते पर मैप करे जहां वह डेटा संग्रहीत है। पेज टेबल वह स्थान है जहां ऑपरेटिंग प्रणाली वर्चुअल एड्रेस के अपने मैपिंग को फिजिकल एड्रेस पर स्टोर करता है, प्रत्येक मैपिंग को पेज टेबल एंट्री (पीटीई ) के रूप में भी जाना जाता है।[1][2]
अनुवाद प्रक्रिया
सीपीयू के अंदर स्मृति प्रबंधन इकाई (एमएमयू) ऑपरेटिंग प्रणाली के पेज टेबल से हाल ही में उपयोग किए गए मैपिंग का कैश स्टोर करता है। इसे अनुवाद लुकसाइड बफर (टीएलबी ) कहा जाता है, जो एक सहयोगी कैश है।
जब किसी आभासी पते को भौतिक पते में अनुवादित करने की आवश्यकता होती है, तो पहले टीएलबी की खोज की जाती है। यदि कोई मैच मिलता है, जिसे टीएलबी हिट के रूप में जाना जाता है, तो भौतिक पता लौटा दिया जाता है और मेमोरी एक्सेस जारी रह सकती है। चूंकि , यदि कोई मेल नहीं है, जिसे टीएलबी मिस कहा जाता है, तो एमएमयू या ऑपरेटिंग प्रणाली का टीएलबी मिस हैंडलर सामान्यतः पेज टेबल में एड्रेस मैपिंग को देखेगा कि मैपिंग उपस्थित है या नहीं, जिसे पेज वॉक कहा जाता है। यदि कोई उपस्थित है, तो इसे वापस टीएलबी में लिखा जाता है, जो किया जाना चाहिए क्योंकि हार्डवेयर टीएलबी के माध्यम से वर्चुअल मेमोरी प्रणाली में मेमोरी एक्सेस करता है, और फॉल्टिंग इंस्ट्रक्शन फिर से शुरू हो जाता है, जो समानांतर में भी हो सकता है। बाद के अनुवाद का परिणाम टीएलबी हिट होगा, और मेमोरी एक्सेस जारी रहेगा।
अनुवाद विफलता
पेज टेबल लुकअप विफल हो सकता है, पेज फॉल्ट को दो कारणों से ट्रिगर कर सकता है:
- वर्चुअल एड्रेस के लिए कोई अनुवाद उपलब्ध नहीं होने पर लुकअप विफल हो सकता है, जिसका अर्थ है कि वर्चुअल एड्रेस अमान्य है। यह सामान्यतः एक प्रोग्रामिंग त्रुटि के कारण होता है, और समस्या से निपटने के लिए ऑपरेटिंग प्रणाली को कुछ कार्रवाई करनी चाहिए। आधुनिक ऑपरेटिंग प्रणाली पर, यह आपत्तिजनक प्रोग्राम को भेजे जाने वाले विखंडन दोष सिग्नल का कारण बनेगा।
- लुकअप विफल भी हो सकता है यदि पृष्ठ वर्तमान में भौतिक स्मृति में निवासी नहीं है। यह तब होगा जब अनुरोधित पृष्ठ दूसरे पृष्ठ के लिए स्थान बनाने के लिए भौतिक स्मृति का पेजिंग कर रहा हो। इस स्थिति में पृष्ठ को हार्ड डिस्क ड्राइव जैसे माध्यम पर स्थित द्वितीयक स्टोर में पृष्ठांकित किया जाता है (यह द्वितीयक स्टोर, या बैकिंग स्टोर, यदि यह डिस्क विभाजन है, या स्वैप फ़ाइल है, तो इसे अधिकांशतः स्वैप विभाजन कहा जाता है। या पृष्ठ फ़ाइल यदि यह एक फ़ाइल है)। जब ऐसा होता है तो पृष्ठ को डिस्क से लिया जाना चाहिए और भौतिक स्मृति में वापस रखा जाना चाहिए। मेमोरी-मैप की गई फ़ाइल के लिए एक समान तंत्र का उपयोग किया जाता है, जिन्हें वर्चुअल मेमोरी में मैप किया जाता है और मांग पर भौतिक मेमोरी में लोड किया जाता है।
जब भौतिक स्मृति पूर्ण नहीं होती है तो यह एक साधारण संक्रिया है; पृष्ठ को भौतिक मेमोरी में वापस लिखा जाता है, पृष्ठ तालिका और टीएलबी को अपडेट किया जाता है, और निर्देश को फिर से शुरू किया जाता है। चूंकि , जब भौतिक स्मृति भर जाती है, तो अनुरोधित पृष्ठ के लिए स्थान बनाने के लिए भौतिक स्मृति में एक या अधिक पृष्ठों को पृष्ठांकित करने की आवश्यकता होगी। पृष्ठ तालिका को यह चिह्नित करने के लिए अद्यतन करने की आवश्यकता है कि जो पृष्ठ पहले भौतिक मेमोरी में थे, वे अब नहीं हैं, और यह चिह्नित करने के लिए कि डिस्क पर उपस्थित पृष्ठ अब भौतिक मेमोरी में है। टीएलबी को भी अपडेट करने की आवश्यकता है, जिसमें पेज आउट पेज को हटाना और निर्देश को फिर से शुरू करना सम्मिलित है। कौन सा पेज टू पेज आउट पृष्ठ प्रतिस्थापन एल्गोरिथ्म का विषय है।
कुछ एमएमयू अन्य कारणों से पेज फॉल्ट को ट्रिगर करते हैं, चाहे पेज वर्तमान में भौतिक मेमोरी में स्थित हो या नहीं और किसी प्रक्रिया के वर्चुअल एड्रेस स्पेस में मैप किया गया हो:
- पृष्ठ तालिका में केवल-पढ़ने के लिए बिट सेट होने पर लिखने का प्रयास पृष्ठ दोष का कारण बनता है। यह कई ऑपरेटिंग प्रणाली के लिखने पर नकल के कार्यान्वयन का एक सामान्य हिस्सा है; यह तब भी हो सकता है जब एक ऐसे स्थान पर लिखा जाता है जहां से प्रक्रिया को पढ़ने की अनुमति दी जाती है किन्तु जिस पर लिखने की अनुमति नहीं होती है, उस स्थिति में प्रक्रिया को एक संकेत दिया जाता है।
- पृष्ठ तालिका में पृष्ठ तालिका में एनएक्स बिट (नो-एक्ज़ीक्यूट बिट) सेट होने पर कोड निष्पादित करने का प्रयास पृष्ठ दोष का कारण बनता है। यह एक ऑपरेटिंग प्रणाली द्वारा उपयोग किया जा सकता है, रीड-ओनली बिट के संयोजन में, एक्सओआर निष्पादन लिखें सुविधा प्रदान करने के लिए जो कुछ प्रकार के कारनामों को रोकता है।[3]
फ़्रेम तालिका डेटा
सरलतम पेज टेबल प्रणाली अधिकांशतः एक पेज फ्रेम टेबल और एक पेज टेबल बनाए रखते हैं। फ़्रेम तालिका में यह जानकारी होती है कि कौन से फ़्रेम मैप किए गए हैं। अधिक उन्नत प्रणालियों में, फ़्रेम तालिका में यह जानकारी भी हो सकती है कि कोई पृष्ठ किस पता स्थान से संबंधित है, सांख्यिकी जानकारी, या अन्य पृष्ठभूमि जानकारी।
पृष्ठ तालिका डेटा
पृष्ठ तालिका पृष्ठ तालिका प्रविष्टियों की एक सरणी है।
पृष्ठ तालिका प्रविष्टि
प्रत्येक पृष्ठ तालिका प्रविष्टि (पीटीई ) पृष्ठ के आभासी पते और भौतिक फ़्रेम के पते के बीच मानचित्रण रखती है। पृष्ठ के बारे में सहायक जानकारी भी है जैसे कि वर्तमान बिट, डर्टी बिट या संशोधित बिट, पता स्थान या प्रक्रिया आईडी जानकारी, अन्य।
हार्ड डिस्क ड्राइव जैसे सेकेंडरी स्टोरेज का उपयोग भौतिक मेमोरी बढ़ाने के लिए किया जा सकता है। पृष्ठों को भौतिक मेमोरी और डिस्क से अंदर और बाहर पृष्ठांकित किया जा सकता है। वर्तमान बिट इंगित कर सकता है कि वर्तमान में भौतिक स्मृति में कौन से पृष्ठ उपस्थित हैं या डिस्क पर हैं, और यह संकेत कर सकता है कि इन विभिन्न पृष्ठों का इलाज कैसे किया जाए, अर्थात डिस्क से एक पृष्ठ लोड करना है और भौतिक स्मृति में एक और पृष्ठ बाहर करना है।
गंदा सा प्रदर्शन अनुकूलन के लिए अनुमति देता है। डिस्क पर एक पेज जिसे भौतिक मेमोरी में पेज किया जाता है, फिर से पढ़ा जाता है, और बाद में फिर से पेज आउट किया जाता है, उसे वापस डिस्क पर लिखने की आवश्यकता नहीं होती है, क्योंकि पेज नहीं बदला है। चूंकि , यदि पेज को पेजिंग के बाद लिखा गया था, तो इसका गंदा बिट सेट किया जाएगा, यह दर्शाता है कि पेज को बैकिंग स्टोर में वापस लिखा जाना चाहिए। इस रणनीति के लिए आवश्यक है कि बैकिंग स्टोर पृष्ठ की एक प्रति को स्मृति में रखने के बाद बनाए रखे। जब एक गंदे बिट का उपयोग नहीं किया जाता है, तो बैकिंग स्टोर को किसी भी क्षण सभी पेज-आउट पृष्ठों के तात्क्षणिक कुल आकार जितना बड़ा होना चाहिए। जब एक गंदे बिट का उपयोग किया जाता है, तो हर समय कुछ पृष्ठ भौतिक मेमोरी और बैकिंग स्टोर दोनों में उपस्थित रहेंगे।
ऑपरेटिंग प्रणाली में जो सिंगल एड्रेस स्पेस ऑपरेटिंग प्रणाली नहीं हैं, एड्रेस स्पेस या प्रोसेस आईडी की जानकारी आवश्यक है, इसलिए वर्चुअल मेमोरी मैनेजमेंट प्रणाली जानता है कि किस पेज को किस प्रोसेस से जोड़ा जाए। दो प्रक्रियाएँ विभिन्न उद्देश्यों के लिए दो समान आभासी पतों का उपयोग कर सकती हैं। पृष्ठ तालिका को दो प्रक्रियाओं के लिए अलग-अलग वर्चुअल मेमोरी मैपिंग की आपूर्ति करनी चाहिए। यह दो प्रक्रियाओं को अलग-अलग पता नक्शा पहचानकर्ता निर्दिष्ट करके या प्रक्रिया आईडी का उपयोग करके किया जा सकता है। वर्चुअल मेमोरी पेजों के साथ प्रोसेस आईडी को जोड़ने से पेज आउट करने के लिए पेजों के चयन में भी सहायता मिल सकती है, क्योंकि निष्क्रिय प्रक्रियाओं से जुड़े पेज, विशेष रूप से ऐसी प्रक्रियाएं जिनके कोड पेज पेज आउट हो चुके हैं, सक्रिय प्रक्रियाओं से संबंधित पेजों की तुलना में तुरंत इसकी आवश्यकता कम होती है।
प्रक्रिया-अद्वितीय पहचानकर्ताओं के साथ पृष्ठ तालिका प्रविष्टियों को टैग करने के विकल्प के रूप में, पृष्ठ तालिका स्वयं प्रत्येक प्रक्रिया के लिए एक अलग वर्चुअल-मेमोरी पृष्ठ पर कब्जा कर सकती है जिससे पृष्ठ तालिका प्रक्रिया संदर्भ का एक हिस्सा बन जाए। इस तरह के कार्यान्वयन में, प्रक्रिया की पृष्ठ तालिका को पृष्ठांकित किया जा सकता है जब भी प्रक्रिया अब स्मृति में नहीं रहती है।
पृष्ठ तालिका प्रकार
कई प्रकार की पेज टेबल हैं, जिन्हें विभिन्न आवश्यकताओं के लिए अनुकूलित किया गया है। अनिवार्य रूप से, एक नंगे हड्डियों वाली पृष्ठ तालिका में आभासी पता, भौतिक पता जो इस आभासी पते के अंतर्गत है, और संभवतः कुछ पता स्थान की जानकारी को संग्रहित करना चाहिए।
{{Anchor|FRAME-TABLE}उलटा पेज टेबल
एक इनवर्टेड पेज टेबल (आईपीटी) को ट्रांसलेशन लुकसाइड बफर के ऑफ-चिप एक्सटेंशन के रूप में सबसे अच्छा माना जाता है जो सामान्य प्रणाली रैम का उपयोग करता है। वास्तविक पृष्ठ तालिका के विपरीत, यह आवश्यक नहीं है कि सभी वर्तमान मैपिंग को होल्ड कर सके। ऑपरेटिंग प्रणाली को मिसेस को संभालने के लिए तैयार रहना चाहिए, ठीक वैसे ही जैसे कि एमआईपीएस -शैली के सॉफ़्टवेयर से भरे टीएलबी के साथ होता है।
आईपीटी एक डेटा संरचना में एक पेज टेबल और एक फ्रेम टेबल को जोड़ती है। इसके मूल में एक निश्चित आकार की तालिका होती है जिसमें पंक्तियों की संख्या मेमोरी में फ़्रेम की संख्या के बराबर होती है। यदि 4,000 फ्रेम हैं, तो उल्टे पृष्ठ तालिका में 4,000 पंक्तियाँ हैं। प्रत्येक पंक्ति के लिए वर्चुअल पृष्ठ संख्या (वीपीएन), भौतिक पृष्ठ संख्या (भौतिक पता नहीं), कुछ अन्य डेटा और हैश टक्कर श्रृंखला बनाने के साधन के लिए एक प्रविष्टि है, जैसा कि हम बाद में देखेंगे।
कोर आईपीटी संरचना की सभी प्रविष्टियों के माध्यम से खोज करने के लिए अक्षम है, और आईपीटी में एक सूचकांक के लिए आभासी पतों (और पता स्थान / पीआईडी जानकारी) को मैप करने के लिए एक हैश तालिका का उपयोग किया जा सकता है - यह वह स्थान है जहां टक्कर श्रृंखला का उपयोग किया जाता है . इस हैश टेबल को हैश एंकर टेबल कहा जाता है। हैशिंग फ़ंक्शन सामान्यतः कवरेज के लिए अनुकूलित नहीं होता है - अपरिष्कृत गति अधिक वांछनीय है। बेशक, हैश टेबल टकराव का अनुभव करते हैं। इस चुने हुए हैशिंग फ़ंक्शन के कारण, हम उपयोग में बहुत सारी टक्करों का अनुभव कर सकते हैं, इसलिए तालिका में प्रत्येक प्रविष्टि के लिए वीपीएन यह जांचने के लिए प्रदान किया जाता है कि यह खोजी गई प्रविष्टि है या टक्कर।
मैपिंग की खोज में हैश एंकर टेबल का उपयोग किया जाता है। यदि कोई प्रविष्टि उपस्थित नहीं है, तो पेज फॉल्ट होता है। अन्यथा, प्रविष्टि पाई जाती है। वास्तुकला के आधार पर, प्रविष्टि को फिर से टीएलबी में रखा जा सकता है और मेमोरी संदर्भ को फिर से शुरू किया जा सकता है, या टक्कर श्रृंखला का तब तक पालन किया जा सकता है जब तक कि यह समाप्त न हो जाए और पृष्ठ दोष न हो जाए।
इस स्कीमा में एक आभासी पता दो में विभाजित किया जा सकता है, पहली छमाही एक आभासी पृष्ठ संख्या और दूसरी छमाही उस पृष्ठ में ऑफसेट होती है।
इस डिज़ाइन के साथ एक बड़ी समस्या हैश फंकशन के कारण खराब कैश स्थान है। ट्री-आधारित डिज़ाइन सन्निकट स्थानों में सन्निकट पृष्ठों के लिए पृष्ठ तालिका प्रविष्टियाँ रखकर इससे बचते हैं, किन्तु एक उलटी पृष्ठ तालिका प्रविष्टियों को चारों ओर बिखेर कर संदर्भ के स्थानिक इलाके को नष्ट कर देती है। एक ऑपरेटिंग प्रणाली इस समस्या को कम करने के लिए हैश टेबल के आकार को कम कर सकता है, जिसमें ट्रेड-ऑफ एक बढ़ी हुई मिस रेट है।
सामान्य रूप से एक हैश तालिका होती है, भौतिक मेमोरी में सन्निहित, सभी प्रक्रियाओं द्वारा साझा की जाती है। एक प्रति-प्रक्रिया पहचानकर्ता का उपयोग विभिन्न प्रक्रियाओं के पृष्ठों को एक-दूसरे से अलग करने के लिए किया जाता है। किसी दी गई प्रक्रिया की पृष्ठ तालिका प्रविष्टियों को हटाना कुछ धीमा है; ओएस इसका सामना करने में देरी के लिए प्रति-प्रक्रिया पहचानकर्ता मानों का पुन: उपयोग करने से बच सकता है। वैकल्पिक रूप से, प्रति-प्रक्रिया हैश तालिका का उपयोग किया जा सकता है, किन्तु विखंडन (कंप्यूटिंग) के कारण वे अव्यावहारिक हैं, जिसके लिए तालिकाओं को पूर्व-आवंटित करने की आवश्यकता होती है।
उल्टे पृष्ठ तालिकाओं का उपयोग उदाहरण के लिए PowerPC, UltraSPARC और IA-64 आर्किटेक्चर पर किया जाता है।[4]
बहुस्तरीय पेज टेबल
उलटा पृष्ठ तालिका भौतिक स्मृति में सभी फ़्रेमों के लिए स्थापित मैपिंग की एक सूची रखता है। चूंकि , यह अधिक व्यर्थ हो सकता है। ऐसा करने के अतिरिक्त , हम एक पेज टेबल संरचना बना सकते हैं जिसमें वर्चुअल पेजों के लिए मैपिंग सम्मिलित है। यह वर्चुअल मेमोरी के एक निश्चित ब्लॉक को कवर करने वाली कई पेज टेबल को रखकर किया जाता है। उदाहरण के लिए, हम छोटे 1024-प्रविष्टि वाले 4 केबी पृष्ठ बना सकते हैं जो 4 एमबी की वर्चुअल मेमोरी को कवर करते हैं।
यह उपयोगी है क्योंकि अधिकांशतः एक प्रक्रिया को चलाने में वर्चुअल मेमोरी के सबसे ऊपरी हिस्से और सबसे निचले हिस्से का उपयोग किया जाता है - शीर्ष का उपयोग अधिकांशतः टेक्स्ट और डेटा सेगमेंट के लिए किया जाता है जबकि स्टैक के लिए नीचे, बीच में मुफ्त मेमोरी के साथ। बहुस्तरीय पृष्ठ तालिका स्मृति के केवल ऊपरी और निचले हिस्सों को कवर करने के लिए कुछ छोटे पृष्ठ तालिकाओं को रख सकती है और केवल आवश्यक होने पर ही नई बना सकती है।
अब, इनमें से प्रत्येक छोटे पेज टेबल एक मास्टर पेज टेबल द्वारा एक साथ जुड़े हुए हैं, प्रभावी रूप से ट्री (डेटा स्ट्रक्चर) डेटा स्ट्रक्चर बनाते हैं। केवल दो स्तरों की आवश्यकता नहीं है, बल्कि संभवतः कई स्तर हैं। उदाहरण के लिए, इस स्कीमा में एक वर्चुअल एड्रेस को तीन भागों में विभाजित किया जा सकता है: रूट पेज टेबल में इंडेक्स, सब-पेज टेबल में इंडेक्स और उस पेज में ऑफसेट।
बहुस्तरीय पेज टेबल को पदानुक्रमित पेज टेबल भी कहा जाता है।
वर्चुअलाइज्ड पेज टेबल
यह उल्लेख किया गया था कि एक पेज टेबल संरचना बनाना जिसमें वर्चुअल एड्रेस स्पेस में प्रत्येक वर्चुअल पेज के लिए मैपिंग सम्मिलित है, व्यर्थ हो सकता है। लेकिन, हम पेज टेबल को वर्चुअल मेमोरी में डालकर और वर्चुअल मेमोरी प्रणाली को पेज टेबल के लिए मेमोरी को मैनेज करने की अनुमति देकर अत्यधिक स्थान की चिंताओं को दूर कर सकते हैं।
चूंकि , इस रेखीय पृष्ठ तालिका संरचना का हिस्सा सदैव भौतिक स्मृति में निवासी रहना चाहिए जिससे परिपत्र पृष्ठ दोषों को रोका जा सके और पृष्ठ तालिका के एक महत्वपूर्ण भाग की तलाश की जा सके जो पृष्ठ तालिका में उपस्थित नहीं है।
नेस्टेड पेज टेबल
हार्डवेयर वर्चुअलाइजेशन के प्रदर्शन को बढ़ाने के लिए नेस्टेड पेज टेबल को प्रयुक्त किया जा सकता है। पेज-टेबल वर्चुअलाइजेशन के लिए हार्डवेयर समर्थन प्रदान करने से अनुकरण करने की आवश्यकता बहुत कम हो जाती है। x86 वर्चुअलाइजेशन के लिए वर्तमान विकल्प इंटेल की विस्तारित पृष्ठ तालिका फीचर और एएमडी की रैपिड वर्चुअलाइजेशन इंडेक्सिंग फीचर हैं।
यह भी देखें
- अनुवाद लुकसाइड बफर
- पृष्ठ प्रतिस्थापन एल्गोरिथ्म
- सूचक (कंप्यूटर प्रोग्रामिंग)
- डब्ल्यू ^ एक्स
संदर्भ
- ↑ "आभासी मेमोरी". umd.edu. Retrieved 28 September 2015.
- ↑ "पृष्ठ तालिका प्रबंधन". kernel.org. Retrieved 28 September 2015.
- ↑ "W^X - The Mechanism".
- ↑ William Stallings, Operating Systems Internals and Design Principles, p. 353.
अग्रिम पठन
- 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
- "Art of Assembler, 6.6 Virtual Memory, Protection, and Paging". Archived from the original on February 18, 2012.
- "Intel 64 and IA-32 Architectures Software Developer's Manuals". Intel. January 18, 2018.
- "AMD64 Architecture Software Developer's Manual". AMD. Archived from the original on 2010-03-13.