এই সীমাগুলি দেবিয়ান বা লিনাক্স থেকে আসে না, তারা হার্ডওয়্যার থেকে আসে। বিভিন্ন আর্কিটেকচার (প্রসেসর এবং মেমরি বাস) এর বিভিন্ন সীমাবদ্ধতা রয়েছে।
বর্তমান x86-64 পিসি প্রসেসরগুলিতে, এমএমইউ 48 ভার্চুয়াল ঠিকানা স্থানের অনুমতি দেয় । এর অর্থ হল যে ঠিকানাটির স্থানটি 256TB এর মধ্যে সীমাবদ্ধ। ব্যবহারকারল্যান্ডের ঠিকানা থেকে কার্নেল ঠিকানাগুলি পৃথক করার জন্য একটি বিট দিয়ে, এটি একটি প্রক্রিয়াটির ঠিকানা স্থানের জন্য 128TB ছেড়ে যায়।
বর্তমান x86-64 প্রসেসরের উপর শারীরিক ঠিকানাগুলি 48 বিট পর্যন্ত ব্যবহার করতে পারে যার অর্থ আপনার 256TB অবধি থাকতে পারে। Amd64 আর্কিটেকচার চালু হওয়ার পর থেকে সীমাটি ক্রমশ বেড়েছে (40 টি বিট থেকে যদি আমি সঠিকভাবে স্মরণ করি)। প্রতিটি ঠিকানার জায়গার জন্য কিছু তারের এবং ডিকোডিং যুক্তি (যা প্রসেসরটিকে আরও ব্যয়বহুল, ধীর এবং গরমতর করে তোলে) ব্যয় করে, তাই হার্ডওয়্যার নির্মাতারা আকারটি কমিয়ে আনার জন্য একটি উত্সাহ রয়েছে।
লিনাক্স কেবল দৈহিক ঠিকানাগুলিকে 2 ^ 46 পর্যন্ত যেতে দেয় (যাতে আপনার কেবলমাত্র 64TB পর্যন্ত থাকতে পারে) কারণ এটি শারীরিক মেমরির সম্পূর্ণরূপে কার্নেল স্পেসে ম্যাপ করতে দেয়। মনে রাখবেন যে ঠিকানার জায়গার 48 বিট রয়েছে; কার্নেল / ব্যবহারকারীর জন্য এক বিট কার্নেল ঠিকানা স্থানের জন্য 47 বিট ফেলে। এর বেশিরভাগ অংশই সরাসরি শারীরিক স্মৃতি সম্বোধন করে এবং অন্য অর্ধেক কার্নেলটিকে যা প্রয়োজন তা ম্যাপ করার অনুমতি দেয়। (লিনাক্স শারীরিক মেমরির সাথে লড়াই করতে পারে যা একই সাথে পুরোপুরি ম্যাপ করা যায় না, তবে এটি অতিরিক্ত জটিলতার পরিচয় দেয়, সুতরাং এটি কেবলমাত্র প্ল্যাটফর্মগুলিতে সম্পন্ন হয়েছে যেখানে পিএই সহ x86-32 এবং এলপিএই সহ আর্মভি 7 রয়েছে।)
এটি ভার্চুয়াল মেমরির জন্য বিভিন্ন কারণে শারীরিক স্মৃতি থেকে বড় হওয়া কার্যকর:
- এটি কার্নেলটিকে পুরো শারীরিক মেমরির মানচিত্র দেয় এবং ভার্চুয়াল ম্যাপিনগুলির জন্য জায়গা রেখে দেয়।
- শারীরিক মেমরির ম্যাপিংয়ের পাশাপাশি, অদলবদল, ফাইল এবং ডিভাইস ড্রাইভারের ম্যাপিং রয়েছে।
- এটা তোলে স্থানে unmapped মেমরির আছে দরকারী: ধরা পাহারা পৃষ্ঠাগুলি উপচে বাফার , এর কারণে বৃহৎ unmapped অঞ্চল ASLR , ইত্যাদি