Aula05 - Como Funciona A Memória Virtual
Aula05 - Como Funciona A Memória Virtual
Aula05 - Como Funciona A Memória Virtual
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.
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.
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.
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.
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.