espaço de endereço virtual em sistemas de 64 bits em execução no modo de compatibilidade
-
20-08-2019 - |
Pergunta
Eu vi que em um 64 bits do Windows sistema operacional o espaço de endereço virtual de usuário disponível é de 8 terra bytes. Mas se o programa que está a executar este está em execução no modo de compatibilidade de 32 bits é essa quantidade de espaço do usuário ainda está disponível? ou ele se comporta como um sistema operacional normal de 32 bits e só dá 2 GB de espaço de endereço do usuário?
Solução
Microsoft tem um gráfico mostrando os vários limites: href="http://msdn.microsoft.com/en-us/library/aa366778.aspx" Limites de Memória para Lançamentos do Windows
Para resumir apenas o espaço de endereço virtual do modo de usuário:
- 32-bit do Windows:
- 32-bit processo: 2 GB por padrão; 3 GB com
/LARGEADDRESSAWARE:YES
e 4GT
- 32-bit processo: 2 GB por padrão; 3 GB com
- 64-bit do Windows (arquitetura x64):
- 32-bit processo: 2 GB por padrão; 4 GB com
/LARGEADDRESSAWARE:YES
- processo de 64 bits: 8 TB por padrão; 2 GB com
/LARGEADDRESSAWARE:NO
- 32-bit processo: 2 GB por padrão; 4 GB com
4GT é ajuste de 4 gigabytes:
- XP:
/3GB
interruptor boot.ini - Vista:
bcdedit /set increaseuserva 3072
Mark Russinovich fez um post explicando muitos desses limites: Empurrando os limites do Windows: Memória Virtual
Outras dicas
O processo só vai ver um espaço de endereço virtual de 4 GB quando ele é executado como um processo de 32 bits. Não será capaz de endereços nada maior.
A minha resposta original era muito ruim. Aqui está um link que explica o que JaredPar dizia muito bem.
Quanto ao hardware está em causa, quando você estiver executando em modo de compatibilidade (ou seja IA32_EFER.LMA está definido eo L bit está claro no descritor de segmento de CS) os segmentos se comportam como segmentos de 32 bits. Ou seja:
- a base do segmento é limitada para 32 bits.
- o limite do segmento é limitada para 32 bits, bem como (usando o bit L).
Isto efetivamente limita a 4 GB de endereços virtuais. Eu não estou familiarizado com a forma como as partições de sistema operacional de memória virtual nos vários modos, mas este é o limite de hardware. (Desculpe ... Eu sou um cara de hardware, não é um especialista OS)
Se o seu programa é executado como um processo de 32 bits no subsistema WOW64, vai ver exatamente o mesmo espaço de endereço que iria ver em um sistema operacional de 32 bits real. Sem opções especiais, um processo de 32 bits terá 2 GB de memória disponível.
A única diferença é a memória disponível se você usar o opção LARGEADDRESSAWARE . Em um processo de 32 bits normal, isso permite 3GB de memória endereçável. Em um processo Wow64 pode ver até 4GB ( Fonte )
Note-se que a execução de um processo de 32 bits no IIS 6.0 + com um 64-bit máquina / OS, um processo pode endereçar até 4GB de memória.