Uso de memória de aplicativos de 32 bits no sistema operacional de 64 bits.


13

Se meu sistema operacional for de 64 bits, meus aplicativos de 32 bits podem usar memória de 64 bits (> 3,5 GB)?

Respostas:


6

Se o aplicativo tiver conhecimento do AWE, poderá usar um espaço de endereço além de 4Gb, embora com menos eficiência do que um aplicativo de 64 bits. É ainda possível que processos de 32 bits em variantes do Windows de 32 bits acessem mais do que o espaço de endereço de 32 bits permitiria, se o PAE estiver ativado e o processo puder usá-lo.

Um processo de 32 bits individuais (que não é AWE cientes) é normalmente limitada a 3Gb (o primeiro Gb de seu espaço de endereço virtual que está sendo reservada para a ação do kernel relacionados) , mas se você estiver executando vários processos, em seguida, eles serão capazes de usar mais em total (cada um pode usar até 3Gb, permitindo total memória), pois seus espaços de endereço virtual não são compartilhados.

O limite por processo é mais útil em um ambiente semelhante ao Unix, onde os serviços tendem a ser baseados em processos e não em threads (vários threads em um processo compartilham os recursos do processo e, portanto, compartilham um único espaço de endereço virtual 3Gb), como é mais comum no Windows (iniciar um novo processo no Windows é bastante caro, portanto, os threads são preferidos; na maioria dos ambientes Unix, iniciar um novo processo não consome muito mais recursos do que iniciar um novo thread) . Não é muito útil para uma máquina que esteja executando apenas o SQL Server, por exemplo, uma vez que será apenas um processo, atingindo o limite de 3Gb (algumas edições podem ser configuradas para reconhecer o AWE, mas não todas, e o está programado para ser removido na próxima versão principal) .

Além de os processos de 32 bits poderem usar mais de 3Gb no total, o sistema operacional poderá usar qualquer memória não utilizada para o cache do disco, para que não seja desperdiçada, supondo que os processos não abram arquivos dessa maneira para dizer ao sistema operacional para não se incomodar em fazer isso.


Processo de 32 bits com conjunto IMAGE_FILE_LARGE_ADDRESS_AWARE tem um limite de quatro GB, não 3. msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
Mark Sowul

5

Se o aplicativo usar AWE , sim (embora isso não esteja restrito aos sistemas operacionais de 64 bits). Sem ele, o processo ainda está restrito a um espaço de endereço de 4 GB.


-1, Embora seja verdade, acho que a resposta parcial é enganosa, pois nenhum processo (não AWE) de 32 bits terá 4 GB de RAM disponível.
pipTheGeek

@pipTheGeek Erroneous: processo de 32 bits com IMAGE_FILE_LARGE_ADDRESS_AWARE definido = 4 GB disponíveis. msdn.microsoft.com/pt-br/library/aa366778(VS.85).aspx
Mark Sowul 2/11/11

@ Mark - eu tinha esquecido isso, e eu corrigi minha resposta abaixo. Ainda acho que essa resposta está incompleta.
pipTheGeek

3

Sorta, dependendo do que você quer dizer.

Supondo que o Windows ...

Se o sistema operacional for de 64 bits, por padrão, um processo de 32 bits obterá 2 GB de espaço de endereço virtual no endereço do usuário. Se o cabeçalho PE do arquivo .exe estiver marcado com o sinalizador IMAGE_FILE_LARGE_ADDRESS_AWARE, o processo obterá 4 GB de espaço de endereço virtual endereçável pelo usuário. Nos dois casos, o espaço de endereço virtual do kernel é igual aos processos de 64 bits, pois é compartilhado em todos os processos. Além disso, os processos de 64 bits que não configuram o sinalizador IMAGE_FILE_LARGE_ADDRESS_AWARE também têm acesso apenas a 2 GB de espaço de endereço virtual do usuário.

O que você ouve sobre sinalizadores de inicialização especiais, opções de 3 GB / 3 GB ou / userva são todos sobre sistemas operacionais de 32 bits e não se aplicam ao Windows de 64 bits.

Tudo isso é detalhado em detalhes excruciantes na página Limites de memória da Microsoft para versões do Windows .

A resposta de @David Spillett também toca em outro ponto: vários processos, todos limitados a 2 GB de espaço do usuário, ainda podem usar quantidades significativas de RAM, se disponíveis, assim como o cache de arquivos.


0

Um processo de 32 bits em um sistema operacional de 32 bits possui um espaço de endereço de 4 GB, dos quais 2 GB são reservados pelo sistema operacional, 2 GB disponíveis para o processo.
Há uma opção que pode ser especificada para o sistema operacional (/ 3 GB) que altera a quantidade reservada para o sistema operacional para apenas 1 GB e permite que o processo tenha 3 GB, MAS, apenas se o processo se declarar como endereço grande ciente nos sinalizadores do executável.

Em um sistema operacional de 64 bits, um processo de 32 bits obterá 4 GB se reconhecer um endereço grande, 2 GB caso contrário.

Tudo isso é para processos que não reconhecem o AWE. Se o processo for capaz de usar o AWE, como já foi dito, ele poderá usar um grande espaço de endereço, mas com menos eficiência do que um processo de 64 bits.

O PAE permite que um sistema operacional de 32 bits use mais de 4 GB de RAM, no entanto, possui problemas de compatibilidade e foi desabilitado no XP por um dos service packs, portanto, está disponível apenas nas versões do sistema operacional do servidor.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.