As aplicações de 32 bits em um kernel de 64 bits podem usar toda a memória?

3

Eu sei que o kernel de 32 bits pode usar PAE para alocar mais memória RAM para aplicativos com PAE (até 64GB), por isso imagino que se eu estiver executando aplicativos de 32 bits em um kernel de 32 bits eu posso usar todos os meus 24GB em um aplicativo (-que meu sistema operacional está usando ofc).

Mas e se eu estiver usando um kernel de 64 bits? Aplicativos de 32 bits (multilib) podem usar toda a minha memória lá também? Ou está limitado a 4 GB de novo?

    
por Cestarian 29.06.2014 / 22:50

1 resposta

4

Um processo de 32 bits pode acessar apenas cerca de 3 GB. (Pode ser menor, dependendo das opções de compilação do kernel.) Não importa se o kernel é de 32 ou 64 bits - isso afeta somente a capacidade de executar aplicativos de 64 bits. A PAE é uma maneira de permitir mais memória física, mas não altera o tamanho da memória virtual vista por cada processo. Isso é basicamente o que “32 bits” significa: um ponteiro usa 32 bits, então existem apenas 2 32 endereços virtuais possíveis, então cada processo pode acessar no máximo 2 32 B = 4 GB O Linux reserva 1 GB para uso do kernel durante as chamadas do sistema, o que deixa 3 GB.

Um aplicativo pode usar mais memória se executar vários processos.

    
por 30.06.2014 / 02:03