मेमोरी एड्रेस: Difference between revisions

From Vigyanwiki
No edit summary
 
(9 intermediate revisions by 4 users not shown)
Line 2: Line 2:


[[File:Paging.svg|thumb|300px|[[ अप्रत्यक्ष स्मृति | अप्रत्यक्ष मेमोरी]] का उपयोग करने वाले कंप्यूटर में, मेमोरी एड्रेस के अनुरूप लोकेशन तक पहुँचने में कई स्तर शामिल हो सकते हैं।]]
[[File:Paging.svg|thumb|300px|[[ अप्रत्यक्ष स्मृति | अप्रत्यक्ष मेमोरी]] का उपयोग करने वाले कंप्यूटर में, मेमोरी एड्रेस के अनुरूप लोकेशन तक पहुँचने में कई स्तर शामिल हो सकते हैं।]]
[[ कम्प्यूटिंग |कम्प्यूटिंग]] में, एक मेमोरी एड्रेस एक विशिष्ट [[ स्मृति |मेमोरी]] लोकेशन का एक संदर्भ है जो [[ सॉफ़्टवेयर |सॉफ़्टवेयर]] और [[ संगणक धातु सामग्री |हार्डवेयर]] द्वारा विभिन्न स्तरों पर उपयोग किया जाता है। मेमोरी एड्रेस अंकों की निश्चित-लंबाई अनुक्रम होते हैं, जिन्हें पारंपरिक रूप से अहस्ताक्षरित पूर्णांक के रूप में दर्शाया और हेरफेर किया जाता है। इस तरह के संख्यात्मक शब्दार्थ सीपीयू की विशेषताओं (जैसे कि [[ निर्देश सूचक |निर्देश सूचक]] और वृद्धिशील [[ मेमोरी एड्रेस रजिस्टर |एड्रेस रजिस्टर]]) पर आधारित होते हैं, साथ ही विभिन्न [[ प्रोग्रामिंग भाषा |प्रोग्रामिंग भाषाओं]] द्वारा समर्थित एक सरणी की तरह मेमोरी के उपयोग पर आधारित होते हैं।
[[ कम्प्यूटिंग |कम्प्यूटिंग]] में, एक '''मेमोरी एड्रेस''' एक विशिष्ट [[ स्मृति |मेमोरी]] लोकेशन का एक संदर्भ है जो [[ सॉफ़्टवेयर |सॉफ़्टवेयर]] और [[ संगणक धातु सामग्री |हार्डवेयर]] द्वारा विभिन्न स्तरों पर उपयोग किया जाता है। मेमोरी एड्रेस अंकों की निश्चित-लंबाई अनुक्रम होते हैं, जिन्हें पारंपरिक रूप से अहस्ताक्षरित पूर्णांक के रूप में दर्शाया और हेरफेर किया जाता है। इस तरह के संख्यात्मक शब्दार्थ सीपीयू की विशेषताओं (जैसे कि [[ निर्देश सूचक |निर्देश सूचक]] और वृद्धिशील [[ मेमोरी एड्रेस रजिस्टर |एड्रेस रजिस्टर]]) पर आधारित होते हैं, साथ ही विभिन्न [[ प्रोग्रामिंग भाषा |प्रोग्रामिंग भाषाओं]] द्वारा समर्थित एक सरणी की तरह मेमोरी के उपयोग पर आधारित होते हैं।


== प्रकार ==
== प्रकार ==
Line 24: Line 24:
वर्ड साइज [[ कंप्यूटर आर्किटेक्चर |कंप्यूटर आर्किटेक्चर]] की एक विशेषता है जो बिट्स की संख्या का प्रतिनिधित्व करता है जिसे एक सीपीयू एक समय में प्रोसेस कर सकता है। आधुनिक प्रोसेसर, एम्बेडेड सिस्टम सहित, आमतौर पर 8, 16, 24, 32, या 64 बिट्स का शब्द आकार होता है; अधिकांश वर्तमान सामान्य-उद्देश्य वाले कंप्यूटर या तो 32 या 64 बिट्स का उपयोग करते हैं। 8, 9, 10, 12, 18, 24, 36, 39, 40, 48, और 60 बिट्स सहित कई अलग-अलग बिट आकारों का ऐतिहासिक रूप से उपयोग किया गया है।
वर्ड साइज [[ कंप्यूटर आर्किटेक्चर |कंप्यूटर आर्किटेक्चर]] की एक विशेषता है जो बिट्स की संख्या का प्रतिनिधित्व करता है जिसे एक सीपीयू एक समय में प्रोसेस कर सकता है। आधुनिक प्रोसेसर, एम्बेडेड सिस्टम सहित, आमतौर पर 8, 16, 24, 32, या 64 बिट्स का शब्द आकार होता है; अधिकांश वर्तमान सामान्य-उद्देश्य वाले कंप्यूटर या तो 32 या 64 बिट्स का उपयोग करते हैं। 8, 9, 10, 12, 18, 24, 36, 39, 40, 48, और 60 बिट्स सहित कई अलग-अलग बिट आकारों का ऐतिहासिक रूप से उपयोग किया गया है।


