8

He estado leyendo que las aplicaciones Windows de 32 bits están limitadas a 2 GB de RAM porque los 2GB superiores de espacio de direcciones están reservados para el sistema operativo Windows (y, iirc, VRAM). Si usa el indicador/3GB en WinXp de 32 bits, puede obtener hasta 3 GB de RAM disponibles para el direccionamiento, pero por lo general debe modificarlos con los valores userva. He oído que en las ediciones de 64 bits de Windows, con un indicador de dirección completa grande en el encabezado PE y más de 4 GB de RAM, es posible que una aplicación use todos los 4 GB de espacio de direcciones para su propia administración de memoria.¿Cómo funciona la bandera Large Address Aware para aplicaciones de 32 bits en computadoras de 64 bits?

Por otro lado, estoy bastante seguro de que cuando llame a la API de Windows, debe llamar a las ubicaciones de memoria dentro del espacio de direcciones de 32 bits que se le proporciona. Entonces, ¿qué cantidad de memoria RAM puede usar una aplicación de 32 bits para grandes direcciones en un entorno de 64 bits? ¿Y por qué?

Gracias.

Respuesta

5

El espacio de direcciones virtuales se extiende a 4 GB. Si no usa Address Windowing Extension API, la cantidad máxima de memoria a la que puede acceder es de 4 GB. Parte de ese espacio será utilizado por el sistema operativo para .dlls y otras cosas similares, pero será posible recuperar la memoria que usa los 32 bits de un puntero.

Dicho sea de paso, si no conoce las direcciones grandes, todos los punteros de memoria no serán negativos cuando se los envíe a un INT_PTR. En realidad, esto es una fuente de más de unos pocos errores sutiles cuando se utiliza el indicador de gran dirección consciente, ya que los punteros se tratan como valores firmados.

+0

Espere un momento, en ese caso, ¿es posible utilizar AWE en un sistema operativo Windows Xp de 32 bits para aprovechar adecuadamente 4 GB de RAM en lugar de la tontería/3GB? –

+7

+1 Si planea ejecutar bajo/LARGEADDRESSAWARE, tenga cuidado de que varios software tengan errores con punteros de 32 bits> 2 GB. Incluso algunas funciones de MS API (¡Te estoy mirando GetCursorPos en Vista!) La forma de eliminar estos problemas, y trabajar en su alrededor si es necesario usar [asignación de memoria de arriba hacia abajo] (http://msdn.microsoft) .com/ja-jp/isv/bb190527 (l = en-us)) que está habilitado con una configuración de registro. –

+0

Sí, pero tiene que asignar explícitamente las páginas de memoria física a un espacio de direcciones virtual. Es similar al cambio de banco VESA de la era antigua de DOS. – MSN

Cuestiones relacionadas