Cuando la capacidad de la memoria principal es de 2 GB, ¿cuál podría ser el programa más grande al que puede acceder el procesador con el soporte de un bus de direcciones de 32 bits?
Respuesta1
Si tiene un espacio de direcciones de 32 bits, puede direccionar 2^32 (4Gi) bytes de memoria. En lo que respecta a un programa que se ejecuta en un espacio de direcciones virtuales, no veo ninguna razón por la que no pueda abordar y acceder a 4GiB.
Esto supone algunas cosas, como un sistema operativo que usa memoria virtual, posiblemente algún hardware (MMU) para ayudar, etc. Pero para cualquier CPU moderna de 32 bits y cualquier sistema operativo moderno, esto no debería ser un problema. Todo lo moderno admite paginación, por lo que solo tiene que tener la parte de esos 4GiB a los que se accede actualmente en la memoria física.
Hasta aquí una respuesta genérica, ahora una para Windows y x86.
Windows (¿desde la era win2000?) utiliza memoria virtual y paginación. También utiliza de forma predeterminada dividir el rango de direcciones 4Gi a la mitad. La mitad superior para el kernel, la mitad inferior para los programas de usuario. Eso impone un límite artificial de 2GiB de dirección para programas de usuario, o 3GiB cuando arranca el kernel en un modo especial y usa programas LARGEADDRESSAWARE.
Esto limitará sus programas de USUARIO a eso.
Luego está PAE, que expande artificialmente su bus de memoria a 36 bits. PAE es un error feo y no es necesario desde las CPU de 64 bits (que han sido comunes durante las últimas dos décadas).
Esto se está convirtiendo en una publicación de "qué pasaría si" y luego "responde X". Lo que significa que sería bueno tener una pregunta más específica.
Respuesta2
En teoría, serían 2 GB, pero parte de ellos serán reservados y/o utilizados por el propio sistema operativo.
Tenga en cuenta que también los procesos de 32 bits están limitados a 2 GB incluso si los ejecuta en un sistema operativo de 64 bits, a menos que se rediseñen intencionalmente. Si se rediseña considerando IMAGE_FILE_LARGE_ADDRESS_AWARE, el límite pasa a ser,según MSDN, 3 GB.