uso da memória do aplicativo de 32 bits no sistema operacional de 64 bits.

13

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

    
por Pete2k 01.04.2011 / 21:01

4 respostas

6

Se o aplicativo tiver conhecimento do AWE, ele poderá usar um espaço de endereço além de 4 GB, embora com menos eficiência do que um aplicativo de 64 bits. É até mesmo possível que os 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 a PAE for anabled e o processo for capaz de usá-lo.

Um processo individual de 32 bits (que não é reconhecido pela AWE) é geralmente limitado a 3Gb (o primeiro Gb de seu espaço de endereçamento virtual é reservado para ação relacionada ao kernel ) mas se você estiver executando vários processos, então eles poderão usar mais no total (cada um pode usar até 3Gb, permitindo total memória) porque seus espaços de endereçamento virtuais 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, em vez de baseados em threads (vários threads em um processo compartilham os recursos de processos e, portanto, compartilham um único Espaço de endereçamento virtual 3Gb) como é mais comum no Windows (iniciar um novo processo no Windows é muito caro, então prefere-se threads na maioria dos ambientes Unix iniciando um novo processo isn ' consome muito mais recursos do que iniciar um novo encadeamento) . Não é muito útil para uma máquina que está executando apenas o SQL Server, por exemplo, já que será apenas um processo, portanto, atingirá o limite de 3Gb (algumas edições podem ser configuradas para serem reconhecidas pelo AWE mas não todos, e o recurso está programado para ser removido na próxima versão principal) .

Assim como os processos de 32 bits sendo capazes de usar mais de 3Gb no total, o sistema operacional poderá usar qualquer memória não utilizada para o armazenamento em cache, de modo que não seja desperdiçado, presumindo que os processos não abram arquivos de modo a dizer ao sistema operacional para não se incomodar em fazer isso.

    
por 01.04.2011 / 21:40
5

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

    
por 01.04.2011 / 21:07
3

Sorta, dependendo do que você quer dizer.

Assumindo o Windows ...

Se o sistema operacional for de 64 bits, por padrão, um processo de 32 bits recebe 2 GB de espaço de endereço virtual de 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 receberá 4 GB de espaço de endereço virtual endereçável pelo usuário. Em ambos os casos, o espaço de endereço virtual do kernel é o mesmo dos processos de 64 bits, já que é compartilhado em todos os processos. Também digno de nota, os processos de 64 bits que não definem o sinalizador IMAGE_FILE_LARGE_ADDRESS_AWARE também só têm acesso a 2 GB de espaço de endereço virtual do usuário.

As coisas que você ouve sobre flags de inicialização 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.

Isso tudo foi visto em detalhes insuportáveis nos Limites de memória da Microsoft para Windows lança página .

A resposta de David Spillett também aborda 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.

    
por 01.04.2011 / 22:13
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 SO e 2 GB disponíveis para o processo. Existe um switch que pode ser especificado para o sistema operacional (/ 3GB) que altera o valor reservado para o sistema operacional para apenas 1GB e permite que o processo tenha 3GB, MAS, apenas se o processo declarar como endereço grande informado nos sinalizadores do executável.

Em um sistema operacional de 64 bits, um processo de 32 bits receberá 4 GB, se for um endereço grande, de 2 GB.

Tudo isso é para processos não conscientes da AWE. Se o processo é capaz de usar o AWE, então, como outros já disseram, ele pode 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, ele tem problemas de compatibilidade e foi desativado no XP por um dos service packs, portanto, está disponível apenas nas versões do sistema operacional do servidor.

    
por 01.04.2011 / 21:52