बहुत बार, आधुनिक कंप्यूटर के शब्द आकार का जिक्र करते समय, उस कंप्यूटर पर पता स्थान के आकार का भी वर्णन किया जाता है। उदाहरण के लिए, "[[ 32-बिट |32-बिट]]" लेबल वाला कंप्यूटर आमतौर पर 32-बिट मेमोरी पतों की अनुमति देता है; एक बाइट-एड्रेसेबल 32-बिट कंप्यूटर 232 = 4,294,967,296 बाइट्स मेमोरी, या 4 बाईट्स (जीबी) को एड्रेस कर सकता है। यह एक स्मृति पते को एक शब्द में कुशलतापूर्वक संग्रहित करने की अनुमति देता है।
बहुत बार, आधुनिक कंप्यूटर के वर्ड साइज का जिक्र करते समय, उस कंप्यूटर पर पता स्थान के आकार का भी वर्णन किया जाता है। उदाहरण के लिए, "[[ 32-बिट |32-बिट]]" लेबल वाला कंप्यूटर आमतौर पर 32-बिट मेमोरी एड्रेस की अनुमति देता है; एक बाइट-एड्रेसेबल 32-बिट कंप्यूटर 232 = 4,294,967,296 बाइट्स मेमोरी, या 4 बाईट्स (जीबी) को एड्रेस कर सकता है। यह एक मेमोरी एड्रेस को एक शब्द में कुशलतापूर्वक संग्रहित करने की अनुमति देता है।


हालांकि, यह हमेशा सच नहीं होता है। कंप्यूटर के मेमोरी एड्रेस उनके वर्ड आकार से बड़े या छोटे हो सकते हैं। उदाहरण के लिए, कई [[ 8 बिट |8 बिट]] प्रोसेसर, जैसे कि [[ एमओएस प्रौद्योगिकी 6502 |एमओएस प्रौद्योगिकी 6502]] जो 16-बिट एड्रेस को समर्थित करते है या वे केवल 256 बाइट्स मेमोरी एड्रेसिंग तक सीमित होते। 16-बिट [[ Intel 8088 |इंटेल]] [[ Intel 8088 |8088]] और [[ इंटेल 8086 |इंटेल]] 8086 ने विभाजन के माध्यम से 20-बिट एड्रेसिंग का समर्थन किया, जिससे उन्हें 64 कीबी बाइट मेमोरी के बजाय 1 मेबी बाइट तक पहुंचने की अनुमति मिली। [[ पेंटियम प्रो |पेंटियम प्रो]] के बाद से सभी इंटेल [[ पेंटियम (ब्रांड) |पेंटियम ब्रांड]] प्रोसेसर में भौतिक एड्रेस एक्सटेंशन (पीएई) शामिल हैं जो 32-बिट आभासी एड्रेस के लिए 36-बिट भौतिक एड्रेस की मैपिंग का समर्थन करते हैं। कई शुरुआती प्रोसेसर में प्रति वर्ड 2 एड्रेस होते थे, जैसे कि 36-बिट प्रोसेसर।
हालांकि, यह हमेशा सच नहीं है। कंप्यूटर मेमोरी एड्रेस उनके वर्ड साइज से बड़ा या छोटा हो सकता है। उदाहरण के लिए, कई [[ 8 बिट |8 बिट]] प्रोसेसर, जैसे [[ एमओएस प्रौद्योगिकी 6502 |एमओएस]] टेक्नोलॉजी 6502, 16-बिट एड्रेस का समर्थन करते हैं - यदि वे नहीं करते हैं, तो वे मेमोरी एड्रेसिंग के केवल 256 बाइट्स तक ही सीमित रहेंगे। 16-बिट [[ Intel 8088 |इंटेल]] [[ Intel 8088 |8088]] और इंटेल 8086 ने डिवीजन के माध्यम से 20-बिट एड्रेसिंग का समर्थन किया, जिससे उन्हें 64 केबी मेमोरी के बजाय 1 एमबी  का उपयोग करने की अनुमति मिली। [[ पेंटियम प्रो |पेंटियम प्रो]] के बाद से सभी इंटेल पेंटियम प्रोसेसर में फिजिकल एड्रेस एक्सटेंशन (पीएई) सम्मिलित हैं जो 36-बिट फिजिकल एड्रेस को 32-बिट वर्चुअल एड्रेस पर मैप करने का समर्थन करते हैं। कई शुरुआती प्रोसेसर में प्रति वर्ड 2 एड्रेस होते थे, जैसे कि 36-बिट प्रोसेसर।


