वे सीमाएं डेबियन या लिनक्स से नहीं आती हैं, वे हार्डवेयर से आती हैं। विभिन्न आर्किटेक्चर (प्रोसेसर और मेमोरी बस) की अलग-अलग सीमाएं हैं।
वर्तमान x86-64 पीसी प्रोसेसर पर, MMU 48 बिट वर्चुअल एड्रेस स्पेस की अनुमति देता है । इसका मतलब है कि पता स्थान 256TB तक सीमित है। उपयोगकर्ता के पते से कर्नेल पतों को अलग करने के लिए एक बिट के साथ, जो प्रक्रिया के पते के स्थान के लिए 128TB छोड़ देता है।
वर्तमान x86-64 प्रोसेसर पर, भौतिक पते 48 बिट तक का उपयोग कर सकते हैं , जिसका अर्थ है कि आप 256TB तक हो सकते हैं। यह सीमा उत्तरोत्तर बढ़ गई है क्योंकि amd64 वास्तुकला को पेश किया गया था (यदि मुझे सही ढंग से याद है तो 40 बिट्स से)। एड्रेस स्पेस के प्रत्येक बिट में कुछ वायरिंग और डिकोडिंग लॉजिक होता है (जो प्रोसेसर को अधिक महंगा, धीमा और गर्म बनाता है), इसलिए हार्डवेयर निर्माताओं के पास साइज को कम रखने के लिए एक प्रोत्साहन है।
लिनक्स केवल भौतिक पतों को 2 ^ 46 तक जाने की अनुमति देता है (इसलिए आप केवल 64TB तक का हो सकते हैं) क्योंकि यह भौतिक मेमोरी को पूरी तरह से कर्नेल स्थान में मैप करने की अनुमति देता है। याद रखें कि पता स्थान के 48 बिट्स हैं; कर्नेल / उपयोगकर्ता के लिए एक बिट कर्नेल एड्रेस स्पेस के लिए 47 बिट्स छोड़ता है। इसका अधिकांश भाग भौतिक स्मृति को सीधे संबोधित करता है, और दूसरा आधा कर्नेल को इसकी आवश्यकता के अनुसार मैप करने की अनुमति देता है। (लिनक्स एक ही समय में पूरी तरह से मैप नहीं की जा सकने वाली भौतिक मेमोरी का सामना कर सकता है, लेकिन यह अतिरिक्त जटिलता का परिचय देता है, इसलिए यह केवल उन प्लेटफार्मों पर किया जाता है, जहां इसकी आवश्यकता होती है, जैसे कि पीएई के साथ x86-32 और LPAE के साथ armv7।)
वर्चुअल मेमोरी के लिए कई कारणों से भौतिक मेमोरी से बड़ा होना उपयोगी है:
- यह कर्नेल को पूरी भौतिक मेमोरी को मैप करने देता है, और वर्चुअल मैपिन्स के लिए जगह छोड़ देता है।
- भौतिक मेमोरी के मैपिंग के अलावा, स्वैप की फाइलें और डिवाइस ड्राइवरों की मैपिंग हैं।
- यह स्थानों में तुच्छ स्मृति के लिए उपयोगी होता है: पकड़ करने के लिए गार्ड पृष्ठों अतिप्रवाह बफ़र , की वजह से बड़े तुच्छ क्षेत्रों ASLR , आदि