Aumentar la memoria disponible para los procesos en Windows XP

En Windows XP 32-Bits el límite de memoria virtual para un proceso son 2GB, pero sabemos que el máximo deberían ser 4GB (el máximo direccionable con 32 bits), así que ¿dónde están las otras 2GB? Pues se reservan para el núcleo del sistema.

Si quieres saber qué pasa con otras versiones de windows o los detalles exactos, te recomiendo esta página: “Límites de Memoria para las distintas versiones de Windows”.

Sin embargo, esta limitación impuesta por el sistema puede ser incómoda, al fin y al cabo, ¿por qué 2GB y no 2,5GB? ¿y si mi aplicación los necesita?

Microsoft ya cuenta con esto y es posible permitir que el espacio dedicado al proceso sea mayor a 2GB. Tenemos que ser conscientes de que, puesto que el límite de memoria virtual son 4GB, si se aumenta la memoria reservada para el proceso de usuario, disminuirá la cantidad de memoria reservada para el núcleo.

En el siguiente post de Mark Russinovich, “Pushing the Limits of Windows: Virtual Memory” y en éste otro de Brian Madden, se explica muy bien la situación (Mark es uno de los creadores de las herramientas Sysinternals y autor del mítico libro Windows Internals).

En resumen, para que un proceso pueda utilizar más de 2GB es necesario:

    1. Activar el flag Large Address Aware en el binario (para ver si un ejecutable lo tiene activado ejecutar: dumpbin /headers fichero.exe). Este flag se puede activar al linkar tu binario o posteriormente con alguna herramienta que modifique las cabeceras.
    2. Arrancar el sistema con el flag /3GB que permite reservar a los procesos de usuario hasta 3GB (dejando una sola para las necesidades del núcleo del sistema).

    A disfrutarlo 😉