X86 मेमोरी सेगमेंटेशन: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|Implementation of memory segmentation on Intel x86}} | {{short description|Implementation of memory segmentation on Intel x86}} | ||
एक्स[[86]] [[ स्मृति विभाजन ]] इंटेल एक्स86 कंप्यूटर [[ निर्देश सेट वास्तुकला | निर्देश समूह वास्तुकला]] में स्मृति विभाजन के कार्यान्वयन को संदर्भित करता है। 1978 में [[Index.php?title=इंटेल 8086|इंटेल 8086]] पर | एक्स[[86]] [[ स्मृति विभाजन |स्मृति विभाजन]] इंटेल एक्स86 कंप्यूटर [[ निर्देश सेट वास्तुकला |निर्देश समूह वास्तुकला]] में स्मृति विभाजन के कार्यान्वयन को संदर्भित करता है। 1978 में [[Index.php?title=इंटेल 8086|इंटेल 8086]] पर विभाजन क्रिया प्रारंभ की गई थी, जिससे कार्यक्रमों को 64 केबी (65,536 [[बाइट|जोड़]] ) से अधिक स्मृति को संबोधित करने की अनुमति मिल सके। [[Intel 80286|इंटेल 80286]] ने 1982 में विभाजन का दूसरा संस्करण प्रस्तावित किया जिसमें [[ आभासी मेमोरी |आभासी स्मृति]] और स्मृति सुरक्षा के लिए समर्थन जोड़ा गया। इस बिंदु पर मूल प्रणाली का नाम बदलकर [[वास्तविक मोड|वास्तविक प्रणाली]] कर दिया गया था, और नए संस्करण को संरक्षित प्रणाली नाम दिया गया था। 2003 में प्रस्तावित किए गए [[x86-64|एक्स86-64]] संरचना ने 64-अंश प्रणाली में विभाजन के लिए अधिक सीमा तक समर्थन छोड़ दिया था। | ||
वास्तविक और संरक्षित दोनों प्रणाली में, वास्तविक स्मृति दक्षता | वास्तविक और संरक्षित दोनों प्रणाली में, वास्तविक स्मृति दक्षता प्राप्त करने के लिए प्रणाली 16-अंश ''खंड पंजिका'' का उपयोग करता है। वास्तविक प्रणाली में, सीएस, डीएस, एसएस और इएस पंजिका वर्तमान में उपयोग किए गए योजना[[ कोड खंड | संकेत खंड]] (सीएस), वर्तमान [[डेटा खंड|आंकड़े खंड]] (डीएस), वर्तमान [[कॉल स्टैक]] (आह्वान स्तंभ)(एसएस), और एक ''अतिरिक्त'' खंड की ओर संकेत करते हैं। क्रमादेशक (ईएस) द्वारा निर्धारित। 1985 में प्रस्तावित किया गया [[Intel 80386|इंटेल]] [[Intel 80386|80386]], दो अतिरिक्त खंड पंजिका , एफएस और जीएस जोड़ता है, जिसमें हार्डवेयर द्वारा परिभाषित कोई विशिष्ट उपयोग नहीं है। जिस तरह से खंड पंजिका का उपयोग किया जाता है, वह दो प्रणाली के बीच भिन्न होता है।<ref name=Arch /> | ||
क्रियान्वित किए जा रहे कार्य के अनुसार खंड की पसंद सामान्यतः संसाधक | क्रियान्वित किए जा रहे कार्य के अनुसार खंड की पसंद सामान्यतः संसाधक द्वारा चूक की जाती है। निर्देश सदैव संकेत खंड से प्राप्त किए जाते हैं। कोई भी स्तंभ दबाना या त्वरित या कोई भी आंकड़े संदर्भ जो स्तंभ का जिक्र करता है, स्तंभ खंड का उपयोग करता है। आंकड़े के अन्य सभी संदर्भ आंकड़े खंड का उपयोग करते हैं। अतिरिक्त खंड श्रृंखला संचालन के लिए चूक गंतव्य है (उदाहरण के लिए एमओवीएस या सीएमपीएस)। एफएस और जीएस के पास हार्डवेयर- नियुक्त किए गए उपयोग नहीं हैं। निर्देश प्रारूप एक वैकल्पिक खंड उपसर्ग काटने की अनुमति देता है जिसका उपयोग वांछित होने पर चयनित निर्देशों के लिए चूक खंड को अवहेलना करने के लिए किया जा सकता है।<ref>{{cite book|last=Intel Corporation|title=IA-32 Intel Architecture Software Developer's Manual Volume 1: Basic Architecture|date=2004|url=http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-1-manual.pdf}}</ref> | ||
== पूर्णतः | == पूर्णतः प्रणाली == | ||
[[Image:Overlapping realmode segments.svg|thumb|300px|वास्तविक प्रणाली स्मृति में तीन खंड (विस्तार करने के लिए चित्र पर | [[Image:Overlapping realmode segments.svg|thumb|300px|वास्तविक प्रणाली स्मृति में तीन खंड (विस्तार करने के लिए चित्र पर दबायें)। खंड 2 और खंड 3 के बीच अधिव्यापन है; हरे और नीले क्षेत्र में जोड़ का उपयोग दोनों खंड चयनकर्ताओं से किया जा सकता है।]]पूर्णतः प्रणाली या [[वर्चुअल 8086 मोड|वी 8086 प्रणाली]] में, खंड का आकार 1 जोड़ से लेकर 65,536 जोड़ (16-अंश लक्ष्यांतर का उपयोग करके) तक हो सकता है। | ||
खंड पंजिका | खंड पंजिका में 16-अंश खंड चयनकर्ता को एक रैखिक 20-अंश दक्षता के सबसे महत्वपूर्ण 16 अंश के रूप में व्याख्या किया जाता है, जिसे खंड दक्षता कहा जाता है, जिसमें से शेष चार सबसे कम महत्वपूर्ण अंश सभी शून्य हैं। खंड स्थान सदैव एक रेखीय स्थान प्राप्त करने के निर्देश में 16-अंश लक्ष्यांतर में जोड़ा जाता है, जो इस प्रणाली में भौतिक स्थान के समान होता है। उदाहरण के लिए, खंडित स्थान 06इएफएच:1234एच (यहाँ प्रत्यय एचका अर्थ [[हेक्साडेसिमल]] है) में 06इएफएच का एक खंड चयनकर्ता है, जो 06 इएफओएच के एक खंड स्थान का प्रतिनिधित्व करता है, जिसमें लक्ष्यांतर जोड़ा जाता है, जिससे रैखिक स्थान 06 इएफओएच + 1234एच = 08124एच प्राप्त होता है। | ||
{| | {| | ||
Line 14: | Line 14: | ||
! style=width:18em | <code> </code><code style="background:#DED">0000 0110 1110 1111</code><code>0000</code> | ! style=width:18em | <code> </code><code style="background:#DED">0000 0110 1110 1111</code><code>0000</code> | ||
| '''खंड''' | | '''खंड''' | ||
| 16 जोड़ , स्थान्तरण 4 जोड़ | | 16 जोड़ , स्थान्तरण 4 जोड़ विरूध्द पक्ष (और गुणा किया 0एक्स10) | ||
|- | |- | ||
! style=width:18em | <code>+ </code><code style="background:#DDF">0001 0010 0011 0100</code> | ! style=width:18em | <code>+ </code><code style="background:#DDF">0001 0010 0011 0100</code> | ||
Line 27: | Line 27: | ||
| 20 जोड़ | | 20 जोड़ | ||
|} | |} | ||
जिस तरह से खंड दक्षता | जिस तरह से खंड दक्षता और लक्ष्यांतर जोड़े जाते हैं, उसके कारण एक पृथक रेखीय दक्षता को तक प्रतिचित्र किया जा सकता है 2<sup>12</sup> = 4096 विशिष्ट खंड: लक्ष्यांतर जोड़े। उदाहरण के लिए, रैखिक स्थान 08124एच में खंडित स्थान हो सकते हैं 06 इएफएच:1234एच, 0812h:0004एच, 0000एच:8124एच, आदि। | ||
यह अद्वितीय दक्षता योजनाओं के आदी | यह अद्वितीय दक्षता योजनाओं के आदी क्रमादेशकों के लिए भ्रमित करने वाला हो सकता है, किन्तुइसका उपयोग लाभ के लिए भी किया जा सकता है, उदाहरण के लिए कई स्थिर आंकड़े संरचनाओं को संबोधित करते समय। जबकि वास्तविक प्रणाली खंड सदैव 64 [[किलोबाइट|के बी]] लंबे होते हैं, व्यावहारिक प्रभाव केवल यह है कि कोई भी खंड 64 केबी से अधिक लंबा नहीं हो सकता है, इसके अतिरिक्त प्रत्येक खंड 64 केबी लंबा होना चाहिए। क्योंकि वास्तविक प्रणाली में कोई सुरक्षा या विशेषाधिकार सीमा नहीं है, तथापि एक खंड को 64 केबी से छोटा परिभाषित किया जा सकता है, फिर भी यह पूरी तरह से कार्यक्रमों पर निर्भर करेगा कि वे समन्वय करें और अपने खंडों की सीमा के अंदर रखें, जैसा कि कोई भी कार्यक्रम कर सकता है सदैव किसी भी स्मृति तक पहुंचें (चूंकि यह इच्छानुसार से खंड चयनकर्ताओं को बिना किसी पर्यवेक्षण के खंड स्थान बदलने के लिए समूह कर सकता है)। इसलिए, 1 से 65,536 जोड़ की सीमा में प्रत्येक खंड के लिए एक चर लंबाई होने के रूप में वास्तविक प्रणाली की कल्पना की जा सकती है, जो कि सीपीयू द्वारा प्रयुक्त नहीं किया गया है। | ||
(रैखिक स्थान के प्रमुख शून्य, खंडित स्थान, और खंड और लक्ष्यांतर क्षेत्र स्पष्टता के लिए यहां दिखाए गए हैं। वे सामान्यतः छोड़े जाते हैं।) | (रैखिक स्थान के प्रमुख शून्य, खंडित स्थान, और खंड और लक्ष्यांतर क्षेत्र स्पष्टता के लिए यहां दिखाए गए हैं। वे सामान्यतः छोड़े जाते हैं।) | ||
वास्तविक प्रणाली का प्रभावी 20-अंश [[ पता स्थान | स्थान | वास्तविक प्रणाली का प्रभावी 20-अंश [[ पता स्थान |स्थान अन्तर]] जो [[ स्मृति पता |स्मृति स्थान]] को 2<sup>20</sup> जोड़ तक सीमित करता है , या 1,048,576 जोड़ (1 [[मेगाबाइट|स्पष्टजोड़]] )। यह सीधे इंटेल 8086 (और, बाद में, निकट से संबंधित 8088) के हार्डवेयर अभिकल्पना से प्राप्त हुआ, जिसमें मात्र 20 [[ पता बस |स्थान पंक्तियां]] थी। (दोनों को 40-खूंटी डीआईपी डिब्बो में बाँधा किया गया था; केवल 20 दक्षता रेखा के साथ भी, दक्षता और आंकड़े स्थान्तरण को सीमित खूंटी गणना के अंदर सभी दक्षता और आंकड़े रेखा को उपयुक्त करने के लिए बहुसंकेतित किया गया था।) | ||
प्रत्येक खंड रेखीय (सपाट) स्थान की प्रारंभ से 16 जोड़ के गुणक से प्रारंभिक होता है, जिसे एक अनुच्छेद कहा जाता है। अर्थात 16 जोड़ | प्रत्येक खंड रेखीय (सपाट) स्थान की प्रारंभ से 16 जोड़ के गुणक से प्रारंभिक होता है, जिसे एक अनुच्छेद कहा जाता है। अर्थात 16 जोड़ के अंतराल पर। चूंकि सभी खंड 64 केबी लंबे हैं, यह बताता है कि खंड के बीच अधिव्यापन कैसे हो सकता है और रेखीय स्मृति दक्षता अंतराल में किसी भी स्थान को कई खंड: लक्ष्यांतर जोड़े के साथ क्यों अभिगम किया जा सकता है। रेखीय स्थान स्थान में एक खंड की प्रारंभ के वास्तविक स्थान की गणना खंड × 16 के साथ की जा सकती है। ओसीएच (12) का एक खंड मान रैखिक स्थान में ओसीएच (192) पर एक रैखिक स्थान देगा। इसके बाद दक्षता लक्ष्यांतर को इस नंबर में जोड़ा जा सकता है। ओसीएच:ओएफएच (12:15) होगा सीओएच+ओएफएच=सीएफएच (192+15=207), सीएफएच (207) रेखीय स्थान होगा। इस तरह के दक्षता अनुवाद सीपीयू की विभाजन इकाई द्वारा किए जाते हैं। अंतिम खंड, एफएफएफएफएच (65535), रेखीय स्थान एफएफएफएफओएच (1048560) पर प्रारंभ होता है, 20 अंश स्थान के अंत से 16 जोड़ पहले, और इस प्रकार, 65,536 जोड़ तक, 65,520 (65536) तक लक्ष्यांतर के साथ पहुंच सकता है −16) जोड़ 20 अंश 8088 दक्षता अंतराल के अंत के बाद। 8088 पर, इन दक्षता अभिगम को दक्षता अंतराल की प्रारंभ में लपेटा गया था जैसे कि 65535:16 दक्षता 0 तक पहुंच जाएगा और 65533:1000 रेखीय दक्षता अंतराल के दक्षता 952 तक पहुंच जाएगा। क्रमादेशकों द्वारा इस सुविधा का उपयोग बाद की सीपीयू पीढ़ियों में [[गेट ए 20|मार्ग ए 20]] संगतता मुद्दों के कारण हुआ, जहां रेखीय स्थान को 20 अंश से आगे बढ़ाया गया था। | ||
16-अंश वास्तविक प्रणाली में, कई स्मृति खंड का उपयोग करने के लिए अनुप्रयोग को सक्षम करना (किसी एक 64के-खंड में उपलब्ध स्मृति से अधिक स्मृति तक पहुंचने के लिए) | 16-अंश वास्तविक प्रणाली में, कई स्मृति खंड का उपयोग करने के लिए अनुप्रयोग को सक्षम करना (किसी एक 64के-खंड में उपलब्ध स्मृति से अधिक स्मृति तक पहुंचने के लिए) अधिक जटिल है, किन्तुइसे सभी के लिए एक आवश्यक बुराई के रूप में देखा गया था किन्तुसबसे छोटे उपकरण ( जो कम स्मृति के साथ कर सकता है)। समस्या की जड़ यह है कि संपूर्ण स्मृति श्रेणी के समतल दक्षता के लिए उपयुक्त कोई उपयुक्त स्थान-अंकगणितीय निर्देश उपलब्ध नहीं हैं। कई निर्देशों को प्रयुक्त करने से समतल दक्षता संभव है, जो चूंकि धीमे योजना की ओर ले जाता है। | ||
[[x86 मेमोरी मॉडल|एक्स86 स्मृति | [[x86 मेमोरी मॉडल|एक्स86 स्मृति प्रतिरूप]] अवधारणा खंड पंजिका के व्यवस्था से निकली है। उदाहरण के लिए, छोटे प्रतिरूप सीएस=डीएस=एसएस में, अर्थात योजना का संकेत, आंकड़े और स्तंभ सभी एक ही 64 केबी खंड में समाहित हैं। छोटे स्मृति प्रतिरूप डीएस=एसएस में, इसलिए आंकड़े और स्तंभ दोनों एक ही खंड में रहते हैं; सीएस 64 केबी तक के अलग संकेत खंड की ओर संकेत करता है। | ||
== संरक्षित प्रणाली == | == संरक्षित प्रणाली == | ||
[[Image:Protected mode segments.svg|thumb|300px|left|स्थानीय वर्णनकर्ता तालिका के साथ संरक्षित प्रणाली स्मृति में तीन खंड (विस्तार करने के लिए छवि पर | [[Image:Protected mode segments.svg|thumb|300px|left|स्थानीय वर्णनकर्ता तालिका के साथ संरक्षित प्रणाली स्मृति में तीन खंड (विस्तार करने के लिए छवि पर दबायें)।]] | ||
=== 80286 संरक्षित प्रणाली === | === 80286 संरक्षित प्रणाली === | ||
इंटेल 80286 का संरक्षित प्रणाली संसाधक | इंटेल 80286 का संरक्षित प्रणाली संसाधक के दक्षता अंतराल को 2<sup>24</sup> तक बढ़ा देता है जोड़ (16 स्पष्ट जोड़), किन्तुपरिवर्तन मान को समायोजित करके नहीं। इसके अतिरिक्त, 16-अंश खंड पंजिका में अब 24-अंश आधार दक्षता वाले [[खंड वर्णनकर्ता]] की तालिका में एक निर्देशिका होता है जिसमें लक्ष्यांतर जोड़ा जाता है। पुराने सॉफ़्टवेयर का समर्थन करने के लिए, संसाधक वास्तविक प्रणाली में प्रारंभ होता है, एक ऐसा प्रणाली जिसमें यह 8086 के खंडित दक्षता प्रतिरूप का उपयोग करता है। चूंकि एक छोटा सा अंतर है: परिणामी भौतिक स्थान अब 20 अंश तक छोटा नहीं किया जाता है, इसलिए वास्तविक प्रणाली संकेत (किन्तु8086 संकेत नहीं) अब 100000<sub>16</sub> के बीच के स्थानों को संदर्भित कर सकते हैं और 10एफएफइएफ<sub>16</sub>. स्मृति के लगभग 64-किलोबाईट क्षेत्र को हाई स्मृति क्षेत्र (एचएमए) के रूप में जाना जाता था, और डीओएस के बाद के संस्करण इसका उपयोग उपलब्ध पारंपरिक स्मृति (अर्थात पहले स्पष्ट जोड़ के अंदर) को बढ़ाने के लिए कर सकते थे। एचएमए को जोड़ने के साथ, कुल स्थान स्थान लगभग 1.06 एमबी हो जाता है। चूंकि 80286 मुख्य-प्रणाली स्थानों को 20 अंश तक छोटा नहीं करता है, 80286 वाला प्रणाली 21वीं दक्षता रेखा, [[ए 20 लाइन|ए 20 रेखा]] को अवरोधन बंद करके संसाधक के बाहरी हार्डवेयर के साथ ऐसा कर सकता है। आईबीएम पीसी एटी ने ऐसा करने के लिए हार्डवेयर प्रदान किया (मूल आईबीएम पीसी और आईबीएम पीसी/एक्सटी|पीसी/एक्सटी प्रतिरूप के लिए सॉफ़्टवेयर के साथ पूर्ण पिछड़े संगतता के लिए), और इसलिए बाद के सभी आईबीएम पीसी/एटी-श्रेणी के पीसी प्रतिरूप ने भी किया। | ||
286 संरक्षित प्रणाली का उपयोग संभवतः ही कभी किया गया था क्योंकि यह 8086/88 उपकरणों वाले उपयोगकर्ताओं के बड़े निकाय को बाहर कर देता था। इसके अतिरिक्त, यह अभी भी स्मृति को 64k खंड में विभाजित करने [[की]] आवश्यकता है जैसे वास्तविक प्रणाली में किया गया था। इस सीमा को 32-अंश सीपीयू पर काम किया जा सकता है जो आकार में 64केबी से अधिक स्मृति संकेत के उपयोग की अनुमति देता है, चूंकि खंड सीमा क्षेत्र केवल 24-अंश लंबा है, जो अधिकतम खंड आकार बनाया जा सकता है वह 16एमबी है (यद्यपि | 286 संरक्षित प्रणाली का उपयोग संभवतः ही कभी किया गया था क्योंकि यह 8086/88 उपकरणों वाले उपयोगकर्ताओं के बड़े निकाय को बाहर कर देता था। इसके अतिरिक्त, यह अभी भी स्मृति को 64k खंड में विभाजित करने [[की]] आवश्यकता है जैसे वास्तविक प्रणाली में किया गया था। इस सीमा को 32-अंश सीपीयू पर काम किया जा सकता है जो आकार में 64केबी से अधिक स्मृति संकेत के उपयोग की अनुमति देता है, चूंकि खंड सीमा क्षेत्र केवल 24-अंश लंबा है, जो अधिकतम खंड आकार बनाया जा सकता है वह 16एमबी है (यद्यपि पृष्ठीकरण अधिक स्मृति आवंटित करने के लिए उपयोग किया जा सकता है, कोई भी व्यक्तिगत खंड 16एमबी से अधिक नहीं हो सकता है)। इस पद्धति का उपयोग सामान्यतः विंडोज 3.एक्स अनुप्रयोगों पर समतल स्मृति अंतराल बनाने के लिए किया जाता था, चूंकि ओएस अभी भी 16-अंश था, 32-अंश निर्देशों के साथ एपीआई कॉल नहीं की जा सकती थी। इस प्रकार, 64k खंड में एपीआई कॉल करने वाले सभी संकेत को रखना अभी भी आवश्यक था। | ||
एक बार 286 संरक्षित प्रणाली प्रयुक्त हो जाने के बाद, इसे हार्डवेयर | एक बार 286 संरक्षित प्रणाली प्रयुक्त हो जाने के बाद, इसे हार्डवेयर पुनः समायोजन करने के अतिरिक्त बाहर नहीं निकाला जा सकता है। बढ़ती आईबीएम पीसी/एटी मानक का पालन करने वाली मशीनें मानकीकृत कीबोर्ड नियंत्रक के माध्यम से सीपीयू को पुनः समायोजन करने का ढोंग कर सकती हैं, किन्तुयह अधिक सुस्त था। विंडोज़ 3.एक्स ने सीपीयू के अवरोध-प्रबंधन तंत्र में जानबूझकर [[ ट्रिपल दोष |त्रिपक्षीय दोष]] को प्रवर्तन करके इन दोनों समस्याओं के आसपास काम किया, जिससे सीपीयू वास्तविक प्रणाली में वापस आ जाएगा, लगभग तुरंत।<ref>{{Cite web|url=http://blogs.msdn.com/b/larryosterman/archive/2005/02/08/369243.aspx|title = DevBlogs}}</ref> | ||
=== विस्तृत विभाजन इकाई कार्यप्रवाह === | === विस्तृत विभाजन इकाई कार्यप्रवाह === | ||
एक तर्कसंगत स्थान में 16-अंश खंड चयनकर्ता (13 + 1 स्थान अंश की आपूर्ति) और 16-अंश | एक तर्कसंगत स्थान में 16-अंश खंड चयनकर्ता (13 + 1 स्थान अंश की आपूर्ति) और 16-अंश लक्ष्यांतर होता है। खंड चयनकर्ता को खंड पंजिकों में से एक में स्थित होना चाहिए। उस चयनकर्ता में 2-अंश निवेदन विशेषाधिकार स्तर (आरपीएल), 1-अंश तालिका सूचक (टीआई) और 13-अंश निर्देशिका होता है। | ||
किसी दिए गए तर्कसंगत दक्षता | किसी दिए गए तर्कसंगत दक्षता के दक्षता अनुवाद का प्रयास करते समय, संसाधक 64-अंश [[ खंड वर्णनकर्ता |खंड वर्णनकर्ता]] संरचना को या तो [[ग्लोबल डिस्क्रिप्टर टेबल|वैश्विक वर्णनकर्ता तालिका]] से पढ़ता है जब टीआई = 0 या [[ स्थानीय वर्णनकर्ता तालिका |स्थानीय वर्णनकर्ता तालिका]] जब टीआई= 1 होता है। यह तब विशेषाधिकार जांच करता है: | ||
: अधिकतम (सीपीएल, आरपीएल) ≤ डीपीएल | : अधिकतम (सीपीएल, आरपीएल) ≤ डीपीएल | ||
जहाँ सीपीएल वर्तमान [[विशेषाधिकार स्तर]] है (सीएस पंजिका | जहाँ सीपीएल वर्तमान [[विशेषाधिकार स्तर]] है (सीएस पंजिका के निचले 2 अंश में पाया जाता है), आरपीएल खंड चयनकर्ता से अनुरोधित विशेषाधिकार स्तर है, और डीपीएल खंड का वर्णनकर्ता विशेषाधिकार स्तर है (विवरणकर्ता में पाया जाता है)। सभी विशेषाधिकार स्तर 0-3 की सीमा में पूर्णांक हैं, जहाँ सबसे कम संख्या उच्चतम विशेषाधिकार से मेल खाती है। | ||
यदि असमानता गलत है, तो संसाधक | यदि असमानता गलत है, तो संसाधक एक सामान्य सुरक्षा दोष | सामान्य सुरक्षा (जीपी) दोष उत्पन्न करता है। अन्यथा, स्थान अनुवाद जारी रहता है। संसाधक तब 32-अंश या 16-अंश लक्ष्यांतर लेता है और इसकी तुलना खंड वर्णनकर्ता में निर्दिष्ट खंड सीमा से करता है। यदि यह बड़ा है, तो जीपी दोष उत्पन्न होता है। अन्यथा, संसाधक 24-अंश खंड आधार जोड़ता है, वर्णनकर्ता में निर्दिष्ट, लक्ष्यांतर में, एक रेखीय भौतिक स्थान बनाता है। | ||
विशेषाधिकार जांच केवल तब की जाती है जब खंड पंजिका | विशेषाधिकार जांच केवल तब की जाती है जब खंड पंजिका भार हो जाता है, क्योंकि खंड वर्णनकर्ता को खंड पंजिकों के छिपे हुए हिस्सों में भंडार किया जाता है।<ref name=Arch>"Intel 64 and IA-32 Architectures Software Developer's Manual", Volume 3, "System Programming Guide", published in 2011, Page "Vol. 3A 3-11", the book is written: "''Every segment register has a “visible” part and a “hidden” part. (The hidden part is sometimes referred to as a “descriptor cache” or a “shadow register.”) When a segment selector is loaded into the visible part of a segment register, the processor also loads the hidden part of the segment register with the base address, segment limit, and access control information from the segment descriptor pointed to by the segment selector. The information cached in the segment register (visible and hidden) allows the processor to translate addresses without taking extra bus cycles to read the base address and limit from the segment descriptor.''"</ref> | ||
=== 80386 संरक्षित प्रणाली === | === 80386 संरक्षित प्रणाली === | ||
इंटेल 80386 और बाद में, संरक्षित प्रणाली 80286 संरक्षित प्रणाली के विभाजन तंत्र को निरंतर रखता है, किन्तुविभाजन इकाई और भौतिक स्थान्तरण के बीच स्थान अनुवाद की दूसरी परत के रूप में एक | इंटेल 80386 और बाद में, संरक्षित प्रणाली 80286 संरक्षित प्रणाली के विभाजन तंत्र को निरंतर रखता है, किन्तुविभाजन इकाई और भौतिक स्थान्तरण के बीच स्थान अनुवाद की दूसरी परत के रूप में एक [[पेजिंग|पृष्ठीकरण]] इकाई को जोड़ा गया है। इसके अतिरिक्त, महत्वपूर्ण बात यह है कि दक्षता लक्ष्यांतर 32-अंश (16-अंश के अतिरिक्त) हैं, और प्रत्येक खंड वर्णनकर्ता में खंड आधार भी 32-अंश (24-अंश के अतिरिक्त) है। विभाजन इकाई का सामान्य संचालन अन्यथा अपरिवर्तित है। पृष्ठन इकाई सक्षम या अक्षम हो सकती है; यदि अक्षम किया गया है, तो संचालन 80286 के समान है। यदि पृष्ठीकरण इकाई सक्षम है, तो खंड में स्थान अब भौतिक स्थान के अतिरिक्त आभासी स्थान हैं, जैसा कि वे 80286 पर थे। और अंतिम 32-अंश स्थान दो को जोड़कर प्राप्त विभाजन इकाई सभी आभासी (या तर्कसंगत) स्थान हैं जब पृष्ठीकरण इकाई सक्षम होती है। जब विभाजन इकाई इन 32-अंश आभासी स्थानों को उत्पन्न और मान्य करती है, तो सक्षम पृष्ठीकरण इकाई अंत में इन आभासी स्थानों को भौतिक स्थानों में बदल देती है। इंटेल 80386 पर भौतिक स्थान 32-अंश हैं, किन्तु नए संसाधक पर बड़े हो सकते हैं जो भौतिक स्थान प्रारूप का समर्थन करते हैं। | ||
80386 ने चार खंड पंजिका (सीएस, डीएस, ईएस, और एसएस) के मूल समूह में दो नए सामान्य-उद्देश्य आंकड़े खंड पंजिका , एफएस और जीएस भी प्रस्तावित किए। | 80386 ने चार खंड पंजिका (सीएस, डीएस, ईएस, और एसएस) के मूल समूह में दो नए सामान्य-उद्देश्य आंकड़े खंड पंजिका , एफएस और जीएस भी प्रस्तावित किए। | ||
एक 386 सीपीयू को सीआरओ नियंत्रण पंजिका | एक 386 सीपीयू को सीआरओ नियंत्रण पंजिका में थोड़ा सा साफ़ करके वास्तविक प्रणाली में वापस रखा जा सकता है, चूंकि सुरक्षा और शक्तिशाली को प्रयुक्त करने के लिए यह एक विशेषाधिकार प्राप्त संचालन है। तुलना के माध्यम से, एक 286 को केवल संसाधक पुनः समायोजन के लिए प्रेरक करके वास्तविक प्रणाली में लौटाया जा सकता है, उदाहरण: त्रिपक्षीय दोष या बाहरी हार्डवेयर का उपयोग करके। | ||
== पश्चात् के घटनाक्रम == | == पश्चात् के घटनाक्रम == | ||
एक्स86-64 | एक्स86-64 संरचना लंबे प्रणाली (64-अंश प्रणाली) में विभाजन का उपयोग नहीं करता है। खंड पंजिका में से चार, सीएस, एसएस, डीएस, और ईएस, आधार स्थान 0 और 2<sup>64 की सीमा के लिए प्रेरक हैं <sup>खंड पंजिका एफएस और जीएस में अभी भी एक गैर-शून्य आधार स्थान हो सकता है। यह परिचालन प्रणाली को इन खंडों के विशेष उद्देश्यों के लिए उपयोग करने की अनुमति देता है। विरासत प्रणाली द्वारा उपयोग किए जाने वाले वैश्विक विवरण तालिका तंत्र के विपरीत, इन पदनाम का आधार स्थान [[मॉडल-विशिष्ट रजिस्टर|प्रतिरूप-विशिष्ट पंजिका]] में संग्रहीत होता है। एक्स86-64 संरचना विशेष एसडब्लूएपीजीएस निर्देश प्रदान करता है, जो [[कर्नेल मोड|मूल प्रणाली]] और [[उपयोगकर्ता मोड|उपयोगकर्ता प्रणाली]] आधार स्थानों को अदला-बदली करने की अनुमति देता है। | ||
उदाहरण के लिए, एक्स86-64 पर [[Microsoft Windows|माइक्रोसॉफ़्ट विंडोज़]] जीएस खंड का उपयोग [[Win32 थ्रेड सूचना ब्लॉक|सूत्र सूचना खंड]] को इंगित करने के लिए करता है, प्रत्येक सूत्र (कंप्यूटर विज्ञान) के लिए एक छोटी आंकड़े संरचना, जिसमें अपवाद प्रबंधन, सूत्र-स्थानीय चर और अन्य प्रति- के बारे में जानकारी सम्मिलित | उदाहरण के लिए, एक्स86-64 पर [[Microsoft Windows|माइक्रोसॉफ़्ट विंडोज़]] जीएस खंड का उपयोग [[Win32 थ्रेड सूचना ब्लॉक|सूत्र सूचना खंड]] को इंगित करने के लिए करता है, प्रत्येक सूत्र (कंप्यूटर विज्ञान) के लिए एक छोटी आंकड़े संरचना, जिसमें अपवाद प्रबंधन, सूत्र-स्थानीय चर और अन्य प्रति- के बारे में जानकारी सम्मिलित है। सूत्र स्थिति। इसी तरह, [[लिनक्स कर्नेल]] प्रति-सीपीयू आंकड़े संचय करने के लिए जीएस खंड का उपयोग करता है। | ||
जीएस/एफएस का उपयोग [[जीएनयू संकलक संग्रह]] के [[थ्रेड-लोकल स्टोरेज|सूत्र-सार्वजनिक | जीएस/एफएस का उपयोग [[जीएनयू संकलक संग्रह]] के [[थ्रेड-लोकल स्टोरेज|सूत्र-सार्वजनिक संचयन]] और कैनरी-आधारित स्तंभ संरक्षक में भी किया जाता है। | ||
== अभ्यास == | == अभ्यास == | ||
तर्कसंगत स्थानों को [[x86 असेंबली भाषा|एक्स86 | तर्कसंगत स्थानों को [[x86 असेंबली भाषा|एक्स86 समुच्चय भाषा]] में स्पष्ट रूप से निर्दिष्ट किया जा सकता है, उदाहरण: (एटी और टी वाक्य - विन्यास) | ||
movl $42, %fs:(%eaएक्स);के बराबर में M[fs:eaएक्स]<-42) | movl $42, %fs:(%eaएक्स);के बराबर में M[fs:eaएक्स]<-42) | ||
या [[इंटेल सिंटैक्स]] में: | या [[इंटेल सिंटैक्स]] में: | ||
Line 87: | Line 87: | ||
चूंकि, खंड पंजिका का उपयोग सामान्यतः निहित रूप से किया जाता है। | चूंकि, खंड पंजिका का उपयोग सामान्यतः निहित रूप से किया जाता है। | ||
* सभी सीपीयू निर्देश सीएस पंजिका | * सभी सीपीयू निर्देश सीएस पंजिका में रखे गए खंड चयनकर्ता द्वारा निर्दिष्ट संकेत खंड से निहित रूप से प्राप्त किए जाते हैं। | ||
* अधिकांश स्मृति संदर्भ डीएस पंजिका | * अधिकांश स्मृति संदर्भ डीएस पंजिका में रखे गए खंड चयनकर्ता द्वारा निर्दिष्ट आंकड़े खंड से आते हैं। ये इएस पंजिका में रखे गए खंड चयनकर्ता द्वारा निर्दिष्ट अतिरिक्त खंड से भी आ सकते हैं, यदि एक खंड-अवहेलना उपसर्ग उस निर्देश से पहले आता है जो स्मृति संदर्भ बनाता है। अधिकांश, किन्तुसभी नहीं, निर्देश जो चूक रूप से डीएस का उपयोग करते हैं, एक इएस अवहेलना उपसर्ग को स्वीकार करेंगे। | ||
* संसाधक | * संसाधक [[रन-टाइम स्टैक|चाल-अवधि स्तंभ]] संदर्भ, या तो निहित रूप से (जैसे ' दबाना' और 'त्वरित ' निर्देश) या स्पष्ट रूप से ( [[स्टैक-आधारित मेमोरी आवंटन|स्तंभ-आधारित स्मृति आवंटन]] | (ई) एसपी या (ई) बीपी पंजिका का उपयोग करके स्मृति अभिगम) निर्दिष्ट स्तंभ खंड का उपयोग करें एसएस पंजिका में उपस्थित खंड चयनकर्ता द्वारा। | ||
* [[x86 स्ट्रिंग निर्देश|एक्स86 श्रृंखला | * [[x86 स्ट्रिंग निर्देश|एक्स86 श्रृंखला निर्देश]] (जैसे 'एसटीओएस', 'एमओवीएस'), आंकड़े खंड के साथ, इएस पंजिका में रखे गए खंड चयनकर्ता द्वारा निर्दिष्ट अतिरिक्त खंड का भी उपयोग करते हैं। | ||
विभाजन को एक्स86-32 संसाधक | विभाजन को एक्स86-32 संसाधक पर बंद नहीं किया जा सकता है (यह 64-अंश प्रणाली के लिए भी सही है, किन्तुविचार के सीमा से परे है), इतने सारे 32-अंश परिचालन प्रणाली सभी खंड के आधार को 0 पर समूह करके एक [[फ्लैट मेमोरी मॉडल|समतल स्मृति प्रतिरूप]] का अनुकरण करते हैं। विभाजन को कार्यक्रमों के प्रति तटस्थ बनाने के लिए। उदाहरण के लिए, लिनक्स कर्नेल केवल 4 सामान्य प्रयोजन खंड स्थापित करता है: | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 98: | Line 98: | ||
! Name !! Description !! Base !! Limit !! [[Descriptor Privilege Level|DPL]] | ! Name !! Description !! Base !! Limit !! [[Descriptor Privilege Level|DPL]] | ||
|- | |- | ||
| __ मूल_सीएस || मूल | | __ मूल_सीएस || मूल संकेत खंड || 0 || 4 GiB || 0 | ||
|- | |- | ||
| __ मूल_डीएस || मूल आंकड़े खंड || 0 || 4 GiB || 0 | | __ मूल_डीएस || मूल आंकड़े खंड || 0 || 4 GiB || 0 | ||
Line 106: | Line 106: | ||
| __उपयोगकर्ता_डीएस || उपयोगकर्ता आंकड़े खंड || 0 || 4 GiB || 3 | | __उपयोगकर्ता_डीएस || उपयोगकर्ता आंकड़े खंड || 0 || 4 GiB || 3 | ||
|} | |} | ||
चूंकि आधार सभी स्थितियोंमें पृष्ठन समूह है और 4 जीआईबी की सीमा है, | चूंकि आधार सभी स्थितियोंमें पृष्ठन समूह है और 4 जीआईबी की सीमा है, पृष्ठीकरण इकाई पर पहुंचने से पहले विभाजन इकाई कार्यक्रम के मुद्दों को प्रभावित नहीं करती है। (यह निश्चित रूप से 80386 और बाद के संसाधक को संदर्भित करता है, क्योंकि पहले के एक्स86 संसाधक में पृष्ठीकरण इकाई नहीं है।) | ||
वर्तमान लिनक्स सूत्र-सार्वजनिक | वर्तमान लिनक्स सूत्र-सार्वजनिक संचयन को इंगित करने के लिए जीएस का भी उपयोग करता है। | ||
खंड को | खंड को संकेत, आंकड़े या प्रणाली खंड के रूप में परिभाषित किया जा सकता है। खंड को केवल पढ़ने, पढ़ने/लिखने, निष्पादित करने आदि के लिए अतिरिक्त अनुमति अंश उपस्थितहैं। | ||
संरक्षित प्रणाली में, | संरक्षित प्रणाली में, संकेत सदैव सीएस ( संकेत खंड चयनकर्ता) को छोड़कर सभी खंड पंजिका को संशोधित कर सकता है। ऐसा इसलिए है क्योंकि संसाधक का वर्तमान विशेषाधिकार स्तर (सीपीएल) सीएस पंजिका के निचले 2 अंश में संग्रहीत है। संसाधक विशेषाधिकार स्तर (और सीएस को पुनः भार करने) को बढ़ाने का एकमात्र विधि 'आह्वान' (दूरस्थ आह्वान) और आईएनटी (एक्स86 निर्देश) | 'आईएनटी' (व्यवधान) निर्देश हैं। इसी तरह, विशेषाधिकार स्तर (और सीएस को पुनः भार करने) को कम करने का एकमात्र विधि 'एलआरआईटी' (दूर वापसी) और 'एलआरआईटी' (व्यवधान वापसी) निर्देश हैं। वास्तविक प्रणाली में, संकेत दूर छलांग लगाकर (या एक गैर-दस्तावेजी का उपयोग करके) सीएस पंजिका को संशोधित भी कर सकता है पीओपी <code>सीएस</code> 8086 या 8088 पर निर्देश)<ref><code>POP CS</code> must be used with extreme care and has limited usefulness, because it immediately changes the effective address that will be computed from the instruction pointer to fetch the next instruction. Generally, a far jump is much more useful. The existence of <code>POP CS</code> is probably an accident, as it follows a pattern of PUSH and POP instruction opcodes for the four segment registers on the 8086 and 8088.</ref>). बेशक, वास्तविक प्रणाली में, कोई विशेषाधिकार स्तर नहीं हैं; सभी योजनाओंं में सभी स्मृति और सभी सीपीयू निर्देशों तक पूर्ण अनियंत्रित पहुंच होती है। | ||
विभाजन के बारे में अधिक जानकारी के लिए, [[एएमडी]] या [[इंटेल]] वेबसाइटों पर स्वतंत्र रूप से उपलब्ध [[आईए-32]] मैनुअल देखें। | विभाजन के बारे में अधिक जानकारी के लिए, [[एएमडी]] या [[इंटेल]] वेबसाइटों पर स्वतंत्र रूप से उपलब्ध [[आईए-32]] मैनुअल देखें। | ||
Line 120: | Line 120: | ||
== यह भी देखें == | == यह भी देखें == | ||
* एक्स86 स्मृति | * एक्स86 स्मृति प्रतिरूप | ||
* [[मल्टीप्रोग्रामिंग सिस्टम|मल्टीप्रोग्रामिंग प्रणाली]] | * [[मल्टीप्रोग्रामिंग सिस्टम|मल्टीप्रोग्रामिंग प्रणाली]] | ||
* [[स्प्लिट ऑक्टल]] | * [[स्प्लिट ऑक्टल]] |
Revision as of 10:43, 30 April 2023
एक्स86 स्मृति विभाजन इंटेल एक्स86 कंप्यूटर निर्देश समूह वास्तुकला में स्मृति विभाजन के कार्यान्वयन को संदर्भित करता है। 1978 में इंटेल 8086 पर विभाजन क्रिया प्रारंभ की गई थी, जिससे कार्यक्रमों को 64 केबी (65,536 जोड़ ) से अधिक स्मृति को संबोधित करने की अनुमति मिल सके। इंटेल 80286 ने 1982 में विभाजन का दूसरा संस्करण प्रस्तावित किया जिसमें आभासी स्मृति और स्मृति सुरक्षा के लिए समर्थन जोड़ा गया। इस बिंदु पर मूल प्रणाली का नाम बदलकर वास्तविक प्रणाली कर दिया गया था, और नए संस्करण को संरक्षित प्रणाली नाम दिया गया था। 2003 में प्रस्तावित किए गए एक्स86-64 संरचना ने 64-अंश प्रणाली में विभाजन के लिए अधिक सीमा तक समर्थन छोड़ दिया था।
वास्तविक और संरक्षित दोनों प्रणाली में, वास्तविक स्मृति दक्षता प्राप्त करने के लिए प्रणाली 16-अंश खंड पंजिका का उपयोग करता है। वास्तविक प्रणाली में, सीएस, डीएस, एसएस और इएस पंजिका वर्तमान में उपयोग किए गए योजना संकेत खंड (सीएस), वर्तमान आंकड़े खंड (डीएस), वर्तमान कॉल स्टैक (आह्वान स्तंभ)(एसएस), और एक अतिरिक्त खंड की ओर संकेत करते हैं। क्रमादेशक (ईएस) द्वारा निर्धारित। 1985 में प्रस्तावित किया गया इंटेल 80386, दो अतिरिक्त खंड पंजिका , एफएस और जीएस जोड़ता है, जिसमें हार्डवेयर द्वारा परिभाषित कोई विशिष्ट उपयोग नहीं है। जिस तरह से खंड पंजिका का उपयोग किया जाता है, वह दो प्रणाली के बीच भिन्न होता है।[1]
क्रियान्वित किए जा रहे कार्य के अनुसार खंड की पसंद सामान्यतः संसाधक द्वारा चूक की जाती है। निर्देश सदैव संकेत खंड से प्राप्त किए जाते हैं। कोई भी स्तंभ दबाना या त्वरित या कोई भी आंकड़े संदर्भ जो स्तंभ का जिक्र करता है, स्तंभ खंड का उपयोग करता है। आंकड़े के अन्य सभी संदर्भ आंकड़े खंड का उपयोग करते हैं। अतिरिक्त खंड श्रृंखला संचालन के लिए चूक गंतव्य है (उदाहरण के लिए एमओवीएस या सीएमपीएस)। एफएस और जीएस के पास हार्डवेयर- नियुक्त किए गए उपयोग नहीं हैं। निर्देश प्रारूप एक वैकल्पिक खंड उपसर्ग काटने की अनुमति देता है जिसका उपयोग वांछित होने पर चयनित निर्देशों के लिए चूक खंड को अवहेलना करने के लिए किया जा सकता है।[2]
पूर्णतः प्रणाली
पूर्णतः प्रणाली या वी 8086 प्रणाली में, खंड का आकार 1 जोड़ से लेकर 65,536 जोड़ (16-अंश लक्ष्यांतर का उपयोग करके) तक हो सकता है।
खंड पंजिका में 16-अंश खंड चयनकर्ता को एक रैखिक 20-अंश दक्षता के सबसे महत्वपूर्ण 16 अंश के रूप में व्याख्या किया जाता है, जिसे खंड दक्षता कहा जाता है, जिसमें से शेष चार सबसे कम महत्वपूर्ण अंश सभी शून्य हैं। खंड स्थान सदैव एक रेखीय स्थान प्राप्त करने के निर्देश में 16-अंश लक्ष्यांतर में जोड़ा जाता है, जो इस प्रणाली में भौतिक स्थान के समान होता है। उदाहरण के लिए, खंडित स्थान 06इएफएच:1234एच (यहाँ प्रत्यय एचका अर्थ हेक्साडेसिमल है) में 06इएफएच का एक खंड चयनकर्ता है, जो 06 इएफओएच के एक खंड स्थान का प्रतिनिधित्व करता है, जिसमें लक्ष्यांतर जोड़ा जाता है, जिससे रैखिक स्थान 06 इएफओएच + 1234एच = 08124एच प्राप्त होता है।
0000 0110 1110 1111 0000
|
खंड | 16 जोड़ , स्थान्तरण 4 जोड़ विरूध्द पक्ष (और गुणा किया 0एक्स10) |
---|---|---|
+ 0001 0010 0011 0100
|
लक्ष्यांतर | 16 जोड़ |
|
||
0000 1000 0001 0010 0100
|
स्थान | 20 जोड़ |
जिस तरह से खंड दक्षता और लक्ष्यांतर जोड़े जाते हैं, उसके कारण एक पृथक रेखीय दक्षता को तक प्रतिचित्र किया जा सकता है 212 = 4096 विशिष्ट खंड: लक्ष्यांतर जोड़े। उदाहरण के लिए, रैखिक स्थान 08124एच में खंडित स्थान हो सकते हैं 06 इएफएच:1234एच, 0812h:0004एच, 0000एच:8124एच, आदि।
यह अद्वितीय दक्षता योजनाओं के आदी क्रमादेशकों के लिए भ्रमित करने वाला हो सकता है, किन्तुइसका उपयोग लाभ के लिए भी किया जा सकता है, उदाहरण के लिए कई स्थिर आंकड़े संरचनाओं को संबोधित करते समय। जबकि वास्तविक प्रणाली खंड सदैव 64 के बी लंबे होते हैं, व्यावहारिक प्रभाव केवल यह है कि कोई भी खंड 64 केबी से अधिक लंबा नहीं हो सकता है, इसके अतिरिक्त प्रत्येक खंड 64 केबी लंबा होना चाहिए। क्योंकि वास्तविक प्रणाली में कोई सुरक्षा या विशेषाधिकार सीमा नहीं है, तथापि एक खंड को 64 केबी से छोटा परिभाषित किया जा सकता है, फिर भी यह पूरी तरह से कार्यक्रमों पर निर्भर करेगा कि वे समन्वय करें और अपने खंडों की सीमा के अंदर रखें, जैसा कि कोई भी कार्यक्रम कर सकता है सदैव किसी भी स्मृति तक पहुंचें (चूंकि यह इच्छानुसार से खंड चयनकर्ताओं को बिना किसी पर्यवेक्षण के खंड स्थान बदलने के लिए समूह कर सकता है)। इसलिए, 1 से 65,536 जोड़ की सीमा में प्रत्येक खंड के लिए एक चर लंबाई होने के रूप में वास्तविक प्रणाली की कल्पना की जा सकती है, जो कि सीपीयू द्वारा प्रयुक्त नहीं किया गया है।
(रैखिक स्थान के प्रमुख शून्य, खंडित स्थान, और खंड और लक्ष्यांतर क्षेत्र स्पष्टता के लिए यहां दिखाए गए हैं। वे सामान्यतः छोड़े जाते हैं।)
वास्तविक प्रणाली का प्रभावी 20-अंश स्थान अन्तर जो स्मृति स्थान को 220 जोड़ तक सीमित करता है , या 1,048,576 जोड़ (1 स्पष्टजोड़ )। यह सीधे इंटेल 8086 (और, बाद में, निकट से संबंधित 8088) के हार्डवेयर अभिकल्पना से प्राप्त हुआ, जिसमें मात्र 20 स्थान पंक्तियां थी। (दोनों को 40-खूंटी डीआईपी डिब्बो में बाँधा किया गया था; केवल 20 दक्षता रेखा के साथ भी, दक्षता और आंकड़े स्थान्तरण को सीमित खूंटी गणना के अंदर सभी दक्षता और आंकड़े रेखा को उपयुक्त करने के लिए बहुसंकेतित किया गया था।)
प्रत्येक खंड रेखीय (सपाट) स्थान की प्रारंभ से 16 जोड़ के गुणक से प्रारंभिक होता है, जिसे एक अनुच्छेद कहा जाता है। अर्थात 16 जोड़ के अंतराल पर। चूंकि सभी खंड 64 केबी लंबे हैं, यह बताता है कि खंड के बीच अधिव्यापन कैसे हो सकता है और रेखीय स्मृति दक्षता अंतराल में किसी भी स्थान को कई खंड: लक्ष्यांतर जोड़े के साथ क्यों अभिगम किया जा सकता है। रेखीय स्थान स्थान में एक खंड की प्रारंभ के वास्तविक स्थान की गणना खंड × 16 के साथ की जा सकती है। ओसीएच (12) का एक खंड मान रैखिक स्थान में ओसीएच (192) पर एक रैखिक स्थान देगा। इसके बाद दक्षता लक्ष्यांतर को इस नंबर में जोड़ा जा सकता है। ओसीएच:ओएफएच (12:15) होगा सीओएच+ओएफएच=सीएफएच (192+15=207), सीएफएच (207) रेखीय स्थान होगा। इस तरह के दक्षता अनुवाद सीपीयू की विभाजन इकाई द्वारा किए जाते हैं। अंतिम खंड, एफएफएफएफएच (65535), रेखीय स्थान एफएफएफएफओएच (1048560) पर प्रारंभ होता है, 20 अंश स्थान के अंत से 16 जोड़ पहले, और इस प्रकार, 65,536 जोड़ तक, 65,520 (65536) तक लक्ष्यांतर के साथ पहुंच सकता है −16) जोड़ 20 अंश 8088 दक्षता अंतराल के अंत के बाद। 8088 पर, इन दक्षता अभिगम को दक्षता अंतराल की प्रारंभ में लपेटा गया था जैसे कि 65535:16 दक्षता 0 तक पहुंच जाएगा और 65533:1000 रेखीय दक्षता अंतराल के दक्षता 952 तक पहुंच जाएगा। क्रमादेशकों द्वारा इस सुविधा का उपयोग बाद की सीपीयू पीढ़ियों में मार्ग ए 20 संगतता मुद्दों के कारण हुआ, जहां रेखीय स्थान को 20 अंश से आगे बढ़ाया गया था।
16-अंश वास्तविक प्रणाली में, कई स्मृति खंड का उपयोग करने के लिए अनुप्रयोग को सक्षम करना (किसी एक 64के-खंड में उपलब्ध स्मृति से अधिक स्मृति तक पहुंचने के लिए) अधिक जटिल है, किन्तुइसे सभी के लिए एक आवश्यक बुराई के रूप में देखा गया था किन्तुसबसे छोटे उपकरण ( जो कम स्मृति के साथ कर सकता है)। समस्या की जड़ यह है कि संपूर्ण स्मृति श्रेणी के समतल दक्षता के लिए उपयुक्त कोई उपयुक्त स्थान-अंकगणितीय निर्देश उपलब्ध नहीं हैं। कई निर्देशों को प्रयुक्त करने से समतल दक्षता संभव है, जो चूंकि धीमे योजना की ओर ले जाता है।
एक्स86 स्मृति प्रतिरूप अवधारणा खंड पंजिका के व्यवस्था से निकली है। उदाहरण के लिए, छोटे प्रतिरूप सीएस=डीएस=एसएस में, अर्थात योजना का संकेत, आंकड़े और स्तंभ सभी एक ही 64 केबी खंड में समाहित हैं। छोटे स्मृति प्रतिरूप डीएस=एसएस में, इसलिए आंकड़े और स्तंभ दोनों एक ही खंड में रहते हैं; सीएस 64 केबी तक के अलग संकेत खंड की ओर संकेत करता है।
संरक्षित प्रणाली
80286 संरक्षित प्रणाली
इंटेल 80286 का संरक्षित प्रणाली संसाधक के दक्षता अंतराल को 224 तक बढ़ा देता है जोड़ (16 स्पष्ट जोड़), किन्तुपरिवर्तन मान को समायोजित करके नहीं। इसके अतिरिक्त, 16-अंश खंड पंजिका में अब 24-अंश आधार दक्षता वाले खंड वर्णनकर्ता की तालिका में एक निर्देशिका होता है जिसमें लक्ष्यांतर जोड़ा जाता है। पुराने सॉफ़्टवेयर का समर्थन करने के लिए, संसाधक वास्तविक प्रणाली में प्रारंभ होता है, एक ऐसा प्रणाली जिसमें यह 8086 के खंडित दक्षता प्रतिरूप का उपयोग करता है। चूंकि एक छोटा सा अंतर है: परिणामी भौतिक स्थान अब 20 अंश तक छोटा नहीं किया जाता है, इसलिए वास्तविक प्रणाली संकेत (किन्तु8086 संकेत नहीं) अब 10000016 के बीच के स्थानों को संदर्भित कर सकते हैं और 10एफएफइएफ16. स्मृति के लगभग 64-किलोबाईट क्षेत्र को हाई स्मृति क्षेत्र (एचएमए) के रूप में जाना जाता था, और डीओएस के बाद के संस्करण इसका उपयोग उपलब्ध पारंपरिक स्मृति (अर्थात पहले स्पष्ट जोड़ के अंदर) को बढ़ाने के लिए कर सकते थे। एचएमए को जोड़ने के साथ, कुल स्थान स्थान लगभग 1.06 एमबी हो जाता है। चूंकि 80286 मुख्य-प्रणाली स्थानों को 20 अंश तक छोटा नहीं करता है, 80286 वाला प्रणाली 21वीं दक्षता रेखा, ए 20 रेखा को अवरोधन बंद करके संसाधक के बाहरी हार्डवेयर के साथ ऐसा कर सकता है। आईबीएम पीसी एटी ने ऐसा करने के लिए हार्डवेयर प्रदान किया (मूल आईबीएम पीसी और आईबीएम पीसी/एक्सटी|पीसी/एक्सटी प्रतिरूप के लिए सॉफ़्टवेयर के साथ पूर्ण पिछड़े संगतता के लिए), और इसलिए बाद के सभी आईबीएम पीसी/एटी-श्रेणी के पीसी प्रतिरूप ने भी किया।
286 संरक्षित प्रणाली का उपयोग संभवतः ही कभी किया गया था क्योंकि यह 8086/88 उपकरणों वाले उपयोगकर्ताओं के बड़े निकाय को बाहर कर देता था। इसके अतिरिक्त, यह अभी भी स्मृति को 64k खंड में विभाजित करने की आवश्यकता है जैसे वास्तविक प्रणाली में किया गया था। इस सीमा को 32-अंश सीपीयू पर काम किया जा सकता है जो आकार में 64केबी से अधिक स्मृति संकेत के उपयोग की अनुमति देता है, चूंकि खंड सीमा क्षेत्र केवल 24-अंश लंबा है, जो अधिकतम खंड आकार बनाया जा सकता है वह 16एमबी है (यद्यपि पृष्ठीकरण अधिक स्मृति आवंटित करने के लिए उपयोग किया जा सकता है, कोई भी व्यक्तिगत खंड 16एमबी से अधिक नहीं हो सकता है)। इस पद्धति का उपयोग सामान्यतः विंडोज 3.एक्स अनुप्रयोगों पर समतल स्मृति अंतराल बनाने के लिए किया जाता था, चूंकि ओएस अभी भी 16-अंश था, 32-अंश निर्देशों के साथ एपीआई कॉल नहीं की जा सकती थी। इस प्रकार, 64k खंड में एपीआई कॉल करने वाले सभी संकेत को रखना अभी भी आवश्यक था।
एक बार 286 संरक्षित प्रणाली प्रयुक्त हो जाने के बाद, इसे हार्डवेयर पुनः समायोजन करने के अतिरिक्त बाहर नहीं निकाला जा सकता है। बढ़ती आईबीएम पीसी/एटी मानक का पालन करने वाली मशीनें मानकीकृत कीबोर्ड नियंत्रक के माध्यम से सीपीयू को पुनः समायोजन करने का ढोंग कर सकती हैं, किन्तुयह अधिक सुस्त था। विंडोज़ 3.एक्स ने सीपीयू के अवरोध-प्रबंधन तंत्र में जानबूझकर त्रिपक्षीय दोष को प्रवर्तन करके इन दोनों समस्याओं के आसपास काम किया, जिससे सीपीयू वास्तविक प्रणाली में वापस आ जाएगा, लगभग तुरंत।[3]
विस्तृत विभाजन इकाई कार्यप्रवाह
एक तर्कसंगत स्थान में 16-अंश खंड चयनकर्ता (13 + 1 स्थान अंश की आपूर्ति) और 16-अंश लक्ष्यांतर होता है। खंड चयनकर्ता को खंड पंजिकों में से एक में स्थित होना चाहिए। उस चयनकर्ता में 2-अंश निवेदन विशेषाधिकार स्तर (आरपीएल), 1-अंश तालिका सूचक (टीआई) और 13-अंश निर्देशिका होता है।
किसी दिए गए तर्कसंगत दक्षता के दक्षता अनुवाद का प्रयास करते समय, संसाधक 64-अंश खंड वर्णनकर्ता संरचना को या तो वैश्विक वर्णनकर्ता तालिका से पढ़ता है जब टीआई = 0 या स्थानीय वर्णनकर्ता तालिका जब टीआई= 1 होता है। यह तब विशेषाधिकार जांच करता है:
- अधिकतम (सीपीएल, आरपीएल) ≤ डीपीएल
जहाँ सीपीएल वर्तमान विशेषाधिकार स्तर है (सीएस पंजिका के निचले 2 अंश में पाया जाता है), आरपीएल खंड चयनकर्ता से अनुरोधित विशेषाधिकार स्तर है, और डीपीएल खंड का वर्णनकर्ता विशेषाधिकार स्तर है (विवरणकर्ता में पाया जाता है)। सभी विशेषाधिकार स्तर 0-3 की सीमा में पूर्णांक हैं, जहाँ सबसे कम संख्या उच्चतम विशेषाधिकार से मेल खाती है।
यदि असमानता गलत है, तो संसाधक एक सामान्य सुरक्षा दोष | सामान्य सुरक्षा (जीपी) दोष उत्पन्न करता है। अन्यथा, स्थान अनुवाद जारी रहता है। संसाधक तब 32-अंश या 16-अंश लक्ष्यांतर लेता है और इसकी तुलना खंड वर्णनकर्ता में निर्दिष्ट खंड सीमा से करता है। यदि यह बड़ा है, तो जीपी दोष उत्पन्न होता है। अन्यथा, संसाधक 24-अंश खंड आधार जोड़ता है, वर्णनकर्ता में निर्दिष्ट, लक्ष्यांतर में, एक रेखीय भौतिक स्थान बनाता है।
विशेषाधिकार जांच केवल तब की जाती है जब खंड पंजिका भार हो जाता है, क्योंकि खंड वर्णनकर्ता को खंड पंजिकों के छिपे हुए हिस्सों में भंडार किया जाता है।[1]
80386 संरक्षित प्रणाली
इंटेल 80386 और बाद में, संरक्षित प्रणाली 80286 संरक्षित प्रणाली के विभाजन तंत्र को निरंतर रखता है, किन्तुविभाजन इकाई और भौतिक स्थान्तरण के बीच स्थान अनुवाद की दूसरी परत के रूप में एक पृष्ठीकरण इकाई को जोड़ा गया है। इसके अतिरिक्त, महत्वपूर्ण बात यह है कि दक्षता लक्ष्यांतर 32-अंश (16-अंश के अतिरिक्त) हैं, और प्रत्येक खंड वर्णनकर्ता में खंड आधार भी 32-अंश (24-अंश के अतिरिक्त) है। विभाजन इकाई का सामान्य संचालन अन्यथा अपरिवर्तित है। पृष्ठन इकाई सक्षम या अक्षम हो सकती है; यदि अक्षम किया गया है, तो संचालन 80286 के समान है। यदि पृष्ठीकरण इकाई सक्षम है, तो खंड में स्थान अब भौतिक स्थान के अतिरिक्त आभासी स्थान हैं, जैसा कि वे 80286 पर थे। और अंतिम 32-अंश स्थान दो को जोड़कर प्राप्त विभाजन इकाई सभी आभासी (या तर्कसंगत) स्थान हैं जब पृष्ठीकरण इकाई सक्षम होती है। जब विभाजन इकाई इन 32-अंश आभासी स्थानों को उत्पन्न और मान्य करती है, तो सक्षम पृष्ठीकरण इकाई अंत में इन आभासी स्थानों को भौतिक स्थानों में बदल देती है। इंटेल 80386 पर भौतिक स्थान 32-अंश हैं, किन्तु नए संसाधक पर बड़े हो सकते हैं जो भौतिक स्थान प्रारूप का समर्थन करते हैं।
80386 ने चार खंड पंजिका (सीएस, डीएस, ईएस, और एसएस) के मूल समूह में दो नए सामान्य-उद्देश्य आंकड़े खंड पंजिका , एफएस और जीएस भी प्रस्तावित किए।
एक 386 सीपीयू को सीआरओ नियंत्रण पंजिका में थोड़ा सा साफ़ करके वास्तविक प्रणाली में वापस रखा जा सकता है, चूंकि सुरक्षा और शक्तिशाली को प्रयुक्त करने के लिए यह एक विशेषाधिकार प्राप्त संचालन है। तुलना के माध्यम से, एक 286 को केवल संसाधक पुनः समायोजन के लिए प्रेरक करके वास्तविक प्रणाली में लौटाया जा सकता है, उदाहरण: त्रिपक्षीय दोष या बाहरी हार्डवेयर का उपयोग करके।
पश्चात् के घटनाक्रम
एक्स86-64 संरचना लंबे प्रणाली (64-अंश प्रणाली) में विभाजन का उपयोग नहीं करता है। खंड पंजिका में से चार, सीएस, एसएस, डीएस, और ईएस, आधार स्थान 0 और 264 की सीमा के लिए प्रेरक हैं खंड पंजिका एफएस और जीएस में अभी भी एक गैर-शून्य आधार स्थान हो सकता है। यह परिचालन प्रणाली को इन खंडों के विशेष उद्देश्यों के लिए उपयोग करने की अनुमति देता है। विरासत प्रणाली द्वारा उपयोग किए जाने वाले वैश्विक विवरण तालिका तंत्र के विपरीत, इन पदनाम का आधार स्थान प्रतिरूप-विशिष्ट पंजिका में संग्रहीत होता है। एक्स86-64 संरचना विशेष एसडब्लूएपीजीएस निर्देश प्रदान करता है, जो मूल प्रणाली और उपयोगकर्ता प्रणाली आधार स्थानों को अदला-बदली करने की अनुमति देता है।
उदाहरण के लिए, एक्स86-64 पर माइक्रोसॉफ़्ट विंडोज़ जीएस खंड का उपयोग सूत्र सूचना खंड को इंगित करने के लिए करता है, प्रत्येक सूत्र (कंप्यूटर विज्ञान) के लिए एक छोटी आंकड़े संरचना, जिसमें अपवाद प्रबंधन, सूत्र-स्थानीय चर और अन्य प्रति- के बारे में जानकारी सम्मिलित है। सूत्र स्थिति। इसी तरह, लिनक्स कर्नेल प्रति-सीपीयू आंकड़े संचय करने के लिए जीएस खंड का उपयोग करता है।
जीएस/एफएस का उपयोग जीएनयू संकलक संग्रह के सूत्र-सार्वजनिक संचयन और कैनरी-आधारित स्तंभ संरक्षक में भी किया जाता है।
अभ्यास
तर्कसंगत स्थानों को एक्स86 समुच्चय भाषा में स्पष्ट रूप से निर्दिष्ट किया जा सकता है, उदाहरण: (एटी और टी वाक्य - विन्यास)
movl $42, %fs:(%eaएक्स);के बराबर में M[fs:eaएक्स]<-42)
या इंटेल सिंटैक्स में:
mov dword [fs:eax], 42
चूंकि, खंड पंजिका का उपयोग सामान्यतः निहित रूप से किया जाता है।
- सभी सीपीयू निर्देश सीएस पंजिका में रखे गए खंड चयनकर्ता द्वारा निर्दिष्ट संकेत खंड से निहित रूप से प्राप्त किए जाते हैं।
- अधिकांश स्मृति संदर्भ डीएस पंजिका में रखे गए खंड चयनकर्ता द्वारा निर्दिष्ट आंकड़े खंड से आते हैं। ये इएस पंजिका में रखे गए खंड चयनकर्ता द्वारा निर्दिष्ट अतिरिक्त खंड से भी आ सकते हैं, यदि एक खंड-अवहेलना उपसर्ग उस निर्देश से पहले आता है जो स्मृति संदर्भ बनाता है। अधिकांश, किन्तुसभी नहीं, निर्देश जो चूक रूप से डीएस का उपयोग करते हैं, एक इएस अवहेलना उपसर्ग को स्वीकार करेंगे।
- संसाधक चाल-अवधि स्तंभ संदर्भ, या तो निहित रूप से (जैसे ' दबाना' और 'त्वरित ' निर्देश) या स्पष्ट रूप से ( स्तंभ-आधारित स्मृति आवंटन | (ई) एसपी या (ई) बीपी पंजिका का उपयोग करके स्मृति अभिगम) निर्दिष्ट स्तंभ खंड का उपयोग करें एसएस पंजिका में उपस्थित खंड चयनकर्ता द्वारा।
- एक्स86 श्रृंखला निर्देश (जैसे 'एसटीओएस', 'एमओवीएस'), आंकड़े खंड के साथ, इएस पंजिका में रखे गए खंड चयनकर्ता द्वारा निर्दिष्ट अतिरिक्त खंड का भी उपयोग करते हैं।
विभाजन को एक्स86-32 संसाधक पर बंद नहीं किया जा सकता है (यह 64-अंश प्रणाली के लिए भी सही है, किन्तुविचार के सीमा से परे है), इतने सारे 32-अंश परिचालन प्रणाली सभी खंड के आधार को 0 पर समूह करके एक समतल स्मृति प्रतिरूप का अनुकरण करते हैं। विभाजन को कार्यक्रमों के प्रति तटस्थ बनाने के लिए। उदाहरण के लिए, लिनक्स कर्नेल केवल 4 सामान्य प्रयोजन खंड स्थापित करता है:
Name | Description | Base | Limit | DPL |
---|---|---|---|---|
__ मूल_सीएस | मूल संकेत खंड | 0 | 4 GiB | 0 |
__ मूल_डीएस | मूल आंकड़े खंड | 0 | 4 GiB | 0 |
__उपयोगकर्ता_सीएस | उपयोगकर्ता संकेत खंड | 0 | 4 GiB | 3 |
__उपयोगकर्ता_डीएस | उपयोगकर्ता आंकड़े खंड | 0 | 4 GiB | 3 |
चूंकि आधार सभी स्थितियोंमें पृष्ठन समूह है और 4 जीआईबी की सीमा है, पृष्ठीकरण इकाई पर पहुंचने से पहले विभाजन इकाई कार्यक्रम के मुद्दों को प्रभावित नहीं करती है। (यह निश्चित रूप से 80386 और बाद के संसाधक को संदर्भित करता है, क्योंकि पहले के एक्स86 संसाधक में पृष्ठीकरण इकाई नहीं है।)
वर्तमान लिनक्स सूत्र-सार्वजनिक संचयन को इंगित करने के लिए जीएस का भी उपयोग करता है।
खंड को संकेत, आंकड़े या प्रणाली खंड के रूप में परिभाषित किया जा सकता है। खंड को केवल पढ़ने, पढ़ने/लिखने, निष्पादित करने आदि के लिए अतिरिक्त अनुमति अंश उपस्थितहैं।
संरक्षित प्रणाली में, संकेत सदैव सीएस ( संकेत खंड चयनकर्ता) को छोड़कर सभी खंड पंजिका को संशोधित कर सकता है। ऐसा इसलिए है क्योंकि संसाधक का वर्तमान विशेषाधिकार स्तर (सीपीएल) सीएस पंजिका के निचले 2 अंश में संग्रहीत है। संसाधक विशेषाधिकार स्तर (और सीएस को पुनः भार करने) को बढ़ाने का एकमात्र विधि 'आह्वान' (दूरस्थ आह्वान) और आईएनटी (एक्स86 निर्देश) | 'आईएनटी' (व्यवधान) निर्देश हैं। इसी तरह, विशेषाधिकार स्तर (और सीएस को पुनः भार करने) को कम करने का एकमात्र विधि 'एलआरआईटी' (दूर वापसी) और 'एलआरआईटी' (व्यवधान वापसी) निर्देश हैं। वास्तविक प्रणाली में, संकेत दूर छलांग लगाकर (या एक गैर-दस्तावेजी का उपयोग करके) सीएस पंजिका को संशोधित भी कर सकता है पीओपी सीएस
8086 या 8088 पर निर्देश)[4]). बेशक, वास्तविक प्रणाली में, कोई विशेषाधिकार स्तर नहीं हैं; सभी योजनाओंं में सभी स्मृति और सभी सीपीयू निर्देशों तक पूर्ण अनियंत्रित पहुंच होती है।
विभाजन के बारे में अधिक जानकारी के लिए, एएमडी या इंटेल वेबसाइटों पर स्वतंत्र रूप से उपलब्ध आईए-32 मैनुअल देखें।
नोट्स और संदर्भ
- ↑ 1.0 1.1 "Intel 64 and IA-32 Architectures Software Developer's Manual", Volume 3, "System Programming Guide", published in 2011, Page "Vol. 3A 3-11", the book is written: "Every segment register has a “visible” part and a “hidden” part. (The hidden part is sometimes referred to as a “descriptor cache” or a “shadow register.”) When a segment selector is loaded into the visible part of a segment register, the processor also loads the hidden part of the segment register with the base address, segment limit, and access control information from the segment descriptor pointed to by the segment selector. The information cached in the segment register (visible and hidden) allows the processor to translate addresses without taking extra bus cycles to read the base address and limit from the segment descriptor."
- ↑ Intel Corporation (2004). IA-32 Intel Architecture Software Developer's Manual Volume 1: Basic Architecture (PDF).
- ↑ "DevBlogs".
- ↑
POP CS
must be used with extreme care and has limited usefulness, because it immediately changes the effective address that will be computed from the instruction pointer to fetch the next instruction. Generally, a far jump is much more useful. The existence ofPOP CS
is probably an accident, as it follows a pattern of PUSH and POP instruction opcodes for the four segment registers on the 8086 and 8088.
यह भी देखें
- एक्स86 स्मृति प्रतिरूप
- मल्टीप्रोग्रामिंग प्रणाली
- स्प्लिट ऑक्टल