Bu sınırlar Debian'dan veya Linux'tan gelmiyor, donanımdan geliyorlar. Farklı mimarilerin (işlemci ve bellek veri yolu) farklı sınırlamaları vardır.
Mevcut x86-64 PC işlemcilerinde MMU, 48 bit sanal adres alanına izin verir . Bu, adres alanının 256 TB ile sınırlı olduğu anlamına gelir. Çekirdek adreslerini kullanıcı adreslerinden ayırt etmek için bir bit kullanıldığında, işlemin adres alanı için 128 TB bırakılır.
Mevcut x86-64 işlemcilerde, fiziksel adresler 48 bit kullanabilir , bu da 256 TB'a kadar sahip olabileceğiniz anlamına gelir. Amd64 mimarisinin tanıtılmasından bu yana limit giderek arttı (doğru hatırlıyorsam 40 bitten). Her adres alanı bir miktar kablolama ve kod çözme mantığına (işlemciyi daha pahalı, daha yavaş ve daha sıcak hale getirir) mal olur, bu nedenle donanım üreticilerinin boyutu düşürmek için bir teşviği vardır.
Linux yalnızca fiziksel adreslerin 2 ^ 46'ya kadar çıkmasına izin verir (bu nedenle yalnızca 64 TB'a kadar sahip olabilirsiniz) çünkü fiziksel belleğin çekirdek alanda tamamen eşlenmesini sağlar. 48 bit adres alanı bulunduğunu unutmayın; çekirdek / kullanıcı için bir bit, çekirdek adres alanı için 47 bit bırakır. Bunun yarısı çoğu durumda doğrudan fiziksel belleğe hitap eder ve diğer yarısı çekirdeğin ihtiyaç duyduğu her şeyi eşlemesini sağlar. (Linux, aynı anda tam olarak haritalanamayan fiziksel hafıza ile başa çıkabilir, ancak bu ilave bir karmaşıklık sunar, bu yüzden yalnızca PAE ile x86-32 ve LPAE ile armv7 gibi ihtiyaç duyduğu platformlarda yapılır .)
Sanal belleğin çeşitli nedenlerden dolayı fiziksel bellekten daha büyük olması yararlıdır:
- Çekirdeğin tüm fiziksel belleği eşlemesini sağlar ve sanal eşlemeler için yer kalmasına izin verir.
- Fiziksel bellek eşlemelerine ek olarak, takas, dosya ve aygıt sürücülerinin eşlemeleri de vardır.
- Yerlerinde eşlenmemiş belleğe sahip olmak yararlıdır: arabellek taşmaları , ASLR nedeniyle büyük eşlenmemiş bölgeler vb.