Quanta memory pode um processo de access de 32 bits em um sistema operacional de 64 bits?

No Windows, em circunstâncias normais, um processo de 32 bits pode acessar apenas 2 GB de RAM (ou 3 GB com um switch especial no arquivo boot.ini). Ao executar um processo de 32 bits em um sistema operacional de 64 bits, quanta memory está disponível? Há algum interruptor ou configuração especial que possa mudar isso?

2 GB por padrão. Se o aplicativo tiver reconhecimento de espaço de endereço grande (vinculado a / LARGEADDRESSAWARE), ele receberá 4 GB (não 3 GB, consulte http://msdn.microsoft.com/en-us/library/aa366778.aspx )

Eles ainda estão limitados a 2 GB, já que muitos aplicativos dependem do bit superior dos pointers para serem zero.

4 GB menos o que está em uso pelo sistema se você vincular com / LARGEADDRESSAWARE.

Naturalmente, você deve ter ainda mais cuidado com a aritmética de pointers se definir esse sinalizador.

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 memory acima de 4G, portanto, em janelas de 64 bits com memory suficiente, é possível executar muitos aplicativos de 32 bits do que em um sistema nativo de 32 bits.

Um processo de 32 bits ainda está limitado às mesmas restrições em um sistema operacional de 64 bits. A questão é que os pointers de memory têm apenas 32 bits de largura, portanto o programa não pode atribuir / resolver nenhum endereço de memory maior que 32 bits.

Um único processo de 32 bits em um sistema operacional de 64 bits é limitado a 2 GB. Mas se ele for compilado em um arquivo EXE com bit IMAGE_FILE_LARGE_ADDRESS_AWARE definido, ele terá um limite de 4 GB, não 2 GB – consulte https://msdn.microsoft.com/en-us/library/aa366778 ( VS.85 ). aspx

Em ambos os casos, o espaço de endereço virtual do kernel é compartilhado em todos os processos. É por isso que, mesmo que você tenha um grande número de processos de 32 bits, eles podem ficar sem memory apesar do fato de você ter muita memory disponível para seu sistema operacional de 64 bits, digamos, 16 GB – o de 32 bits os processos no total podem rapidamente ficar fora do espaço de endereço virtual do kernel disponível para eles (no máximo 2 GB).

As coisas que você ouve sobre flags de boot especiais, switches de 3 GB, / 3GB, ou / userva são todos 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 mais detalhes.

Quanto aos sistemas operacionais de 32 bits, ao contrário do que se acredita, 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 do Windows Server 2008 Enterprise e Datacenter) – por meio da PAE (Physical Address Extension), que foi introduzida pela Intel pela primeira vez. o Pentium Pro e mais tarde a AMD no processador Athlon – define uma hierarquia de tabela de três níveis, com inputs de tabela de 64 bits em vez de 32, permitindo que essas CPUs acessem diretamente um espaço de endereço físico maior que 4 gigabytes teoricamente, um sistema operacional de 32 bits pode acessar 2 ^ 64 bytes teoricamente, ou 17.179.869.184 gigabytes, mas o segmento é limitado por 4GB . No entanto, devido a razões de marketing, a Microsoft limitou a memory máxima acessível em sistemas operacionais que não são de servidor a apenas 4 GB ou, até mesmo, 3 GB efetivamente. Assim, um único processo pode acessar mais de 4 GB em um sistema operacional de 32 bits – e o Microsoft SQL Server é um exemplo.

Você tem a mesma restrição básica ao executar um processo de 32 bits no Win64. Seu aplicativo é executado em um subsistema 32, mas que faz o seu melhor para se parecer com o Win32, e isso includeá as restrições de memory para o seu processo (2GB mais baixo para você, 2GB superiores para o sistema operacional)

O limite não é 2g ou 3gb é 4gb para 32bit.

A razão pela qual as pessoas acham que o seu 3gb é que o sistema operacional mostra 3GB livre quando eles realmente têm 4GB de ram do sistema.

Sua RAM total de 4gb. Então, se você tem uma placa de vídeo de 1 GB que conta como parte do total de RAM visualizado pelo sistema operacional de 32 bits.

4Gig não 3 não 2 entendeu?