सिद्धांत रूप में, आधुनिक बाइट-एड्रेसेबल [[ 64-बिट |64-बिट]] कंप्यूटर 2<sup>64</sup> बाइट्स जोकि 16 [[ एक्सबीबाइट |एक्सबीबाइट]] को संबोधित कर सकते हैं लेकिन व्यवहार में मेमोरी की मात्रा सीपीयू, मेमोरी कंट्रोलर, या [[ मुद्रित सर्किट बोर्ड |मुद्रित परिपथ बोर्ड]] डिज़ाइन जैसे, भौतिक मेमोरी कनेक्टर की संख्या या सोल्डर-ऑन ​​मेमोरी की मात्रा द्वारा सीमित होती है। .
सिद्धांत रूप में, आधुनिक बाइट-एड्रेसेबल [[ 64-बिट |64-बिट]] कंप्यूटर 2<sup>64</sup> बाइट्स (16 एक्साबाइट्स) को संबोधित कर सकते हैं, लेकिन व्यवहार में, मेमोरी की मात्रा सीपीयू, मेमोरी कंट्रोलर या [[ मुद्रित सर्किट बोर्ड |मुद्रित परिपथ बोर्ड]] डिज़ाइन (जैसे, फिजिकल मेमोरी की संख्या) द्वारा सीमित होती है) है। कनेक्टर्स या सोल्डर-ऑन मेमोरी की मात्रा)।


==प्रत्येक मेमोरी लोकेशन की विषय-सूची ==
==प्रत्येक मेमोरी लोकेशन की विषय-सूची ==
{{see also|बाइनरी डाटा}}
{{see also|बाइनरी डाटा}}
एक स्टोर्ड [[ संग्रहीत-प्रोग्राम कंप्यूटर |कंप्यूटर प्रोग्राम]] में प्रत्येक मेमोरी लोकेशन एक [[ बाइनरी संख्या |बाइनरी संख्या]] या किसी प्रकार की [[ दशमलव संख्या |दशमलव संख्या]] होती है। इसकी व्याख्या, कुछ डेटा प्रकार या एक निर्देश के रूप में, और उपयोग उन निर्देशों द्वारा निर्धारित किया जाता है जो इसे पुनर्प्राप्त और हेरफेर करते हैं।  
एक संग्रहीत [[ संग्रहीत-प्रोग्राम कंप्यूटर |कंप्यूटर प्रोग्राम]] में प्रत्येक मेमोरी लोकेशन में किसी प्रकार का [[ बाइनरी संख्या |बाइनरी संख्या]] या [[ दशमलव संख्या |दशमलव संख्या]] होती है। इसकी व्याख्या, चाहे डेटा प्रकार के डेटा के रूप में हो या निर्देश के रूप में, और इसका उपयोग उन निर्देशों द्वारा निर्धारित किया जाता है जो इसे पुनर्प्राप्त और कार्यसाधन करते हैं।  


जब यह महंगा था तब कुछ शुरुआती प्रोग्रामर ने मेमोरी की बचत करने के तरीके के रूप में निर्देशों और डेटा वर्ड्स को जोड़ा: [[ मैनचेस्टर मार्क 1 ]] के पास 40-बिट वर्ड में डेटा के छोटे बिट्स को स्टोर करने के लिए जगह थी - इसके प्रोसेसर ने बीच में एक छोटे से हिस्से को नजरअंदाज कर दिया। एक वर्ड - और जिसे अक्सर अतिरिक्त डेटा संग्रहण के रूप में उपयोग किया जाता था।{{citation needed|date=October 2011}} [[ कंप्यूटर वायरस ]] जैसे स्व-प्रतिकृति प्रोग्राम स्वयं को कभी डेटा के रूप में और कभी-कभी निर्देश के रूप में व्यवहार करते हैं। [[ स्व-संशोधित कोड |स्व-संशोधित कोड]] आमतौर पर आजकल बहिष्कृत है, क्योंकि यह कुछ बाइट्स की बचत के लिए परीक्षण और रखरखाव को असमान रूप से कठिन बना देता है, और मशीन के [[ राज्य (कंप्यूटर विज्ञान) |राज्य कंप्यूटर विज्ञान]] के बारे में कंपाइलर या प्रोसेसर की धारणाओं के कारण गलत परिणाम भी दे सकता है, लेकिन अभी भी है कभी-कभी जानबूझकर इसे बहुत सावधानी से उपयोग किया जाता है।
कुछ शुरुआती प्रोग्रामर ने मेमोरी को बचाने के तरीके के रूप में निर्देशों और डेटा को संयुक्त किया जब यह महंगा था: [[ मैनचेस्टर मार्क 1 |मैनचेस्टर मार्क 1]] में 40-बिट शब्दों में डेटा के छोटे टुकड़ों को स्टोर करने के लिए जगह थी - इसके प्रोसेसर के बीच में एक ही ब्लॉक था। छोटे हिस्से ने एक शब्द पर ध्यान नहीं दिया - और इसे अक्सर अतिरिक्त डेटा संग्रहण के रूप में उपयोग किया जाता था।{{citation needed|date=October 2011}} स्व-प्रतिकृति कार्यक्रम जैसे वायरस स्वयं को कभी-कभी डेटा के रूप में और कभी-कभी निर्देशों के रूप में मानते हैं। [[ स्व-संशोधित कोड |स्व-संशोधित कोड]] को आजकल आम तौर पर पदावनत किया जाता है, क्योंकि यह कुछ बाइट्स को बचाने के लिए असंगत रूप से कठिन परीक्षण और रखरखाव करता है, और मशीन की स्थिति के बारे में संकलक या प्रोसेसर की धारणाओं के कारण गलत परिणाम भी दे सकता है। लेकिन अभी भी कभी-कभी जानबूझकर, बहुत सावधानी से उपयोग किया जाता है।


