16, 32 और 64 बिट सिस्टम में मेमोरी की सीमा


17

16, 32 और 64 बिट मशीनों में सैद्धांतिक स्मृति सीमाएँ निम्नानुसार हैं:

  • 16 बिट = 65,536 बाइट्स (64 किलोबाइट)

  • 32 बिट = 4,294,967,296 बाइट्स (4 गीगाबाइट)

  • 64 बिट = 18,446,744,073,709,551,616 (16 एक्साबाइट्स)

मुझे डॉस / विंडोज 3.11 दिनों से याद है, कि 16 बिट मेमोरी को सेगमेंट में अलग किया जा सकता है, ताकि 16 बिट मशीन 64 किलोबाइट से अधिक मात्रा में मेमोरी तक पहुंच सके।

मेरे पास 16GB मेमोरी के साथ एक मशीन है, और 32 बिट ऑपरेटिंग सिस्टम और 64 बिट ऑपरेटिंग सिस्टम के साथ दोहरी बूटिंग हूँ। मैं 64 बिट से सभी 16 जीबी का उपयोग कर सकता हूं, लेकिन 32 बिट में केवल 3.21 जीबी।

तो, मेरा सवाल है, अगर 16bit ऑपरेटिंग सिस्टम ने अधिक से अधिक अनुमति दी कि मेमोरी सेगमेंटिंग के कारण 64KB मेमोरी एक्सेस है, तो 32bit मशीनें समान pricipal का पालन क्यों नहीं करती हैं?

जवाबों:


15

वे करते हैं, सिस्टम को भौतिक पता एक्सटेंशन (पीएई) कहा जाता है । यहाँ विंडोज़ OS'es और उनकी अधिकतम मेमोरी की सूची दी गई है , कोई भी 32 बिट सिस्टम जो 4GB से अधिक रैम की अनुमति देता है मेमोरी को एक्सेस करने के लिए PAE का उपयोग कर रहा है (उदाहरण के लिए Windows 2003 R2 Datacenter 32 बिट 128GB RAM की अनुमति देता है)।


वास्तव में विंडोज 8 की आवश्यकता है यह एक पीएई सक्षम सीपीयू न्यूनतम आवश्यकताओं


अपने 32 बिट ओएस पर राम के अभिगम के सवाल को संबोधित करने के लिए यदि यह मौजूद है तो राम तक नहीं पहुँच सकते: लाइसेंस। वे अपने 32-बिट OSes के लिए RAM को 4GB से ऊपर नहीं होने देने का विकल्प चुनते हैं जब तक कि आप डेटा-सेंटर संस्करण के लिए भुगतान नहीं करते हैं (यही कारण है कि वे डेटा-सेंटर संस्करण बेचते हैं, यदि आपको उस राम की ज़रूरत है , तो आप अधिक खर्च करने की जोखिम उठा सकते हैं। एक ओएस पर पैसा)।


आह मैंने पहले भी पीएई के बारे में सुना है लेकिन इसकी जांच कभी नहीं की। यह काफी हद तक सर्वर आर्किटेक्चर में उपयोग किया गया प्रतीत होता है, इसलिए विंडोज 7 32 बिट इंस्टॉलेशन पर लागू नहीं होता है, क्योंकि यह सूची निर्दिष्ट करती है कि W7x86 केवल 4GB तक की अनुमति देता है
मैथ्यू लेटन

1
@ 0xC0000022L निष्पक्ष होने के लिए, मैंने उसकी टिप्पणी के बाद लाइसेंस भाग को एक संपादन के रूप में जोड़ा, लेकिन 4 मिनट की संपादन विंडो के कारण ऐसा लगता है कि मैंने टिप्पणी पोस्ट करने से पहले उसे पोस्ट किया था।
स्कॉट चैंबरलेन

1
पीएई को काम करने के लिए पेज टेबल स्विचरू की आवश्यकता होती है, और यह प्रदर्शन के मामले में महंगा है।
वॉनब्रांड

3
एक मिथक है। PAE के कारण ओवरहेड छोटा है। और यदि आप पीएई को नापसंद करते हैं तो आपको वास्तव में x64 से घृणा करनी चाहिए, क्योंकि x64 पर पृष्ठ तालिका संरचना पीएई की तरह ही दिखती है, पीएक्सई में पीएफएन के लिए शीर्ष और अधिक बिट्स पर अभी तक एक और तालिका स्तर जोड़ा गया है।
जेमी हनराहन

1
पीएई को "विंडोज 7 में नहीं हटाया गया क्योंकि इसकी अब आवश्यकता नहीं है", यह अभी भी विंडोज 7 x86 में मौजूद है - यह केवल डिफ़ॉल्ट रूप से विकल्प के रूप में होने के बजाय है।
जेमी हैन्रान

13

खुद को समझाने के बजाय, मैं किसी को पीएई समर्थन के साथ कर्नेल को बनाए रखना चाहूंगा जो अपने आकर्षक तरीकों से बोलता है, लिनस टॉर्वाडल्स

