Esos límites no provienen de Debian o Linux, provienen del hardware. Las diferentes arquitecturas (procesador y bus de memoria) tienen diferentes limitaciones.
En los procesadores de PC x86-64 actuales, la MMU permite 48 bits de espacio de direcciones virtuales . Eso significa que el espacio de direcciones está limitado a 256 TB. Con un bit para distinguir las direcciones de kernel de las direcciones de usuario, eso deja 128TB para el espacio de direcciones de un proceso.
En los procesadores x86-64 actuales, las direcciones físicas pueden usar hasta 48 bits , lo que significa que puede tener hasta 256 TB. El límite ha aumentado progresivamente desde que se introdujo la arquitectura amd64 (de 40 bits si recuerdo correctamente). Cada bit de espacio de direcciones cuesta algo de lógica de cableado y decodificación (lo que hace que el procesador sea más caro, más lento y más caliente), por lo que los fabricantes de hardware tienen un incentivo para mantener el tamaño bajo.
Linux solo permite que las direcciones físicas suban a 2 ^ 46 (por lo que solo puede tener hasta 64 TB) porque permite que la memoria física se asigne por completo en el espacio del kernel. Recuerde que hay 48 bits de espacio de direcciones; un bit para kernel / user deja 47 bits para el espacio de direcciones del kernel. La mitad de eso en la mayoría de los casos se dirige directamente a la memoria física, y la otra mitad permite que el núcleo asigne lo que necesite. (Linux puede hacer frente a la memoria física que no se puede asignar en su totalidad al mismo tiempo, pero que introduce una complejidad adicional, por lo que solo se hace en plataformas donde es necesario, como x86-32 con PAE y armv7 con LPAE).
Es útil que la memoria virtual sea más grande que la memoria física por varias razones:
- Permite que el kernel asigne toda la memoria física y tenga espacio para los mappins virtuales.
- Además de las asignaciones de memoria física, hay asignaciones de intercambio, de archivos y de controladores de dispositivo.
- Es útil tener memoria sin asignar en algunos lugares: páginas de protección para detectar desbordamientos de búfer , grandes zonas sin asignar debido a ASLR , etc.