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).aspx
O 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 .