Quando a capacidade da memória principal é de 2 GB, qual poderia ser o maior programa que pode ser acessado pelo processador com o suporte de um barramento de endereços de 32 bits?
Responder1
Se você tiver espaço de endereço de 32 bits, poderá endereçar 2 ^ 32 (4Gi) bytes de memória. No que diz respeito a um programa executado em espaço de endereço virtual, não vejo razão para que ele não possa endereçar e acessar o valor de 4GiB.
Isso pressupõe algumas coisas, como um sistema operacional que usa memória virtual, possivelmente algum hardware (MMU) para ajudar, etc. Mas para qualquer CPU moderna de 32 bits e qualquer sistema operacional moderno, isso não deve ser um problema. Tudo que é moderno suporta paginação, então só precisa ter a parte dos 4GiB que está acessando na memória física.
Chega de uma resposta genérica, agora para Windows e x86.
O Windows (desde a era win2000?) Usa memória virtual e paginação. O padrão também é dividir o intervalo de endereços 4Gi pela metade. A metade superior para o kernel, a metade inferior para programas de usuário. Isso impõe um limite artificial de endereço de 2GiB para programas de usuário, ou 3GiB quando você inicializa o kernel em um modo especial e usa programas LARGEADDRESSAWARE.
Isso limitará seus programas USER a isso.
Depois, há o PAE, expandindo artificialmente seu barramento de memória para 36 bits. PAE é um problema feio e não é necessário desde as CPUs de 64 bits (que têm sido comuns nas últimas duas décadas).
Isso está se transformando em uma postagem do tipo 'e se' e depois 'resposta X'. O que significa que seria bom ter uma pergunta mais específica.
Responder2
Isso seria 2 GB em teoria, mas parte dele será reservada e/ou usada pelo próprio sistema operacional.
Observe que também os processos de 32 bits são limitados a 2 GB, mesmo se você os executar em um sistema operacional de 64 bits, a menos que sejam redesenhados intencionalmente. Se redesenhado considerando IMAGE_FILE_LARGE_ADDRESS_AWARE, o limite passa a ser,de acordo com MSDN, 3 GB.