Con un kernel de 32 bits, solo tiene 4 GB de espacio de direcciones disponibles . Parte de este espacio de direcciones debe ser utilizado por el hardware (virtual o físico) del sistema, como tarjetas de video, NIC, etc., para sus propios fines. Este uso suele oscilar entre 256 MB y 1 GB, según la cantidad de espacio de direcciones que necesite el hardware en particular.
Dado que el hardware utiliza ese espacio de direcciones, la RAM correspondiente generalmente es inaccesible para un sistema de 32 bits.
Tienes un par de opciones:
- La opción preferida es ejecutar un sistema operativo de 64 bits. Esto expande dramáticamente el espacio de direcciones, por lo que hay mucho espacio para toda la RAM y el hardware. También rompe el límite de 2 GB/3 GB de 32 bits en las aplicaciones y mantiene la capacidad de ejecutar programas de 32 bits. En general, cualquier sistema con 2 GB o más de RAM debe ejecutar un sistema operativo de 64 bits para evitar estos problemas.
- Otra opción es ejecutar un kernel de 32 bits con PAE habilitado. Esto mostrará la memoria RAM, pero cada proceso seguirá estando limitado a 2 GB/3 GB de espacio de direcciones, según los detalles de la compilación del kernel. Dado que los sistemas operativos de 64 bits ejecutarán aplicaciones de 32 bits perfectamente bien, esto no tiene ninguna ventaja y sí muchas desventajas (como la falta de una ruta de actualización).
La salida del free
El comando no cuenta la memoria del kernel reservada y algunos otros bits pequeños. Verá esta discrepancia incluso en un kernel de 64 bits e incluso con <2 GB de RAM.
La línea crítica de su mapa de RAM física es esta:
BIOS-e820: 0000000100000000 - 0000000140000000 (usable)
Esta línea muestra que 1 GB (0x40000000 bytes, hexadecimal) de la memoria RAM física de su sistema está siendo asignado por el BIOS por encima del límite de 4 GB, lo que lo hace inaccesible para un sistema de 32 bits sin PAE.