===एप्लिकेशन प्रोग्रामिंग में एड्रेस लोकेशन ===
===एप्लिकेशन प्रोग्रामिंग में एड्रेस स्पेस ===
आधुनिक [[ कंप्यूटर मल्टीटास्किंग |कंप्यूटर मल्टीटास्किंग]] वातावरण में, एक एप्लिकेशन प्रोग्राम में आमतौर पर इसके एड्रेस स्पेस में निम्न प्रकार की मेमोरी होती है:
आधुनिक [[ कंप्यूटर मल्टीटास्किंग |कंप्यूटर मल्टीटास्किंग]] वातावरण में, एक एप्लिकेशन प्रोग्राम में आमतौर पर इसके एड्रेस स्पेस में निम्न प्रकार की मेमोरी होती है:
* मशीन कोड, सहित:
* मशीन कोड, सहित:
**प्रोग्राम का अपना कोड (ऐतिहासिक रूप से ''[[ कोड खंड |कोड खंड]]'' या ''टेक्स्ट सेगमेंट'' के रूप में जाना जाता है);
**प्प्रोग्राम का अपना कोड (ऐतिहासिक रूप से कोड सेगमेंट या टेक्स्ट सेगमेंट के रूप में जाना जाता है);
** [[ साझा पुस्तकालय | साझा लाइब्रेरी]]
** [[ साझा पुस्तकालय |शेयर्ड लाइब्रेरी]]  
*डेटा, जिसमें शामिल है
*डेटा, जिसमें शामिल है
**आरंभिक डेटा [[ डेटा खंड |डेटा खंड]];
**आरंभीकृत डेटा (डेटा सेगमेंट);
** अप्रारंभीकृत लेकिन आवंटित चर;
** अप्रारंभीकृत लेकिन आवंटित चर;
** [[ रन-टाइम स्टैक | रन-टाइम स्टैक]] ;
** [[ रन-टाइम स्टैक | रन-टाइम स्टैक]] ;
** [[ ढेर (प्रोग्रामिंग) | हीप]];
** [[ ढेर (प्रोग्रामिंग) | हीप]];
** साझा मेमोरी और [[ मेमोरी मैप की गई फ़ाइल |मेमोरी मैप की गई फ़ाइल]]।
** शेयर्ड मेमोरी और मेमोरी-मैप्ड फ़ाइलें।
एड्रेस लोकेशन के कुछ हिस्सों को बिल्कुल भी मैप नहीं किया जा सकता है।
हो सकता है कि एड्रेस लोकेशन के कुछ भागों को बिल्कुल भी मैप किया गया हो।


कुछ सिस्टम में "स्प्लिट" [[ स्मृति वास्तुकला | मेमोरी आर्किटेक्चर]] होता है जहां मशीन कोड, स्थिरांक और डेटा अलग-अलग स्थानों पर होते हैं, और अलग-अलग लोकेशन के आकार हो सकते हैं। उदाहरण के लिए, [[ PIC18 |PIC18]] माइक्रोकंट्रोलर्स के पास फ्लैश मेमोरी में मशीन कोड और स्थिरांक को संबोधित करने के लिए 21-बिट प्रोग्राम काउंटर और SRAM में डेटा को संबोधित करने के लिए 12-बिट एड्रेस रजिस्टर हैं।
कुछ प्रणालियों में एक "स्प्लिट" [[ स्मृति वास्तुकला |मेमोरी आर्किटेक्चर]] होता है जहां मशीन कोड, स्थिरांक और डेटा अलग-अलग स्थानों पर होते हैं, और अलग-अलग पते के आकार हो सकते हैं। उदाहरण के लिए, [[ PIC18 |पीआईसी 18]] माइक्रोकंट्रोलर्स के पास फ्लैश मेमोरी में मशीन कोड और स्थिरांक को संबोधित करने के लिए 21-बिट प्रोग्राम काउंटर हैं, और एसआरएएम में डेटा को संबोधित करने के लिए 12-बिट एड्रेस रजिस्टर हैं।


