You are on page 1of 12

Fonte: http://www.tecmundo.com.br/2190-como-funciona-a-memoria-virtual.

htm

Como funciona a Memria Virtual?


cada ano que passa, as tecnologias utilizadas no mundo da
computao se desenvolvem cada vez mais, fazendo com que os
aplicativos

exijam

cada

vez

mais

recursos

do

sistema.

Consequentemente, a quantidade de memria requisitada tambm


aumenta

na

mesma

proporo.

Em grande parte dos computadores, a quantidade dememria


RAM instalada por padro no d conta de rodar sozinha os mais
importantes aplicativos ( navegador, sute de criao, comunicadores
instantneos)

ao mesmo tempo. Por esse e outros motivos, o

mecanismo de Memria Virtual foi desenvolvido, visando compartilhar


a RAM de maneira eficiente entre os programas. Logo, sua importncia
para a computao inegvel, principalmente por aproveitar ao mximo
o

uso

da

RAM.

Neste artigo, vamos focar no modo como esse mecanismo da Memria


Virtual

funciona

na

atualidade.

Apesar

dos

vrios

exemplos

simplificados durante o texto, o assunto de modo geral um pouco mais


complexo que o normal, exigindo uma ateno extra durante a leitura.
Antes de falar sobre a memria virtual em si, importante rever alguns
conceitos relacionados ao modo como os programas so armazenados
na

memria.

Como os programas so armazenados na memria


fsica?
Ao contrrio do que muitas pessoas pensam, os programas ficam
divididos em vrios pequenos pedaos na memria fsica e no de

forma contnua. Por exemplo, a tabela abaixo demonstra um exemplo


de como os aplicativosFirefox, Skype e Photoshop poderiam estar
presentes em uma memria RAM de 8 posies:

Como possvel observar, as posies so ocupadas da seguinte


forma:

Apesar da memria ser dividida em pequenos pedaos, cada programa


enganado pelo sistema operacional, pensando que a memria
contnua e exclusiva s para ele. Isso acontece por causa do
mecanismo de Memria Virtual, que consiste em criar tabelas que
relacionam posies virtuais e reais da RAM para um mesmo aplicativo.

Por exemplo, o layout de memria(muito simplificado) que o Firefox


enxerga seria algo como o mostrado abaixo:

Olhando a tabela acima, o Firefox enxerga a memria de forma


contnua (posies de 0 a 2) , enquanto a RAM trabalha de forma
dividida em pequenos pedaos. Como possvel notar, a ordem dos
dados no precisa ser a mesma, visto que a posio virtual 1
corresponde real 4, e a posio virtual 2 corresponde real 2.

Memria Virtual e Paginao


A memria virtual foi um dos mecanismos mais interessantes criados
at hoje no mundo da computao, fazendo com que programas
compartilhem a RAM do sistema, pensando que possuem toda a
memria disponvel para uso prprio. Esse conceito engloba e utiliza
vrios outros menores, como cache de disco, paginao e tabela de
pginas, os quais esto explicados logo abaixo:

Limitao da Memria Fsica e o Uso de cache de disco


Sem o uso da memria virtual e da cache de disco, seria comum o
fato da RAM acabar muito rpido, pois os aplicativos necessitariam
mais espao do que o disponvel. Por exemplo, suponha um
computador com 512 de RAM rodando o Windows Vista e o

Firefox. Por padro, o Vista sozinho j ocupa aproximadamente 500


MB e o Firefox 100 MB. Fazendo os clculos, possvel perceber
que os dois aplicativos juntos j estouram a quantidade de RAM total
(600 > 512). A soluo mais natural o uso da cache de disco,
deixando armazenado na memria principal somente os trechos mais
importantes do programa, enquanto que o resto do aplicativo fica no
prprio disco HD( tambm chamado de memria secundria ).
Por exemplo, suponha que dois arquivos do Microsoft Word (aa.doc e
bb.doc) estejam abertos ao mesmo tempo, mas que somente o
aa.doc esteja sendo editado no momento. Se voc pensar um pouco,
poder observar que o documento que no est sendo editado
(bb.doc) no precisa estar na memria principal a todo momento.
Simplificando bastante, mais ou menos isso que acontece, o
documento editado (aa.doc) fica armazenado na RAM e o no editado
(bb.doc) na cache do disco.

