मेमोरी एड्रेस

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

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

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

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

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

वर्ड साइज बनाम एड्रेस साइज
वर्ड (कंप्यूटर आर्किटेक्चर) आकार कंप्यूटर आर्किटेक्चर की एक विशेषता है जो एक समय में सीपीयू द्वारा प्रोसेस किए जा सकने वाले बिट्स की संख्या को दर्शाता है। अंतः स्थापित प्रणालियाँ सहित आधुनिक प्रोसेसर में आमतौर पर 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 मेबी बाइट तक पहुंचने की अनुमति मिली। पेंटियम प्रो के बाद से सभी इंटेल पेंटियम ब्रांड प्रोसेसर में भौतिक एड्रेस एक्सटेंशन (पीएई) शामिल हैं जो 32-बिट आभासी एड्रेस के लिए 36-बिट भौतिक एड्रेस की मैपिंग का समर्थन करते हैं। कई शुरुआती प्रोसेसर में प्रति वर्ड 2 एड्रेस होते थे, जैसे कि 36-बिट प्रोसेसर।

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

 * आधार एड्रेस
 * इंडियननेस
 * निम्न-स्तरीय प्रोग्रामिंग भाषा


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


 * मेमोरी आवंटन
 * मेमोरी प्रबंधन इकाई-एमएमयू
 * मेमोरी मॉडल-प्रोग्रामिंग
 * मेमोरी सुरक्षा
 * मेमोरी विभाजन
 * ऑफ़सेट (कंप्यूटर विज्ञान), जिसे विस्थापन के रूप में भी जाना जाता है
 * पेज टेबल

संदर्भ
==