== योजनाओं को संबोधित करना ==
== एड्रेसिंग स्कीम ==
{{main|Addressing mode}}
{{main|एड्रेसिंग मोड}}
एक कंप्यूटर प्रोग्राम स्पष्ट रूप से दिए गए एड्रेस तक पहुंच सकता है - निम्न-स्तरीय प्रोग्रामिंग में इसे आमतौर पर अब्सोलुटे एड्रेस, या कभी-कभी एक विशिष्ट एड्रेस कहा जाता है, और इसे उच्च-स्तरीय भाषाओं में पॉइंटर-कंप्यूटर प्रोग्रामिंग डेटा प्रकार के रूप में जाना जाता है। लेकिन एक प्रोग्राम सापेक्ष एड्रेस का भी उपयोग कर सकता है जो कहीं और ''[[ आधार पता |आधार]]'' एड्रेस के संबंध में एक स्थान निर्दिष्ट करता है जिसमे और भी कई अप्रत्यक्ष [[ एड्रेसिंग मोड |एड्रेसिंग मोड]] होते हैं।
एक कंप्यूटर प्रोग्राम स्पष्ट रूप से दिए गए एड्रेस तक पहुंच सकता है - निम्न-स्तरीय प्रोग्रामिंग में इसे आमतौर पर अब्सोलुटे एड्रेस, या कभी-कभी एक विशिष्ट एड्रेस कहा जाता है, और इसे उच्च-स्तरीय भाषाओं में पॉइंटर-कंप्यूटर प्रोग्रामिंग डेटा प्रकार के रूप में जाना जाता है। लेकिन एक प्रोग्राम सापेक्ष एड्रेस का भी उपयोग कर सकता है जो कहीं और ''[[ आधार पता |बेस एड्रेस]]'' के संबंध में एक स्थान निर्दिष्ट करता है जिसमे और भी कई अप्रत्यक्ष [[ एड्रेसिंग मोड |एड्रेसिंग मोड]] होते हैं।


भौतिक और आभासी मेमोरी में तार्किक पतों का मानचित्रण भी अप्रत्यक्ष के कई स्तरों को जोड़ता है; नीचे देखें।
फिजिकल और लॉजिकल मेमोरी में लॉजिकल एड्रेस मैपिंग भी संकेत के कई स्तरों को जोड़ती है; नीचे देखें।


==मेमोरी मॉडल==
==मेमोरी मॉडल==
कई प्रोग्रामर मेमोरी को इस तरह संबोधित करना पसंद करते हैं कि कोड स्पेस और डेटा स्पेस के साथ-साथ भौतिक और वर्चुअल मेमोरी के बीच कोई अंतर नहीं हो - दूसरे शब्दों में, संख्यात्मक रूप से समान पॉइंटर्स रैम के ठीक उसी बाइट को संदर्भित करते हैं।
कई प्रोग्रामर मेमोरी को इस तरह संबोधित करना पसंद करते हैं कि कोड स्पेस और डेटा स्पेस के साथ-साथ भौतिक और वर्चुअल मेमोरी के बीच कोई अंतर नहीं हो - दूसरे शब्दों में, संख्यात्मक रूप से समान पॉइंटर्स रैम के ठीक उसी बाइट को संदर्भित करते हैं।


हालांकि, कई शुरुआती कंप्यूटर ऐसे फ्लैट मेमोरी मॉडल का समर्थन नहीं करते थे - विशेष रूप से, [[ हार्वर्ड वास्तुकला |हार्वर्ड आर्किटेक्चर]] मशीन प्रोग्राम स्टोरेज को डेटा स्टोरेज से पूरी तरह से अलग करने के लिए मजबूर करती है। कई आधुनिक [[ डिजिटल सिग्नल प्रोसेसर |डिजिटल सिग्नल प्रोसेसर]] जैसे [[ मोटोरोला 56000 | मोटोरोला 56000]] में तीन अलग-अलग स्टोरेज क्षेत्र होते हैं - प्रोग्राम स्टोरेज, गुणांक स्टोरेज और डेटा स्टोरेज। कुछ सामान्य रूप से उपयोग किए जाने वाले निर्देश तीनों क्षेत्रों से एक साथ प्राप्त होते हैं - कम स्टोरेज क्षेत्र (भले ही भंडारण के कुल बाइट्स समान हों) उन निर्देशों को धीमा कर देंगे।
हालांकि, कई शुरुआती कंप्यूटर ऐसे फ्लैट मेमोरी मॉडल का समर्थन नहीं करते थे - विशेष रूप से, [[ हार्वर्ड वास्तुकला |हार्वर्ड आर्किटेक्चर]] मशीन प्रोग्राम स्टोरेज को डेटा स्टोरेज से पूरी तरह से अलग करने के लिए मजबूर करती है। कई आधुनिक [[ डिजिटल सिग्नल प्रोसेसर |डिजिटल सिग्नल प्रोसेसर]] जैसे [[ मोटोरोला 56000 |मोटोरोला 56000]] में तीन अलग-अलग स्टोरेज क्षेत्र होते हैं - प्रोग्राम स्टोरेज, गुणांक स्टोरेज और डेटा स्टोरेज। कुछ सामान्य रूप से उपयोग किए जाने वाले निर्देश तीनों क्षेत्रों से एक साथ प्राप्त होते हैं - कम स्टोरेज क्षेत्र (भले ही भंडारण के कुल बाइट्स समान हों) उन निर्देशों को धीमा कर देंगे।