यह भी ध्यान रखें कि विंडोज 32 बिट संस्करणों में पीएई समर्थन बहुत अधिक नकदी के लिए आता है। XP सामान्य रूप से पूर्ण 4 GiB RAM का उपयोग करने में सक्षम नहीं होगा, क्योंकि MS ने इस पर PAE सुविधाओं को सक्षम नहीं करने का विकल्प चुना है। एक कर्नेल जो बारीकी से संबंधित है, विंडोज 2003 सर्वर, पीएई का समर्थन करता है। हालांकि, यहां तक ​​कि आपका "मानक संस्करण" केवल 4 GiB (लेकिन BIOS मेमोरी होल के आसपास काम करने) तक समर्थन करेगा, जबकि अधिक महंगा संस्करण तब 64 GiB तक रैम की अनुमति देगा। वही 32-बिट विस्टा के लिए है

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


बस एक साइड-नोट: वर्तमान x86- आधारित 64 बिट प्रोसेसर में से कोई भी 64 बिट पता स्थान की पूरी श्रृंखला को भौतिक रूप से संबोधित नहीं कर सकता (संदर्भ के लिए यह प्रश्न और उत्तर देखें)।


हम्म, मुझे ऐसा आभास क्यों हुआ कि लिनुस को वास्तव में हाईमैक्स.एसवाई और पीएई से नफरत है? : पी
करण

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

लिनुस की टिप्पणियाँ अजीब हैं। इसका कोई संबंध नहीं है कि heem.sys कैसे काम करता है और PAE कैसे काम करता है। यह x64 के लिए लोगों को बहस करने और PAE संबोधन के खिलाफ देखने के लिए बहुत मनोरंजक है ... जब x64 लंबी मोड बस PAE योजना लेता है और पृष्ठ तालिका का एक और स्तर जोड़ता है!
जेमी हनराहन

@JamieHanrahan: ... कम से कम दो नए सिस्टम पर (वर्चुअलाइजेशन के कारण), जो कुछ रोमांचक संभावनाओं को खोलता है। उनकी (लिनुस) तुलना पूरी तरह से सही नहीं है, लेकिन अगर यह एक विदेशी अवधारणा है, तो रूपक मदद कर सकते हैं :) ... मुझे लगता है कि इसीलिए उन्होंने इसे अपनी बात बनाने के लिए चुना था।
0xC0000022L

2

8-बिट सीपीयू में आमतौर पर 16-बिट एड्रेस बस होती थी। (मोटोरोला के पास एक यूनिफाइड एड्रेस बस, रैम और पेरीफेरल I / O एक ही एड्रेस स्पेस था, इंटेल ने दोनों को विभाजित करने के लिए चुना। इंटेल के मामले में, 8088 और 8086 के IO एड्रेस लिमिट ने 8080 से अधिक की सीमा को पार कर लिया। 8085 सीपीयू।)

इंटेल के 8088 और 8086 में 20-बिट मेमोरी एड्रेस बस (1 एमबी) थी, जबकि मोटोरोला की 68000 में 24-बिट एड्रेस बस (16 एमबी) थी। IIRC, [80] 286 एक 24-बिट एड्रेस बस में कूद गया। दोनों ने बाद में [80] 386 और क्रमशः 68020 के साथ एक 32-बिट पता बस का विस्तार किया।) पेंटियम चिप्स के साथ, पता बस 64-बिट तक विस्तारित हुई। (मुझे लगता है कि मोटोरोला / आईबीएम वेंचर पॉवरपीसी चिप्स 64-बिट एड्रेस बस भी गई थी।)

सीपीयू द्वारा सीधे उपलब्ध अधिकतम तक नीचे और ऊपर उपलब्ध मेमोरी केवल सहायक हार्डवेयर चिप्स (चिपसेट) और ओएस द्वारा सीमित थी। बिल गेट्स अतीत में यह कहते हुए प्रसिद्ध थे कि किसी को 640K RAM से अधिक की आवश्यकता नहीं होती है, इस प्रकार DOS कभी भी अधिक RAM तक सीधे पहुंचने के लिए विकसित नहीं हुआ। HiMem.sys और EMM386 के साथ, DOS को अधिक "ऊपरी" मेमोरी तक पहुंचने के लिए विस्तारित किया गया था, जिसके साथ EMM386 का उपयोग सीधे सभी उपलब्ध रैम तक पहुंचने के लिए किया गया था। HiMem.sys में लचीलापन कम था और मूल रूप से भंडारण के लिए अतिरिक्त रैम का उपयोग कर सकता था।

मेमोरी को खंडों में तोड़ने के लिए और CPU के पता योग्य मेमोरी स्पेस में मैप करने के लिए उस सीमा से अधिक की आवश्यकता होती है जो MMU (मेमोरी मैनेजमेंट यूनिट) की आवश्यकता होती है। यह कैसे CoCo 3, कमोडोर 128, और अन्य 8-बिट कंप्यूटर 64K RAM से अधिक का उपयोग कर सकता है।

अधिक अनुकूल अब OS द्वारा लगाई गई सीमाओं के साथ, पिछली भौतिक मेमोरी सीमाओं का विस्तार करने के लिए वर्चुअल मेमोरी का उपयोग करना है।


