32-बिट एड्रेस स्पेस का मतलब है कि आपके पास 4GB एड्रेस के लिए स्पेस है। आदर्श रूप से कर्नेल सभी भौतिक मेमोरी, वर्तमान कार्य की सभी मेमोरी और अपनी स्वयं की मेमोरी को मैप करने में सक्षम होना पसंद करता है। यदि भौतिक मेमोरी अकेले सभी उपलब्ध 4GB को लेती है, तो यह काम नहीं करेगा। तो भौतिक मेमोरी को कम मेमोरी में विभाजित किया जाता है, जिसे हर समय मैप किया जाता है, और उच्च मेमोरी, जिसे उपयोग में होने पर मैप किया जाना चाहिए। जब तक आप ix86 आर्किटेक्चर पर एक पैच किए गए कर्नेल नहीं चला रहे हैं, पता स्थान का 128MB कर्नेल कोड और डेटा संरचनाओं के लिए समर्पित है, और 896MB भौतिक मेमोरी (कुल 1GB के लिए) को मैप करने के लिए समर्पित है।
स्मृति प्रबंधन की जटिलताओं पर पृष्ठभूमि पठन जब आपका पता स्थान आपकी कुल मेमोरी से आराम से बड़ा नहीं होता है:
आपके कर्नेल लॉग के अंश:
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cdce0000 (usable)
BIOS-e820: 00000000cdce0000 - 00000000cdce3000 (ACPI NVS)
BIOS-e820: 00000000cdce3000 - 00000000cdcf0000 (ACPI data)
BIOS-e820: 00000000cdcf0000 - 00000000cdd00000 (reserved)
BIOS-e820: 00000000d0000000 - 00000000e0000000 (reserved)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000130000000 (usable)
2404MB HIGHMEM available.
887MB LOWMEM available.
Zone PFN ranges:
DMA 0x00000000 -> 0x00001000
Normal 0x00001000 -> 0x000377fe
HighMem 0x000377fe -> 0x000cdce0
यहां आपके पास 887MB कम मेमोरी है: सैद्धांतिक अधिकतम 896MB माइनस कुछ MB डीएमए बफ़र्स (हार्डवेयर उपकरणों के साथ संचार करने के लिए उपयोग की जाने वाली मेमोरी के ज़ोन)।
आपकी भौतिक मेमोरी में से, 3328MB को 4GB से नीचे के पते पर मैप किया गया है और 768MB को 4GB (0x100000000-0x130000000 रेंज) से अधिक के पते पर मैप किया गया है। आप इन 768MB तक पहुँच प्राप्त नहीं कर रहे हैं, जो बताता है कि आपके पास केवल 3242MB उपलब्ध क्यों है (4096MB RAM माइनस 768MB दुर्गम माइनस 9MB DMA बफ़र्स माइनस 75MB की कर्नेल द्वारा कोड और डेटा के लिए उपयोग किया जाता है)। मुझे नहीं पता कि BIOS 4GB मार्क के ऊपर कुछ RAM को क्यों मैप करता है, लेकिन डेटा बिंदु के रूप में, मैं इसे 4GB RAM के साथ एक पीसी से पोस्ट कर रहा हूं कि इसी तरह 0x100000000-0x130000000 में RAM मैप किया गया है।
4GB से ऊपर की भौतिक मेमोरी को मैप करने के लिए PAE का उपयोग करना पड़ता है । पीएई एक छोटे प्रदर्शन ओवरहेड को सम्मिलित करता है (विशेष रूप से, यह मेमोरी मैनेजर में बड़ी डेटा संरचनाओं की आवश्यकता होती है), इसलिए यह व्यवस्थित रूप से सक्षम नहीं है। डिफ़ॉल्ट Ubuntu कर्नेल पीएई समर्थन के बिना संकलित है। -generic-pae
कर्नेल को 64GB रैम तक पहुंचने में सक्षम होने के लिए प्राप्त करें ।
TL, DR: लिनक्स अपेक्षित रूप से काम कर रहा है। फर्मवेयर इतना मददगार नहीं है। पीएई-सक्षम कर्नेल प्राप्त करें।