=== x86 आर्किटेक्चर में मेमोरी मॉडल ===
=== x86 आर्किटेक्चर में मेमोरी मॉडल ===
{{main|Intel Memory Model}}
{{main|इंटेल मेमोरी मॉडल}}
प्रारंभिक x86 कंप्यूटर दो संख्याओं के संयोजन के आधार पर [[ स्मृति विभाजन |मेमोरी विभाजन]] एड्रेस का उपयोग करते थे: एक[[ x86 मेमोरी सेगमेंटेशन ]], और दूसरा उस सेगमेंट के भीतर एक ऑफ़सेट।
प्रारंभिक x86 कंप्यूटर दो संख्याओं के संयोजन के आधार पर [[ स्मृति विभाजन |मेमोरी विभाजन]] एड्रेस का उपयोग करते थे: एक[[ x86 मेमोरी सेगमेंटेशन | x86 मेमोरी सेगमेंटेशन]], और दूसरा उस सेगमेंट के भीतर एक ऑफ़सेट।
 
कुछ खंडों को परोक्ष रूप से कोड खंडों के रूप में माना जाता है, जो निर्देश कंप्यूटर विज्ञान, [[ कॉल स्टैक |स्टैक]] सेगमेंट, या सामान्य डेटा सेगमेंट के लिए समर्पित हैं। हालांकि उपयोग अलग-अलग हैं, खंडों में अलग-अलग [[ स्मृति सुरक्षा |मेमोरी  सुरक्षा]] नहीं हैं जो इसे दर्शाती हैं।[[ फ्लैट मेमोरी मॉडल ]] में सभी सेगमेंट रजिस्टर आम तौर पर शून्य पर सेट होते हैं, और केवल ऑफ़सेट चर होते हैं।
{{see also|Long mode}}


कुछ सेमेन्ट्स को निहित रूप से कोड सेग्मेंट्स के रूप में माना जाता है, जो निर्देशों, [[ कॉल स्टैक |स्टैक]] सेग्मेंट्स  या सामान्य डेटा सेग्मेंट्स के लिए समर्पित होते हैं। हालाँकि उपयोग अलग-अलग हैं, लेकिन सेगमेंट में अलग-अलग  [[ स्मृति सुरक्षा |मेमोरी]] प्रोटेक्शन नहीं हैं जो इसे दर्शाते हैं। [[ फ्लैट मेमोरी मॉडल | फ्लैट मेमोरी मॉडल]] में, सभी सेगमेंट (सेगमेंट रजिस्टर) आम तौर पर शून्य पर सेट होते हैं, और केवल ऑफसेट वेरिएबल होते हैं।


{{see also|लॉन्ग मोड }}
==यह भी देखें==
==यह भी देखें==
*आधार एड्रेस
*बेस एड्रेस  
*[[ endianness |इंडियननेस]]
*[[ endianness |इंडियननेस]]
*[[ निम्न-स्तरीय प्रोग्रामिंग भाषा |निम्न-स्तरीय प्रोग्रामिंग भाषा]]
*[[ निम्न-स्तरीय प्रोग्रामिंग भाषा |निम्न-स्तरीय प्रोग्रामिंग भाषा]]
Line 90: Line 89:
{{Data types}}
{{Data types}}


 
[[Category:All articles needing additional references]]
 
[[Category:All articles with unsourced statements]]
==
[[Category:Articles needing additional references from February 2018]]
[[Category:Articles with hatnote templates targeting a nonexistent page]]
[[Category:Articles with invalid date parameter in template]]
[[Category:Articles with short description]]
[[Category:Articles with unsourced statements from October 2011]]
[[Category:Collapse templates]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Wikipedia metatemplates]]

Latest revision as of 11:46, 4 September 2023

अप्रत्यक्ष मेमोरी का उपयोग करने वाले कंप्यूटर में, मेमोरी एड्रेस के अनुरूप लोकेशन तक पहुँचने में कई स्तर शामिल हो सकते हैं।

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

प्रकार

फिजिकल एड्रेस

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

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

लॉजिकल एड्रेस

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

एड्रेस रेजोल्यूशन की इकाई