Para tornar mais eficiente seu gerenciamento, os dados so


armazenados na memria em blocos, os quais so chamados Pginas
de Memria. Logo, continuando com o mesmo exemplo, a pgina de
memria que contem os dados do documento aa.doc ficaria na RAM,
enquanto que a pgina do bb.doc estaria somente no disco. Cada
documento pode ter uma ou mais pginas de memria, o que implica
no fato de que um mesmo aplicativo possui muitas delas ao mesmo
tempo.

No exemplo acima, com a pgina do bb.doc somente no disco, a RAM


fica livre para armazenar dados mais importantes de outros programas
no espao 3. Este o conceito de cache de disco, utilizado na
implementao da memria virtual.

Sistema de paginao de memria


At o exato momento, vimos os principais conceitos sobre memria
virtual:

A memria fsica compartilhada por vrios aplicativos ao mesmo


tempo;

Cada programa enxerga uma verso virtual prpria da memria, no


correspondendo ao modo real;

Os programas no podem ser carregados de maneira completa na


RAM, portanto, necessrio armazenar parte deles na memria
primria e outra parte na secundria, atravs do mecanismo de pginas.
Depois de apresentados os conceitos acima, a paginao de memria
nada mais que a juno de todos eles. Neste mecanismo, cada
programa possui umatabela de pginas, a qual informa a posio
exata de um pgina de memria qualquer ( na RAM ou no Disco). Em
outras palavras, a tabela de pginas a memria virtual que o programa

enxerga. Para entender esses conceitos de forma mais palpvel, vamos


elaborar um exemplo bastante simplificado de sua organizao.
Suponha que 8 arquivos estejam abertos no Word, possuindo os
seguintes nomes: aa.doc, bb.doc, cc.doc, dd.doc, ee.doc, ff.doc, gg.doc
e hh.doc. Alm disso, suponha tambm que cada um dos documentos
possui uma pgina de memria especfica, com o mesmo nome do
arquivos. Por motivos de simplificao, vamos usar uma RAM que
armazena 8 pginas.

Continuando, as pginas aa.doc, ee.doc e gg.doc esto na memria,


enquanto que as demais esto no disco. Logo, o mecanismo de
paginao e Memria Virtual pode ser organizado da seguinte
maneira:

Na tabela acima, podemos observar que as pginas do Word esto


dividindo espao na RAM com outras pertencentes a aplicativos como
o Skype e o Firefox. A maioria dos sistemas operacionais reserva
espao no disco para efetuar a cache de disco durante a sua prpria
inicializao. Normalmente esta uma regio especial, no
compartilhada com os demais arquivos armazenados no HD. No
Windows, possvel reservar este espao em qualquer partio j
existente. J no Linux, necessrio criar uma partio especial,
chamada de Swap.

Substituio de pginas na memria


Finalizando esta matria, vamos falar sobre o mecanismo de
substituio de pginas. Quando um programa necessita trabalhar
com uma pgina que no est na RAM, acontece o que chamamos de
Falta de Pgina. Deste modo, ele procura um espao livre e passa a
utiliz-lo. Caso toda a RAM esteja lotada, necessrio efetuar a
famosa troca de pginas, que faz com que a nova pgina saia do
disco e v para memria, do mesmo modo que alguma outra presente
l saia da memria e volte para o disco. Existem vrios mtodos de
escolher qual pgina ser expurgada de l, entre os mais usados, est
o que determina que o conjunto de dados que est h mais tempo
sem ser acessado deve dar lugar.
Consequentemente, as tabelas de ambos os programas envolvidos na
operao ( uma nica tabela se as pginas forem do mesmo
aplicativo), devem ser atualizadas coma as novas posies de
memria das pginas. Este processo realizado milhares de vezes
por segundo, por vrios programas ao mesmo tempo.

Pequenos travamentos em aplicativos