1

क्योंकि ऐसा करने का कोई व्यावहारिक कारण नहीं है। भौतिक पता एक्सटेंशन बहुत समान कार्यक्षमता की अनुमति देते हैं और उनका उपयोग अभी भी उपयोगकर्ताओं के बीच बहुत सीमित है। विंडोज 3.1 दिनों में ऐसी अड़चनें थीं जो आज नहीं हैं।


1
यह वास्तव में आपके बयानों का बैकअप लेने के लिए पर्याप्त जानकारी नहीं है। विंडोज 3.1 एक 16-बिट ऑपरेटिंग सिस्टम है। यह याद रखना चाहिए कि 1992 में 2MB मेमोरी 300 डॉलर से अधिक थी।
रामहुंड

आप 22 फरवरी की टिप्पणी कर रहे हैं, और स्कॉट चैम्बरलिन का स्पष्टीकरण बहुत ज्यादा कवर करता है जो मैं चला रहा था। वे इस बात का विवरण छोड़ देते हैं कि DOS / Win16 में एक्स्टेंसिबल सेग्मेंटेड पेजिनेशन का उपयोग क्यों किया गया था, लेकिन बाद के विंडोज में नहीं। मैंने इसे शामिल नहीं किया, क्योंकि यह ओपी के प्रश्न का उत्तर देने में सीधे योगदान नहीं करेगा।
OCDtech

इसका मेरा विचार है कि उत्तर अकेले खड़े होने चाहिए। आपकी टिप्पणी आपके जवाब के साथ मेरी समस्याओं को हल करने के लिए पर्याप्त जानकारी जोड़ती है।
रामहाउंड

1
@ ओसीडीटेक: 8086 खंडित मॉडल ऑब्जेक्ट-ओरिएंटेड भाषा को 16-बाइट सीमाओं पर संरेखित वस्तुओं की पहचान करने के लिए 2-बाइट ऑब्जेक्ट संदर्भ का उपयोग करने की अनुमति देगा, लेकिन प्रभावी ढंग से सेगमेंट का उपयोग करने के लिए भाषाएं अच्छी तरह से सुसज्जित नहीं थीं। 80286 मॉडल इस तरह के कार्यक्रमों में राक्षसी रूप से अधिक ओवरहेड लगाता है, और 80386 पर इसे जिस तरह से बढ़ाया गया था वह एक खंड-प्रति-वस्तु योजना को पूरी तरह से बेकार कर देगा।
सुपरकैट

0

16, 32 और 64 बिट मशीनों में सैद्धांतिक स्मृति सीमाएँ निम्नानुसार हैं ...

यहां मूलभूत दोष यह है कि प्रोसेसर की "बिट चौड़ाई", जो आमतौर पर मशीन के सामान्य-उद्देश्य रजिस्टरों के आकार की होती है, आवश्यक रूप से रैम पतों की चौड़ाई के समान होती है।

X86 में पेजिंग सक्षम होने के साथ, लेकिन पीएई के बिना, जो प्रोग्राम और ओएस कोड का उपयोग करते हैं, उन्हें इंटेल द्वारा "रैखिक पते" कहा जाता है - हम आमतौर पर उन्हें "वर्चुअल पते" कहते हैं। वे 32 बिट्स चौड़े हैं। यह 4 GiB वर्चुअल एड्रेस स्पेस की अनुमति देता है।

लेकिन यह कम या ज्यादा संयोग है, पृष्ठ तालिका प्रविष्टियों के प्रारूप की केवल एक कलाकृति है कि एक भौतिक (रैम) पते का आकार भी 32 बिट्स है।

पीएई के साथ उत्तरार्द्ध 36 बिट्स है (पहले ... बाद के कार्यान्वयन में व्यापक)। इसलिए, सिर्फ इसलिए कि उदाहरण के लिए, "32 बिट मशीन" का मतलब यह नहीं है कि भौतिक मेमोरी पते 32 बिट्स तक सीमित हैं।

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

एड्रेस ट्रांसलेशन हार्डवेयर के बिना भी, यह जरूरी नहीं है कि मशीन की "बिट चौड़ाई" अधिकतम रैम पते को परिभाषित करती है। उदाहरण: सीडीसी "ऊपरी 3000" श्रृंखला 36-बिट मशीनें थीं। क्या आपको लगता है कि वे 64 GiB RAM को संबोधित कर सकते हैं? मुश्किल से नहीं! वे मशीनें 60 के दशक के मध्य में सामने आईं! हेक, हम उन दिनों में 64 जीबी डिस्क स्थान भी नहीं कर सकते थे । (सीडीसी 6000 सीरीज़ 60-बिट मशीन थीं। क्या मुझे जाना चाहिए?)


और उन प्रणालियों के बारे में मत भूलना जो रैम-सेल प्रति 8-बिट का उपयोग नहीं करते हैं। (जैसे: 16/16 = 128K अधिकतम, 32/32 = 16 जी मैक्स, 32/64 = 32 G मैक्स)
Skycharger
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.