अधिकांश आधुनिक कम्प्यूटर बाइट -एड्रेसेबल होते हैं। प्रत्येक एड्रेस एक बाइट (8 बिट) स्टोरेज की पहचान करता है। एक बाइट से बड़े डेटा को लगातार एड्रेस के क्रम में संग्रहीत किया जा सकता है। वर्ड -एड्रेसेबल कंप्यूटर मौजूद हैं, जहां न्यूनतम एड्रेसेबल स्टोरेज यूनिट प्रोसेसर का शब्द है। उदाहरण के लिए, डेटा जनरल नोवा मिनीकंप्यूटर, टेक्सास इंस्ट्रूमेंट्स टीएमएस 9900 और नेशनल सेमीकंडक्टर आईऍमपी-16 माइक्रो कंप्यूटर 16-बिट शब्दों का उपयोग करते हैं, और कई 36-बिट मेनफ्रेम कंप्यूटर (जैसे, पीडीपी-10 थे, जो 18-बिट शब्द एड्रेसिंग का उपयोग करते थे बाइट एड्रेसिंग नहीं, 218 36-बिट शब्दों का एड्रेस लोकेशन, लगभग 1 मेगाबाइट स्टोरेज। मेमोरी को संबोधित करने की दक्षता पतों के लिए उपयोग की जाने वाली बस के बिट आकार पर निर्भर करती है - जितने अधिक बिट का उपयोग किया जाता है, उतने ही अधिक एड्रेस कंप्यूटर के लिए उपलब्ध होते हैं। उदाहरण के लिए, एक 20-बिट एड्रेस बस (जैसे इंटेल 8086) के साथ एक 8-बिट-बाइट-एड्रेसेबल मशीन 220 (1,048,576) मेमोरी लोकेशन, या एक एमबी मेमोरी को संबोधित कर सकती है, जबकि एक 32-बिट बस (जैसे इंटेल 80386) 232 (4,294,967,296) स्थानों या एक 4 जीबी पता स्थान को संबोधित करता है। इसके विपरीत, एक 18-बिट एड्रेस बस के साथ एक 36-बिट वर्ड-एड्रेसेबल मशीन केवल 218 (262,144) 36-बिट स्थानों (9,437,184 बिट्स) को संबोधित करती है, जो 1,179,648 8-बिट बाइट्स, या 1152 केबी, या 1.125 एमबी के बराबर है - थोड़ा 8086 से अधिक।

कुछ पुराने कंप्यूटर (डेसीमल कंप्यूटर) डेसीमल डिजिट-एड्रेसेबल योग्य थे। उदाहरण के लिए, आईबीएम 1620 की चुंबकीय-कोर मेमोरी में प्रत्येक पता 6 -बिट बाइनरी-कोडेड डेसीमल अंक द्वारा पहचाना जाता है, जिसमें पैरिटी बिट, फ्लैग बिट, और चार संख्यात्मक बिट्स शामिल हैं। 1620 के दशक में 5 अंकों के डेसीमल एड्रेस का उपयोग किया गया था, इसलिए सिद्धांत रूप में, उच्चतम संभव पता 99,999 था। व्यवहार में, सीपीयू ने 20,000 मेमोरी स्थानों का समर्थन किया, और कुल 60,000 (00000-59999) के लिए दो वैकल्पिक बाहरी मेमोरी इकाइयां जोड़ी गईं, जिनमें से प्रत्येक 20,000 एड्रेस का समर्थन करती थी।

वर्ड साइज बनाम एड्रेस साइज

वर्ड साइज कंप्यूटर आर्किटेक्चर की एक विशेषता है जो बिट्स की संख्या का प्रतिनिधित्व करता है जिसे एक सीपीयू एक समय में प्रोसेस कर सकता है। आधुनिक प्रोसेसर, एम्बेडेड सिस्टम सहित, आमतौर पर 8, 16, 24, 32, या 64 बिट्स का शब्द आकार होता है; अधिकांश वर्तमान सामान्य-उद्देश्य वाले कंप्यूटर या तो 32 या 64 बिट्स का उपयोग करते हैं। 8, 9, 10, 12, 18, 24, 36, 39, 40, 48, और 60 बिट्स सहित कई अलग-अलग बिट आकारों का ऐतिहासिक रूप से उपयोग किया गया है।

बहुत बार, आधुनिक कंप्यूटर के वर्ड साइज का जिक्र करते समय, उस कंप्यूटर पर पता स्थान के आकार का भी वर्णन किया जाता है। उदाहरण के लिए, "32-बिट" लेबल वाला कंप्यूटर आमतौर पर 32-बिट मेमोरी एड्रेस की अनुमति देता है; एक बाइट-एड्रेसेबल 32-बिट कंप्यूटर 232 = 4,294,967,296 बाइट्स मेमोरी, या 4 बाईट्स (जीबी) को एड्रेस कर सकता है। यह एक मेमोरी एड्रेस को एक शब्द में कुशलतापूर्वक संग्रहित करने की अनुमति देता है।

हालांकि, यह हमेशा सच नहीं है। कंप्यूटर मेमोरी एड्रेस उनके वर्ड साइज से बड़ा या छोटा हो सकता है। उदाहरण के लिए, कई 8 बिट प्रोसेसर, जैसे एमओएस टेक्नोलॉजी 6502, 16-बिट एड्रेस का समर्थन करते हैं - यदि वे नहीं करते हैं, तो वे मेमोरी एड्रेसिंग के केवल 256 बाइट्स तक ही सीमित रहेंगे। 16-बिट इंटेल 8088 और इंटेल 8086 ने डिवीजन के माध्यम से 20-बिट एड्रेसिंग का समर्थन किया, जिससे उन्हें 64 केबी मेमोरी के बजाय 1 एमबी  का उपयोग करने की अनुमति मिली। पेंटियम प्रो के बाद से सभी इंटेल पेंटियम प्रोसेसर में फिजिकल एड्रेस एक्सटेंशन (पीएई) सम्मिलित हैं जो 36-बिट फिजिकल एड्रेस को 32-बिट वर्चुअल एड्रेस पर मैप करने का समर्थन करते हैं। कई शुरुआती प्रोसेसर में प्रति वर्ड 2 एड्रेस होते थे, जैसे कि 36-बिट प्रोसेसर।

सिद्धांत रूप में, आधुनिक बाइट-एड्रेसेबल 64-बिट कंप्यूटर 264 बाइट्स (16 एक्साबाइट्स) को संबोधित कर सकते हैं, लेकिन व्यवहार में, मेमोरी की मात्रा सीपीयू, मेमोरी कंट्रोलर या मुद्रित परिपथ बोर्ड डिज़ाइन (जैसे, फिजिकल मेमोरी की संख्या) द्वारा सीमित होती है) है। कनेक्टर्स या सोल्डर-ऑन मेमोरी की मात्रा)।

