Pergunta

Eu estou usando 32 bit RHEL 4.4 em hardware baseado AMD64. Aqui é a saída do uname -a

$ uname -a
Linux zulu 2.6.9-42.0.10.ELsmp #1 SMP Fri Feb 16 17:17:21 EST 2007 i686 athlon i386 GNU/Linux

Eu tenho 8Gigs de memória instalada neste sistema, OS sendo 32 bits Eu diria que o meu sistema não será capaz de fazer uso de memória cheia 8GB. Mas quando eu executar top , vejo o seguinte: -

Mem:   8309168k total,  8292028k used,    17140k free,     7096k buffers

Assim, top é capaz de ver todos 8GB de memória.

Se eu instalar 32 bit WinXP na mesma máquina, gerenciador de tarefas só mostra 3 GB como disponível.

A minha pergunta é - Como é de 32 bits do sistema operacional capaz de ver 8GB de memória? Quer isto dizer que as minhas aplicações serão capazes de usar maior espaço de endereço? E por que é a diferença entre 32 bits Linux e 32 bit WinXP?

Obrigado!

Foi útil?

Solução

Seu sistema Linux suporta Physical Address Extension .

Outras dicas

Existem diferentes 'níveis' de memória. O que é impossível, qualquer que seja o sistema operacional, é o endereço mais de 4GB em um processo, uma vez que seus ponteiros são muito pequenos para mais do que isso - essa é a limitação fundamental de 32 bits w.r.t memória. Em Linux e Windows, e mais 'tradicional' OSs eu acho, o espaço de endereçamento de 32 bits virtual é dividido em uma parte para o kernel e uma parte para o processo, para que você obtenha menos de 4 GB de conteúdo endereçável para cada processo.

Mas ainda assim, o sistema operacional pode usar mais de 4 Gb - por exemplo, ter 2-3 processos cada consumir 2 GB de memória. Mesmo 32 bits CPU pode endereçar mais de 4 GB de memória (no nível do hardware), mas no espaço de endereço virtual, você está sempre limitado pelo ponteiros seus 32 bits.

A velha coisa nova tem uma boa explicação sobre as diferenças entre espaço de endereço físico, espaço de endereço virtual e co: http://blogs.msdn.com/oldnewthing/archive/2004/08/18/216492.aspx

O método que permite isso é chamado de "PAE" (extensão de endereço físico). Seu processador é capaz de usar endereços 36bit internamente e seus suportes OS TI. Infelizmente, o Windows XP utiliza apenas PAE, a fim de apoiar o bit NX (No bit execução, causa uma exceção para ocorrer quando as tentativas de processador para executar o código de uma página marcado com este bit). suporte de 32 bits Linux kernels PAE.

Novas CPUs i386-compatíveis podem endereçar mais de 4 GB usando o modo PAE. Windows XP limita artificialmente o espaço de endereço de 4 GB, porque há muitos drivers de hardware mal escritos que assumem todos DMA é que será feito para a memória abaixo de 4 GB. Assim, cerca de 1 GB de espaço de endereço 4 GB é mapeado para hardware, o resto de RAM física. edições de servidor do Windows não tem essa limitação. Os kernel Linux que suporte PAE não limitar a memória também. Ambos suportam até 32GB, se bem me lembro.

A sua aplicação é limitada a algum lugar entre 2-3 GB de espaço de endereço, dependendo das opções do sistema operacional. Um aplicativo pode usar eficazmente RAM mais física do que por windowing partes da memória dentro e fora desse espaço de endereço, usando o endereço de janelas extensões ou arquivos de memória mapeada, por exemplo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top