Sabe quando voc est rodando algum aplicativo ou jogo pesado e
pequenos travamentos ocorrem constantemente? Existem muitas
possibilidades que o problema seja ocasionado por Thrashing, ou
seja, muitas pginas de memria precisam ser substitudas na mesma
hora, confundindo o sistema e travando momentaneamente o
aplicativo. Uma das principais maneiras de resolver este problema
adicionar mais memria RAM ao computador.

Fonte:
gerenciamento/765467/

http://www.hardware.com.br/comunidade/funciona-

Como funciona o gerenciamento de memria no Linux

O Linux tem uma forma bastante interessante de gerenciar a memria. O sistema


de fato no necessita de muita memria para sua operao e conforme os
programas vo sendo abertos, mais memria vai sendo alocada de forma mais
eficiente. O sistema lida bem em casos de sobras de memria, utilizando os
MBytes livres dos mdulos como cache de disco. Cache de disco so pores
da memria RAM usadas por arquivos e bibliotecas lidos do HD que tm uma
maior probabilidade de serem acessados, uma espcie de Prefetch, o que
melhora o desempenho do sistema. fcil comprovar a eficincia o cache de
disco: abra um programa como o Firefox ou o OpenOffice; o primeiro
carregamento demorado, certo? Agora feche o programa e abra-o novamente:
levou muito menos tempo, n? Esse recurso est presente tambm no Windows
e no Vista ele foi melhorado. Por isso no se assuste se no Ksysguard do KDE
voc verificar que sua memria RAM estiver quase que totalmente ocupada,
mesmo com poucos programas abertos: o cache de disco que est em ao
usando
parte
da
memria
livre
que
voc
dispe.
Alm do Ksysguard, temos o Monitor do sistema no Gnome como programas
grficos de monitoramento dos recursos do sistema. Via terminal temos o top e
o free. O top detalha os processos em execuo alm de outras informaes
como o estado dos processos, memria consumida por cada um, uptime do
sistema e recursos de memria. O free (o parmetro -m exibe as informaes
em MBytes) exibe informaes precisas sobre o uso dos recursos de memria
do sistema. Vamos ver ele na prtica, no meu caso tenho 2,25GB de RAM fsica,
2 GB de espao em disco para a partio SWAP e poucos programas abertos.
A
distribuio
usada

o
Debian
Etch
Kernel
2.6.18-4.

No momento que foi tirada esta SS, 591MB de memria fsica estavam sendo
utilizados, mas na verdade eu no tinha 591MB utilizados pelos programas
abertos e pelo sistema em geral. 347 MB estavam sendo cacheados, ou seja,
sendo usados para cache de disco (cached) e 51MB estavam sendo usado para

buffers de memria. Fazendo as contas, descontando os buffers e cache do


sistema, a memria utilizada para o uso e manuteno do funcionamento do
sistema
no
momento
era
de
193
MB:
591 (memria fsica utilizada) - 398 (buffers + cache) = 193 MB
Se eu abrir o Monitor do sistema do Gnome (um front-end para o comando top),
sero
reportados
193MB
em
uso
pelo
sistema.

Ao contrrio do Ksysguard, o Monitor do sistema do Gnome reporta a memria


em uso, no incluindo a memria utilizada como cache de disco.
Conforme mais memria requisitada, o sistema passa a abrir mo do cache de
disco e passa a mover arquivos e bibliotecas no usadas h algum tempo da
memria RAM para a memria virtual ou swap, liberando memria fsica para os

aplicativos. H um pequeno impasse no uso de memria SWAP no Linux. O


