Вы находитесь на странице: 1из 5

Como funciona a Memória Virtual?

Por GABRIEL GUGIK em https://www.tecmundo.com.br/internet/2190‐como‐funciona‐a‐memoria‐virtual‐.htm

As tecnologias utilizadas no mundo da computação se desenvolvem cada vez mais, fazendo


com que as aplicações exijam cada vez mais recursos do sistema. Consequentemente, a
quantidade de memória requisitada também aumenta na mesma proporção.

Na maioria dos computadores, a quantidade de memória RAM instalada por padrão não dá
conta de rodar sozinha as mais importantes aplicações (navegador, suíte de
criação, comunicadores instantâneos) ao mesmo tempo. Por esse e outros motivos, o
mecanismo de Memória Virtual foi desenvolvido, visando compartilhar a RAM de maneira
eficiente entre os programas. Logo, sua importância para a computação é inegável,
principalmente por aproveitar ao máximo o uso da RAM.

Antes de falar sobre a memória virtual em si, é importante rever alguns conceitos relacionados
ao modo como os programas são armazenados na memória.

Como os programas são armazenados na memória física?


Ao contrário do que muitas pessoas pensam, os programas ficam divididos em vários pequenos
pedaços na memória física e não de forma contínua. Por exemplo, a tabela abaixo demonstra
um exemplo de como as aplicações Firefox, Skype e Photoshop poderiam estar presentes em
uma memória RAM de 8 posições:

Como é possível observar, as posições são


ocupadas da seguinte forma:

Apesar da memória ser dividida em pequenos pedaços, cada programa é enganado pelo sistema
operacional, pensando que a memória é contínua e exclusiva só para ele. Isso acontece por
causa do mecanismo de Memória Virtual, que consiste em criar tabelas que relacionam posições
virtuais e reais da RAM para uma mesma aplicação. Por exemplo, o layout de memória (muito
simplificado) que o Firefox enxerga seria algo como o mostrado abaixo:
Olhando a tabela acima, o Firefox enxerga a memória de forma contínua (posições de 0 a 2)
, enquanto a RAM trabalha de forma dividida em pequenos pedaços. Como é possível notar, a
ordem dos dados não precisa ser a mesma, visto que a posição virtual 1 corresponde à real 4, e
a posição virtual 2 corresponde à real 2.

Memória Virtual e Paginação


A memória virtual foi um dos mecanismos mais interessantes criados até hoje no mundo da
computação, fazendo com que programas compartilhem a RAM do sistema, pensando que
possuem toda a memória disponível para uso próprio. Esse conceito engloba e utiliza vários
outros menores, como cache de disco, paginação e tabela de páginas, os quais estão explicados
logo abaixo:

Limitação da Memória Física e o Uso de cache de disco


Sem o uso da memória virtual e da cache de disco, seria comum o fato da RAM acabar muito
rápido, pois as aplicações necessitariam mais espaço do que o disponível. Por exemplo, suponha
um computador com 512 de RAM rodando o Windows Vista e o Firefox. Por padrão, o Vista
sozinho já ocupa aproximadamente 500 MB e o Firefox 100 MB. Fazendo os cálculos, é possível
perceber que os duas aplicações juntos já estouram a quantidade de RAM total (600 > 512). A
solução mais natural é o uso da cache de disco, deixando armazenado na memória principal
somente os trechos mais importantes do programa, enquanto que o resto da aplicação fica no
próprio disco HD( também chamado de memória secundária).

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 não está sendo editado (bb.doc) não precisa
estar na memória principal a todo momento. Simplificando bastante, é mais ou menos isso que
acontece, o documento editado (aa.doc) fica armazenado na RAM e o não editado (bb.doc) na
cache do disco.

Para tornar mais eficiente seu gerenciamento, os dados


são armazenados na memória em blocos, os quais são chamados Páginas de Memória. Logo,
continuando com o mesmo exemplo, a página de memória que contem os dados do documento
aa.doc ficaria na RAM, enquanto que a página do bb.doc estaria somente no disco. Cada
documento pode ter uma ou mais páginas de memória, o que implica no fato de que uma mesma
aplicação possui muitas delas ao mesmo tempo.
No exemplo acima, com a página do bb.doc somente no disco,
a RAM fica livre para armazenar dados mais importantes de outros programas no espaço 3. Este
é o conceito de cache de disco, utilizado na implementação da memória virtual.

Sistema de paginação de Memória


Até o exato momento, vimos os principais conceitos sobre memória virtual:

 A memória física é compartilhada por várias aplicações ao mesmo tempo;

 Cada programa enxerga uma versão virtual própria da memória, não correspondendo ao
modo real;
 Os programas não podem ser carregados de maneira completa na RAM, portanto, é
necessário armazenar parte deles na memória primária e outra parte na secundária,
através do mecanismo de páginas.

Depois de apresentados os conceitos acima, a paginação de memória é nada mais que a junção
de todos eles. Neste mecanismo, cada programa possui uma tabela de páginas, a qual informa
a posição exata de um página de memória qualquer ( na RAM ou no Disco). Em outras palavras,
a tabela de páginas é a memória virtual que o programa enxerga. Para entender esses conceitos
de forma mais palpável, vamos elaborar um exemplo bastante simplificado de sua organização.

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. Além disso, suponha também que cada
um dos documentos possui uma página de memória específica, com o mesmo nome do
arquivos. Por motivos de simplificação, vamos usar uma RAM que armazena 8 páginas.
Continuando, as páginas aa.doc, ee.doc e gg.doc estão na memória, enquanto que as demais
estão no disco. Logo, o mecanismo de paginação e Memória Virtual pode ser organizado da
seguinte maneira:

Na tabela acima, podemos observar que as páginas do Word estão dividindo espaço na RAM
com outras pertencentes a aplicações como o Skype e o Firefox. A maioria dos sistemas
operacionais reserva espaço no disco para efetuar a cache de disco durante a sua própria
inicialização. Normalmente esta é uma região especial, não compartilhada com os demais
arquivos armazenados no HD. No Windows, é possível reservar este espaço em qualquer
partição já existente. Já no Linux, é necessário criar uma partição especial, chamada de Swap.

Substituição de páginas na Memória


Finalizando esta matéria, vamos falar sobre o mecanismo de substituição de páginas. Quando
um programa necessita trabalhar com uma página que não está na RAM, acontece o que
chamamos de Falta de Página. Deste modo, ele procura um espaço livre e passa a utilizá-lo.
Caso toda a RAM esteja lotada, é necessário efetuar a famosa troca de páginas, que faz com
que a nova página saia do disco e vá para memória, do mesmo modo que alguma outra presente
lá saia da memória e volte para o disco. Existem vários métodos de escolher qual página 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 operação ( uma única
tabela se as páginas forem da mesma aplicação), devem ser atualizadas coma as novas
posições de memória das páginas. Este processo é realizado milhares de vezes por segundo,
por vários programas ao mesmo tempo.

Pequenos travamentos nas Aplicações

Sabe quando você está rodando alguma aplicação ou jogo pesado e pequenos travamentos
ocorrem constantemente? Existem muitas possibilidades que o problema seja ocasionado por
“Thrashing”, ou seja, muitas páginas de memória precisam ser substituídas na mesma hora,
confundindo o sistema e travando momentaneamente a aplicação. Uma das principais maneiras
de resolver este problema é adicionar mais memória RAM ao computador.
 

Вам также может понравиться