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?

Foi útil?

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
  • 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

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.

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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top