Swap visto com maus olhos por causa do Windows 98, que gerencia a memria
virtual de forma totalmente errdica. No 98, mesmo com memria fsica sobrando
o sistema teima em fazer swap, que feito no arquivo Win386.swp, prejudicando
o desempenho, j que a leitura dos dados da memria SWAP (que feita em
um arquivo no HD no caso do Windows) mais morosa do que a leitura na
memria RAM. Era possvel corrigir essa deficincia com a instruo
"ConservativeSwapfileUsage=1" no System.ini, mas mesmo assim o Windows
98 (e Me) pssimo para gerenciar a memria. Na famlia NT o gerenciamento
de memria mais eficiente e o uso do arquivo de SWAP mais racional, alis
no Windows NT4/2000/XP/2003/Vista e 2008 o arquivo de paginao
(pagefile.sys) utilizado tambm para uso interno do sistema, como as
informaes
de
despejo
de
memria.
O Linux possui algoritmos refinados que administram o uso de memria SWAP
somente quando necessrio, especialmente no Kernel 2.6. Numa mquina com
512MB ou mais o uso de SWAP no requisitado o tempo todo, o que no
acontece numa mquina com 256 MB. Mesmo assim em algumas distros fazem
o uso do SWAP em mquinas com fartura de memria, mesmo que em pequena
quantidade. No caso dos dados movidos para o SWAP sejam de repente
requisitados, haver uma pequena demora na leitura, pois como j dito, a leitura
no HD mais demorada do que o acesso na memria fsica.
Vou transcrever aqui um trecho de um dos livros do Carlos E. Morimoto que
ensina como administrar o uso do SWAP apenas quando necessrio.
"...
Ainda assim (ao usar uma distribuio com o Kernel 2.6), voc pode configurar
o comportamento do sistema em relao memria SWAP atravs de um
parmetro do Kernel, definindo atravs do arquivo "/proc/sys/vm/swappiness".
Este arquivo contm um nmero de 0 a 100, que determina a predisposio do
sistema a usar swap. Um nmero baixo faz com que ele deixe para usar swap
apenas em situaes extremas (configurao adequada a micros com muita
RAM), enquanto um nmero mais alto faz com que ele use mais swap, o que
mantm mais memria RAM livre para uso do cache de disco, melhorando o
desempenho
em
micros
com
pouca
memria.
Se voc tem um micro com 1 GB de RAM e quer que o sistema quase nunca use
swap,
use:
#

echo

"20"

>

/proc/sys/vm/swappiness

Em micros com 256 MB ou menos, aumentar o uso de swap mantm mais


memria disponvel para abrir novos aplicativos e fazer cache de disco. O
programa que est sendo usado no momento e novos programas abertos ficam
mais rpidos mas, em troca, programas minimizados a muito tempo so movidos

para a swap e demoram mais para responder quando reativados. Para aumentar
o
uso
de
swap,
use:
#

echo

"80"

>

/proc/sys/vm/swappiness

Para tornar a alterao definitiva, adicione o comando em algum arquivo de


inicializao do sistema, como o "/etc/rc.d/rc.local" ou "/etc/init.d/bootmisc.sh".
..."
Linux

Ferramentas

Tcnicas

Edio

pg

112.

Pessoalmente, recomendo o uso de uma partio SWAP, mesmo que seja de


512MB para uso em casos de falta de memria, principalmente para as
mquinas usadas em aplicaes pesadas como edio de udio, vdeo e
imagem. Claro que em situaes de fartura, digamos a partir de 1GB, a partio
de SWAP pode ter uns 256 a 512MB reservados. Nos casos de mquinas que
possuam menos de 512MB, recomendo o uso de SWAP com tamanho a partir
de 1GB para que o sistema tenha para onde correr no caso de falta de memria
fsica, j que na falta de memria RAM para os aplicativos e a ausncia de uma
partio SWAP, o sistema no ter para onde recorrer e os programas
comearo a serem fechados por falta de memria; na pior das hipteses o
travamento
do
sistema
nestas
condies

inevitvel.
Caso voc tenha se arrependido em no ter criado uma partio SWAP e agora
se v numa situao delicada, possvel criar um arquivo de SWAP na raiz do
sistema. Digamos que voc queira 512MB de memria SWAP, abra um terminal
como
root
e
digite:
#
#
#

dd

if=/dev/zero

of=/swap
mkswap
swapon

bs=1024

count=524288
/swap
/swap

O valor de "count" no precisa ser exato (524288 equivalem a 512MB), poderia


ser o valor 500000 (500000 = ~488MB). Esta uma soluo temporria e menos
eficiente, j que estamos criando um arquivo de swap que funciona de forma
semelhante ao que encontrado no Windows, embora de forma mais eficiente.
Uma partio SWAP j organizada especificamente para a tarefa de memria
virtual.

You might also like