MemTest86 mostra espaço de endereço de memória maior que a quantidade física

0

Em um laptop com 4 GB de RAM, achei que os endereços de memória deveriam começar em byte 0 e terminar antes de 0x1_0000_0000 (_ é um separador adicionado para maior clareza), mas o MemTest86 diz que termina em 0x1_6060_0000 , mas não é mais 1542 MB?

Da mesma forma, em um computador desktop com 16 GB de RAM, acho que deve terminar em 0x4_0000_0000 , mas o MemTest86 diz 0x4_2F60_0000 , que é 758 MB maior.

Por que o MemTest86 mostra espaços de endereço maiores que a quantidade real de memória física?

    
por Victor 02.02.2018 / 04:39

1 resposta

2

Esta é uma situação muito comum nos sistemas modernos. E por boas razões.

Desde há décadas, os computadores têm dispositivos de hardware mapeados na memória. Este é um hardware especial que pode ser acessado pela CPU como se fosse uma memória. Isso é usado para comunicação rápida com dispositivos de hardware, como o sistema de vídeo. Sem isso, os computadores sofreriam uma severa penalidade de desempenho.

Para compatibilidade com sistemas operacionais de 32 bits, esse hardware mapeado na memória deve aparecer no intervalo de endereços inferior de 4 GB. Nos sistemas modernos isso significa várias centenas de MB, no mínimo, o que é bastante significativo. Como o hardware mapeado na memória e a RAM não podem existir nos mesmos endereços, uma parte considerável da RAM seria inacessível. É por isso que as versões de 32 bits do Windows não podem ver todos os 4 GB de RAM.

Esta não é uma boa situação. Mas há uma solução, pelo menos para os sistemas operacionais que podem lidar com isso. A solução é remapear as partes da RAM que de outra forma seriam inacessíveis para endereços acima de 4 GB. Isso é o que você está vendo. Para o benefício dos sistemas operacionais de 32 bits, a maior quantidade de RAM possível será deixada em endereços abaixo de 4 GB.

Esse remapeamento de memória é feito pelo hardware do computador e pelo BIOS, assim estará disponível para qualquer sistema operacional. Modernos sistemas operacionais de 64 bits e programas de teste de memória são projetados para isso. Por razões técnicas, as versões de cliente de 32 bits do Windows irão ignorar toda a memória acima de 4 GB. Com os sistemas operacionais modernos, os aplicativos nunca veem endereços físicos de RAM, portanto, o mapeamento de memória não é uma preocupação para eles.

    
por 02.02.2018 / 06:30

Tags