प्रत्येक मेमोरी लोकेशन की विषय-सूची

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

कुछ शुरुआती प्रोग्रामर ने मेमोरी को बचाने के तरीके के रूप में निर्देशों और डेटा को संयुक्त किया जब यह महंगा था: मैनचेस्टर मार्क 1 में 40-बिट शब्दों में डेटा के छोटे टुकड़ों को स्टोर करने के लिए जगह थी - इसके प्रोसेसर के बीच में एक ही ब्लॉक था। छोटे हिस्से ने एक शब्द पर ध्यान नहीं दिया - और इसे अक्सर अतिरिक्त डेटा संग्रहण के रूप में उपयोग किया जाता था।[citation needed] स्व-प्रतिकृति कार्यक्रम जैसे वायरस स्वयं को कभी-कभी डेटा के रूप में और कभी-कभी निर्देशों के रूप में मानते हैं। स्व-संशोधित कोड को आजकल आम तौर पर पदावनत किया जाता है, क्योंकि यह कुछ बाइट्स को बचाने के लिए असंगत रूप से कठिन परीक्षण और रखरखाव करता है, और मशीन की स्थिति के बारे में संकलक या प्रोसेसर की धारणाओं के कारण गलत परिणाम भी दे सकता है। लेकिन अभी भी कभी-कभी जानबूझकर, बहुत सावधानी से उपयोग किया जाता है।

एप्लिकेशन प्रोग्रामिंग में एड्रेस स्पेस

आधुनिक कंप्यूटर मल्टीटास्किंग वातावरण में, एक एप्लिकेशन प्रोग्राम में आमतौर पर इसके एड्रेस स्पेस में निम्न प्रकार की मेमोरी होती है:

  • मशीन कोड, सहित:
    • प्प्रोग्राम का अपना कोड (ऐतिहासिक रूप से कोड सेगमेंट या टेक्स्ट सेगमेंट के रूप में जाना जाता है);
    • शेयर्ड लाइब्रेरी
  • डेटा, जिसमें शामिल है
    • आरंभीकृत डेटा (डेटा सेगमेंट);
    • अप्रारंभीकृत लेकिन आवंटित चर;
    • रन-टाइम स्टैक ;
    • हीप;
    • शेयर्ड मेमोरी और मेमोरी-मैप्ड फ़ाइलें।

हो सकता है कि एड्रेस लोकेशन के कुछ भागों को बिल्कुल भी मैप न किया गया हो।

कुछ प्रणालियों में एक "स्प्लिट" मेमोरी आर्किटेक्चर होता है जहां मशीन कोड, स्थिरांक और डेटा अलग-अलग स्थानों पर होते हैं, और अलग-अलग पते के आकार हो सकते हैं। उदाहरण के लिए, पीआईसी 18 माइक्रोकंट्रोलर्स के पास फ्लैश मेमोरी में मशीन कोड और स्थिरांक को संबोधित करने के लिए 21-बिट प्रोग्राम काउंटर हैं, और एसआरएएम में डेटा को संबोधित करने के लिए 12-बिट एड्रेस रजिस्टर हैं।

एड्रेसिंग स्कीम

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

फिजिकल और लॉजिकल मेमोरी में लॉजिकल एड्रेस मैपिंग भी संकेत के कई स्तरों को जोड़ती है; नीचे देखें।

मेमोरी मॉडल

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

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

x86 आर्किटेक्चर में मेमोरी मॉडल

प्रारंभिक x86 कंप्यूटर दो संख्याओं के संयोजन के आधार पर मेमोरी विभाजन एड्रेस का उपयोग करते थे: एक x86 मेमोरी सेगमेंटेशन, और दूसरा उस सेगमेंट के भीतर एक ऑफ़सेट।

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

यह भी देखें

  • मेमोरी एड्रेस रजिस्टर

संदर्भ