Por que o Windows de 32 bits impõe um limite de espaço de endereço de processo de 2 GB, mas o Windows de 64 bits impõe um limite de 4 GB?

5

Eu entendo que 2^32 = 4,294,967,296 e 2GB são para o SO e 2 GB para o processo, mas por que um sistema operacional de 64 bits oferece apenas 4 GB de espaço de endereço? Não deveria ser 2^64 = 18,446,744,073,709,551,615 que, quando dividido uniformemente entre o sistema operacional e o processo, é muito maior que 4 GB?

    
por puk 29.12.2011 / 01:49

3 respostas

10

Se você olhar para Limites de memória para versões do Windows

O limite para o espaço de endereço virtual do modo de usuário x64 não é 4GB , mas pelo menos 8TB

Algumas explicações que justificam o 8Tb limite

Por padrão, um exe de 32 bits está limitado a 2GB no sistema operacional de 64 bits, a menos que seja ajustado com IMAGE_FILE_LARGE_ADDRESS_AWARE

    
por 29.12.2011 / 01:52
5

2 ^ 32 (4 GB) é a quantidade máxima de espaço de endereço que pode ser endereçada de uma só vez com ponteiros de 32 bits. Portanto, um processo de 32 bits é necessariamente limitado a um espaço de endereço de 4 GB, porque ele usa ponteiros de 32 bits, independentemente do SO.

Note que isto é puramente uma restrição na memória virtual que um processo pode ter mapeado em seu espaço de endereço de uma só vez.

    
por 29.12.2011 / 01:53
-2

Seus cálculos estão corretos. Executando um sistema de 64 bits, você não precisa se preocupar com o espaço de endereçamento (é muito mais do que o sistema suportará). Se o tamanho da RAM não for o que deveria ser, o problema fica em outro lugar. Talvez sua placa-mãe esteja limitando ou alguns dos dispositivos não sejam suportados / quebrados.

    
por 29.12.2011 / 01:57