No Windows, em circunstâncias normais, um processo de 32 bits pode acessar apenas 2 GB de RAM (ou 3 GB com uma opção especial no arquivo boot.ini). Ao executar um processo de 32 bits em um sistema operacional de 64 bits, quanta memória está disponível? Existem opções ou configurações especiais que podem alterar isso?
86
Respostas:
2 GB por padrão. Se o aplicativo reconhecer grande espaço de endereço (vinculado a / LARGEADDRESSAWARE), ele obterá 4 GB (não 3 GB, consulte http://msdn.microsoft.com/en-us/library/aa366778.aspx )
Eles ainda estão limitados a 2 GB, pois muitos aplicativos dependem da parte superior dos ponteiros para ser zero.
fonte
since many application depends on the top bit of pointers to be zero
você quer dizer que o 32º bit do esquema de endereçamento não é considerado ou usado ao percorrer o espaço de endereço do processo.4 GB menos o que está em uso pelo sistema se você vincular com / LARGEADDRESSAWARE.
Obviamente, você deve ser ainda mais cuidadoso com a aritmética de ponteiro se definir esse sinalizador.
fonte
Ninguém parece tocar no fato de que, se você tiver muitos aplicativos de 32 bits diferentes, o subsistema wow64 pode mapeá-los em qualquer lugar na memória acima de 4G, portanto, em uma janela de 64 bits com memória suficiente, você pode executar muitos outros aplicativos de 32 bits do que em um sistema nativo de 32 bits.
fonte
Um processo de 32 bits ainda está limitado às mesmas restrições em um sistema operacional de 64 bits. O problema é que os ponteiros de memória têm apenas 32 bits de largura, então o programa não pode atribuir / resolver qualquer endereço de memória maior que 32 bits.
fonte
Um único processo de 32 bits em um sistema operacional de 64 bits é limitado a 2 Gb. Mas se for compilado em um arquivo EXE com
IMAGE_FILE_LARGE_ADDRESS_AWARE
conjunto de bits, terá um limite de 4 GB, não 2 Gb - consulte https://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspxO que você ouve sobre sinalizadores de inicialização especiais, 3 GB,
/3GB
interruptores ou/userva
tudo sobre sistemas operacionais de 32 bits e não se aplicam ao Windows de 64 bits.Consulte https://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx para obter mais detalhes.
Quanto aos sistemas operacionais de 32 bits, ao contrário do que se pensa, não há limite físico de 4 GB para sistemas operacionais de 32 bits. Por exemplo, sistemas operacionais de servidor de 32 bits como o Microsoft Windows Server 2008 de 32 bits podem acessar até 64 GB(Edições Windows Server 2008 Enterprise e Datacenter) - por meio de Physical Address Extension (PAE), que foi introduzido pela Intel no Pentium Pro, e depois pela AMD no processador Athlon - ele define uma hierarquia de tabela de página de três níveis, com entradas de tabela de 64 bits cada em vez de 32, permitindo que essas CPUs acessem diretamente um espaço de endereço físico maior do que 4 gigabytes - então, teoricamente, um SO de 32 bits pode acessar 2 ^ 64 bytes teoricamente, ou 17.179.869.184 gigabytes, mas o segmento é limitado por 4 GB. No entanto, devido a razões de marketing, a Microsoft limitou a memória máxima acessível em sistemas operacionais não servidores a apenas 4 GB, ou até 3 GB efetivamente. Portanto, um único processo pode acessar mais de 4 GB em um sistema operacional de 32 bits - e o servidor Microsoft SQL é um exemplo.
Os processos de 32 bits no Windows de 64 bits não têm nenhuma desvantagem em comparação aos processos de 64 bits no uso do espaço de endereço virtual do kernel compartilhado (também chamado de espaço do sistema ). Todos os processos, sejam de 64 ou 32 bits, no Windows de 64 bits compartilham o mesmo espaço de sistema de 64 bits.
Dado o fato de que o espaço do sistema é compartilhado por todos os processos , no Windows de 32 bits , os processos que criam uma grande quantidade de identificadores (como threads, semáforos, arquivos, etc.) consomem espaço do sistema por objetos do kernel e podem ficar sem memória até mesmo se você tiver muita memória disponível no total. Em contraste, no Windows de 64 bits , o espaço do kernel é de 64 bits e não é limitado a 4 GB. Todas as chamadas do sistema feitas por aplicativos de 32 bits são convertidas em chamadas nativas de 64 bits no modo de usuário .
fonte
Você tem a mesma restrição básica ao executar um processo de 32 bits no Win64. Seu aplicativo é executado em um subsistema de 32, mas que faz o possível para se parecer com o Win32, e isso inclui as restrições de memória para o seu processo (menos 2 GB para você, mais 2 GB para o sistema operacional)
fonte
O limite não é 2g ou 3gb, é 4gb para 32 bits.
A razão pela qual as pessoas pensam que são 3 gb é que o sistema operacional mostra 3 gb de graça quando na verdade eles têm 4 gb de memória RAM.
Sua RAM total de 4 GB. Portanto, se você tiver uma placa de vídeo de 1 gb que conta como parte da memória RAM total visualizada pelo sistema operacional de 32 bits.
4Gig não 3 não 2 entendeu?
fonte