Quanta RAM pode um aplicativo alocar em sistemas Linux x86 de 64 bits?

3

É verdade que um único aplicativo não pode alocar mais de 2 GiBs, mesmo que o sistema tenha mais memória livre do GiBs ao usar um kernel Linux PAE de 32 bits x86? Este limite é afrouxado por kernels Linux x86 de 64 bits?

    
por Ivan 26.03.2012 / 01:48

2 respostas

5

Um processo de 32 bits tem um espaço de endereçamento de 32 bits, por definição: “32 bits” significa que os endereços de memória no processo têm 32 bits de largura e se você tem 2 32 endereços você pode endereçar no máximo 2 32 bytes (4GB). Um kernel Linux de 32 bits só pode executar processos de 32 bits. Dependendo das opções de compilação do kernel, cada processo só pode alocar 1 GB, 2 GB ou 3 GB de memória (o restante é reservado para o kernel quando estiver processando chamadas do sistema). Esta é uma quantidade de memória virtual, não relacionada a qualquer quebra entre arquivos RAM, swap e mmap.

Um kernel de 64 bits pode executar processos de 64 bits, bem como processos de 32 bits. Um processo de 64 bits pode endereçar até 2 64 bytes (16EB) em princípio. Na arquitetura x86_64 , em parte devido ao design de x86_64 MMU , há atualmente uma limitação para 128 TB de espaço de endereço por processo.

    
por 26.03.2012 / 02:14
5

Processos de 32 bits só podem alocar até 1, 2, 3 ou cerca de 4 GB, dependendo de qual divisão de memória foi escolhida quando o kernel de 32 bits foi construído. Processos de 32 bits em um kernel de 64 bits podem alocar cerca de 4 GB. Processos de 64 bits em um kernel x86-64 de 64 bits podem alocar até 128TiB .

    
por 26.03.2012 / 02:01