Espacio de direcciones virtuales en sistemas de 64 bits que se ejecuta en modo de compatibilidad

StackOverflow https://stackoverflow.com/questions/490520

Pregunta

Vi que en una de 64 bits de windows OS el usuario virtual de la dirección de espacio disponible es de 8 terra bytes.Pero si el programa que estamos ejecutando en este se está ejecutando en 32 bits en modo de compatibilidad es esta cantidad de espacio de usuario todavía está disponible ?o se comporta como una normal de 32 bit y solo da 2 gb de espacio de direcciones de usuario?

¿Fue útil?

Solución

Microsoft tiene un gráfico que muestra los diversos límites: Los Límites de la memoria para las Versiones de Windows

Para resumir del modo de usuario espacio de direcciones virtuales:

  • Windows de 32 bits:
    • Proceso de 32 bits:2 GB por defecto;3 GB con /LARGEADDRESSAWARE:YES y 4GT
  • Windows de 64 bits (x64 arquitectura):
    • Proceso de 32 bits:2 GB por defecto;4 GB con /LARGEADDRESSAWARE:YES
    • Proceso de 64 bits:8 TB por defecto;2 GB con /LARGEADDRESSAWARE:NO

4GT es de 4 gigabytes de optimización:

  • XP: /3GB el arranque.ini cambiar
  • Vista: bcdedit /set increaseuserva 3072

Mark Russinovich hecho una entrada en el blog explicando muchos de estos límites: Empujando los Límites de Windows:La Memoria Virtual

Otros consejos

Su proceso solo verá un espacio de dirección virtual de 4GB cuando se ejecuta como un proceso de 32 bits. No podrá abordar nada más alto.

Mi respuesta original fue bastante mala. Aquí hay un enlace que explica lo que JaredPar decía bastante bien.

http://msdn.microsoft.com/en-us/library /ms189334.aspx

En lo que respecta al hardware, cuando se ejecuta en modo de compatibilidad (es decir, IA32_EFER.LMA está configurado y el bit L está claro en el descriptor de segmento de CS) los segmentos se comportan como segmentos de 32 bits. Es decir:

  • la base del segmento está limitada a 32 bits.
  • el límite del segmento está limitado a 32 bits también (usando el bit G).

Esto efectivamente lo limita a 4GB de direcciones virtuales. No estoy familiarizado con la forma en que el sistema operativo divide la memoria virtual en los distintos modos, pero esto es el límite de hardware. (lo siento ... soy un experto en hardware, no un experto en sistemas operativos)

Si su programa se ejecuta como un proceso de 32 bits en el subsistema Wow64, verá exactamente el mismo espacio de direcciones que vería en un sistema operativo de 32 bits real. Sin opciones especiales, un proceso de 32 bits tendrá 2 GB de memoria disponible.

La única diferencia es la memoria disponible si utiliza Opción LargeAddressAware . En un proceso normal de 32 bits, esto permite 3 GB de memoria direccionable. En un proceso Wow64, puede ver hasta 4 GB ( Fuente )

Cabe señalar que al ejecutar un proceso de 32 bits en IIS 6.0+ con una máquina / SO de 64 bits, un proceso puede abordar hasta 4 GB de memoria.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top