Entendendo o gerenciamento de memória no Linux

Este artigo visa explicar de forma teórica como funciona o processo de gerenciamento de memória no sistema operacional Linux.

[ Hits: 65.868 ]

Por: Silvio Alex de Lima em 22/10/2007


Introdução a memória RAM



Primeiramente gostaria de afirmar a todos que sou novo no mundo Linux e sou plenamente a favor do compartilhamento do conhecimento, assim fazendo um país melhor para todos. É com muito prazer que estou fazendo esse primeiro tutorial e espero que tenha paciência, pois é muito difícil não errar na primeira vez. Bem, vamos deixar de conversar e pôr a mão na massa. :-)

A memória RAM, como o próprio nome já diz, (Random Access Memory) memória de acesso aleatório, é uma memória volátil, isto é, quando se é cortada a energia ela perde os dados, diferentemente de outros dispositivos de armazenamento de massa (HDs, CDROMs, PEN DRIVES e etc), além também de ter a capacidade bem reduzida diante desses dispositivos. Então você deve estar se perguntando: "Então porque utilizar esse tipo de memória?". A resposta para essa pergunta está logo a diante.

O processador é o dispositivo mais rápido em um sistema computacional, havendo assim uma diferença muito grande entre ele e outros dispositivos de armazenamento de massa, como HDs, CDROMs, PEN DRIVERS e etc. Então se houvesse a comunicação direta entre o processador e esses dispositivos, haveria uma espécie de gargalo, pois esses dispositivos não conseguiriam acompanhar o ritmo do processador. Diante disso foi necessário criar um tipo de memória que fizesse essa ligação e que fosse capaz de se aproximar mais da velocidade do processador (embora a memória RAM seja muito rápida, nunca ela conseguirá alcançar a velocidade do processador. Essa memória se chamou de memória RAM. Depois que ela apareceu diminuiu bastante o gargalo, trazendo assim o aumento da performance do computador.

Memória RAM no Linux

A memória física no Linux é a memória RAM propriamente dita (os módulos de memória). Já a área de troca é um espaço ou partição que geralmente é criada no HD que serve para desempenhar a função da memória, caso exista falta de espaço na memória RAM, evitando assim a perda drástica de desempenho. A união das duas formam memória virtual.

No Linux a memória funciona da seguinte maneira, processos que estão em execução tem prioridade na memória, quando termina um processo e se tiver espaço na memória, ficam resíduos desse processo na memória para uma futura volta desse processo ser mais rápida. Caso essa memória RAM esteja lotada com processos que estão em execução, aí começa a utilização da memória SWAP (troca). Siga os exemplos abaixo que você ira entender:

Digamos que você está com 64 MB de memória RAM e uma SWAP (área de troca) de 200 MB.

Carrego um processo que utiliza espaço de 12 MB e outro de 4 MB, após terminar os processos ficarão resíduos na memória para que futuramente sejam carregado mais rapidamente esses processos.

Carrego agora 3 processos, cada um com 20 MB de memória, após ser terminado um processo ficarão resíduos somente do que sobrou de espaço, pois ele prioriza os processos que estão em execução.

Pegando o exemplo anterior, com os 3 processos em execução, executo mais 1 de 20 MB, após verificar que a memória RAM está cheia, ele começa a utilizar a memória de troca (SWAP).

Verificando a memória

Para verificar como está sendo o uso da memória no Linux utiliza-se o comando:

$ free -m

Esse comando mostrará algo assim:

total   used    free   shared   buffers   cached
Mem:    250     246         4         0        1
-/+ buffers/cache:   183   67
Swap:   564     12        552

Na linha Mem é mostrada a memória física, em -/+ buffers/cache são mostrados somente os processos que estão em execução e quanto tem disponível, ignorando os resíduos de outros processos e em SWAP é mostrada a área de troca usada.

   

Páginas do artigo
   1. Introdução a memória RAM
Outros artigos deste autor

Instalando placa wireless no OpenSUSE 11.0 (método genérico para qualquer placa)

Leitura recomendada

Microcode - Como atualizar o firmware do processador

Rumo a um pinguim móvel

Transmitindo dados para relógios Timex Datalink no GNU/Linux

Configurando o som na placa ASUS A7V8X-X

Linux acessando storage iSCSI

  
Comentários
[1] Comentário enviado por fulllinux em 22/10/2007 - 07:17h

Artigo muito, interesante... Porém eu mesmo gosto de controlar esse gerenciamento.

Parabéns silvioadl, bem-vindo ao mundo VOL... Espero ver outros artigos interesantes iguais a esses de sua autoria!

[2] Comentário enviado por an_drade em 22/10/2007 - 08:44h

Como introdução está legal... Esperava um pouco mais de detalhes... Mas a explicação está bem simples e clara.

Bom, não só o linux deixa resíduos na memória, mas como o Windows tb, e acredito que outros sistemas operacionais também. Esse "resíduo" é conhecido como cache e é muito útil.

[]'s
Carlos

[3] Comentário enviado por galmeida07 em 22/10/2007 - 10:30h

?comentario= Simples e direto! gostei! parabéns e bem vindo ao mundo livre!
Abraço

[4] Comentário enviado por franciscosouza em 22/10/2007 - 15:32h

Belo artigo :)
Nota dez ;D

