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

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

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

Responder1

Um processo de 32 bits tem um espaço de endereço 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ê tiver 2 endereços distintos de 32 , poderá 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 pode alocar apenas 1GB, 2GB ou 3GB de memória (o restante é reservado para o kernel quando ele processa chamadas do sistema). Esta é uma quantidade de memória virtual, não relacionada a qualquer divisão entre RAM, swap e arquivos mapeados.

Um kernel de 64 bits pode executar processos de 64 bits e também processos de 32 bits. Um processo de 64 bits pode endereçar até 2 64 bytes (16EB) em princípio. NoArquitetura x86_64, em parte devido ao design do x86_64MMUs, há atualmente uma limitação de 128 TB de espaço de endereço por processo.

Responder2

Os 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 criado. 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 alocaraté 128TiB.

informação relacionada