Qual é a memória máxima que um processo de 64 bits pode consumir?

1

Eu sei que existe uma capacidade de hardware de 2 ^ 48 bits, e eu sei que não há muita limitação nativa das restrições de memória do aplicativo em geral pelo kernel, mas existe um limite superior da memória que um aplicativo pode consumir em geral além de 2 ^ 48 porque esse é o número de canais disponíveis nos soquetes de DIMM?

Para referência, Redmond limita seus produtos a ~ 2TB na maioria dos produtos de servidor.

    
por jcolebrand 27.09.2011 / 02:13

2 respostas

4

Por definição (pelo menos, por uma definição comum), um processo de 64 bits pode ver apenas 2 64 bytes de memória. Na prática, a maioria dos sistemas operacionais limita cada processo a um pouco menos do que o espaço de endereçamento disponível, de modo que o kernel pode manipular valores 64 que podem ser ponteiros para a memória do kernel, memória de processo ou memória do dispositivo. Um limite de 4 EB ou 8 EB é comum.

Bem antes disso, você provavelmente atingirá um limite dependente da arquitetura. Em particular, o mapa de memória de um processo deve caber na MMU da máquina, e o hardware tende a ter apenas tantos bits quanto necessário . As MMUs vêm com até quatro níveis de tabelas de páginas, e o Linux (entre outros) pode suportar todos os quatro: um PGD (página diretório global ) listando PUDs  (diretórios superiores da página) listando PMDs (diretórios de nível médio da página) listando PTEs (entradas da tabela de páginas). Já que cada nível de indireção é mais um passo para assumir a maioria das desreferências de ponteiro, sistemas. É comum que o tamanho de uma página seja de 4kB (2 1242 bytes endereçáveis, no entanto a maioria das arquiteturas de 64 bits pode ser configurada para tabelas de páginas maiores, por isso é difícil dar qualquer tipo de resposta geral para a questão de quão alto você pode ir.

Observe que o limite de endereço por processo é independente da quantidade de memória física que pode existir na máquina. Por exemplo, o número de canais disponíveis nos soquetes DIMM em um PC é um limite teórico para quanta RAM você pode ter nesse PC (embora a largura do barramento de memória da CPU seja normalmente o fator limitante). Não tem relação com quanta memória ou quanto espaço de endereçamento um processo pode consumir (a memória pode ser trocada ou compartilhada entre vários nós de um NUMA máquina multiprocessador).

    
por 28.09.2011 / 02:46
2

O máximo teórico é limitado pela segmentação de memória usada na CPU, por exemplo O X86-64 usa um mecanismo absoluto (os segmentos começam em 0 e têm uma capacidade de 2 64 ), mas o próprio SO pode impor limites artificiais no tamanho do processo.

    
por 27.09.2011 / 02:36

Tags