[5] Comentário enviado por ciberglo em 22/10/2007 - 18:53h

Ih cara.
Tá certo no esclarecimento aí.

[6] Comentário enviado por jairofrasson em 22/10/2007 - 19:10h

Perfeito, o artigo ficou nota 10, parabéns.

[7] Comentário enviado por tuxSoares em 23/10/2007 - 01:37h

Por ser seu primeiro artigo ficou relativamente bom, uma crítica construtiva agora, na hora que estava começando a me empolgar com o assunto, simplesmente acaba o artigo. Como disse antes ficou bom para ser primeiro artigo.
Parabens pela iniciativa.

[8] Comentário enviado por chaplinux em 23/10/2007 - 11:11h

Vai um dica... o comando: top --help, não deixa a desejar no seu relatorio de processo e consumo da memoria.

[9] Comentário enviado por f_Candido em 23/10/2007 - 22:33h

Muito Bom. Parabéns.
Abraços

[10] Comentário enviado por josir em 24/10/2007 - 11:39h

A pergunta é, tem como limpar a memória residual para termos certeza de que um novo processo não utilizará o swap ? Ou então, como o SO decide se irá aproveitar a memória residual ou irá alocar um novo espaço de memória?

[11] Comentário enviado por silvioadl em 24/10/2007 - 11:59h

Olá amigo josir, com muito prazer respondo sua pergunta.
O essa memoria residual é apagada quando um programa que estara em execução entra na memoria. O linux trabalha dando prioridade a processos que estão em execução. Não precisando ter que limpar essa memoria residual, pois o linux faz esse trabalho por você.
Espero que tenha entendido... abraços....:-)

[12] Comentário enviado por joaopalmeida em 24/10/2007 - 19:12h

Olá amigo... muito bom seu artigo...

[13] Comentário enviado por lixux em 25/10/2007 - 14:57h

Olá amigo,

mas a memória residual do linux é ampla.. em contraposição o fato de estarmos lidando com elemento de alta periculosida nos implica que essa memória não pode ser corrompida.

em termos mais técnico isso significa que, ficando um bom tempo preso agente nao sabe se suporta a questão, porque o espaço que é requerido não fornece nenhum método ou atributo para destacar a solução no conceito de édipo.

Creio que seu mini-tutorial deve ser melhor implementado pois essa visão arcaica não pode imprimir nenhuma solução no cotidiano da raça humana, pois todos nós sabemos que a memória residual sempre será um resíduo e não poderá domesticar a máquina nem o ser humano em lugar algum.

Cabe a nós, seres de alta complexibilidade, essa atribuição para não deixarmos de fazer a nossa parte no âmbito político-sócio-cultural.

[14] Comentário enviado por fabiano_shark em 26/10/2007 - 22:01h

Realmente muito interessante!

[15] Comentário enviado por wagnermmazevedo em 29/10/2007 - 15:33h

Tenho um servidor SMTP+POP+IMAP+Webmail com 300 usuários e aproximadamente 150 GB de consumo de disco. Quando o servidor começa a trabalhar o consumo de memória vai a 2.95 GB de 3GB disponíveis, sendo a maioriar em cache ( por volta de 2.5GB ). Alguém faz idéia do que pode ser?
Grato.

[16] Comentário enviado por removido em 24/11/2007 - 08:43h

Ola amigo!!!

Legal seu artigo, principalmente a introducao...muita gente nao sabe a diferenca de velocidades de acesso a disco, memorias etc. E apenas complementando, o cache serve exatamente para que o processador pegue as informacoes mais rapidamente, evitando leitura na memoria!!!

Parabens e sucesso!!!

[17] Comentário enviado por silvioadl em 26/11/2007 - 09:58h

Muito obrigado pelo seu elogio, mas com relação ao cache que você esta se referindo no seu comentario, ele esta dentro do processador (nos computadores antigos a memoria cache era na propria placa mãe). Diferentemente do referido no meu artigo que fala do cache de disco, ou memoria SWAP. Flw amigo, e muito sucesso pra ti.

[18] Comentário enviado por removido em 26/11/2007 - 12:37h

Realmente amigo, acho que me expressei mal, o cache do processador tem uso diferente da memoria virtual.

Abraços!!!

[19] Comentário enviado por celox em 31/03/2009 - 12:57h

O artigo ficou bom mesmo...

mas quando falamos do GERENCIAMENTO de memória no linux deveríamos incluir os algoritmos que são responsáveis por gerenciar os processos na memória, como eles funcionam, prioridade e etc...

senti falta dessa parte mas a orientação está valendo e muitos aprenderão com ela.

Q Jesus abençoe a todos

[20] Comentário enviado por iltoncesar em 08/06/2010 - 08:31h

Sou novo por aqui tb, valewww pela explicação!!!!

[21] Comentário enviado por julianogaropa em 06/01/2011 - 11:16h

Nota 10!

[22] Comentário enviado por augustocolom em 08/01/2011 - 13:45h

Legal o artigo.
Valeu pelas dicas.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts