Você está na página 1de 3

Memria virtual uma tcnica que se utiliza da memria

secundria para produzir o efeito prtico de aumentar


significativamente o espao de endereamento disponvel aos
programas. Essa tcnica no depende do tamanho da memria
principal que continua sendo limitado para ser implementada. A
memria secundria (normalmente um disco rgido) passa a servir
como uma espcie de extenso da memria principal,
armazenando a maior parte dos programas e dados carregados para
execuo. memria principal so transferidas por vez apenas
algumas partes destes programas e dados, essenciais ao momento
pontual da execuo.
Deste modo, cria-se dois espaos de endereamento de memria: o
espao
de
endereamento
virtual
e
o
espao
de
endereamento real.
Endereos virtuais so os endereos gerados pelos compiladores
e linkers na implementao dos programas. Eles representam o
espao completo que os programas necessitam para serem
carregados, isto , o tamanho de memria que efetivamente ocupam.
No entanto, a memria real ou memria principal (RAM Random
Access Memory) pode ser bastante limitada, possuindo um espao
de endereamento real s vezes menor at mesmo que um nico
programa. Um endereo real corresponde a uma clula fsica de
endereamento presente na memria principal da mquina.
Obviamente, apenas parte das aplicaes carregadas no espao de
endereamento virtual poder ocupar a memria real num certo
instante. Por outro lado, somente os dados carregados na memria
principal so processados pela CPU. Como vrias aplicaes podem
estar sob execuo, concorrendo pela utilizao do processador, uma
soluo encontrada foi dividir o espao total de endereamento dos
programas em pequenos blocos de tamanho fixo, as chamadas
pginas de memria. A implementao dessa estratgia constitui o
mecanismo de paginao. Outra alternativa dividir o cdigo de
uma aplicao com base em critrios lgicos, ou seja, modularizando
o programa de acordo com a funo dos diversos trechos de cdigo
identificados.
Segmentao o nome que se d a esta segunda estratgia de
particionamento de cdigo, em que os segmentos gerados possuem
tamanhos independentes e variveis. Ambos os mecanismos so
importantes,
sobretudo
em
ambientes
multiusurios
e
multiprogramveis. Conforme o momento de execuo, parte dos
dados (working set) so transferidos temporariamente para a
memria principal a fim de serem processados, retornando memria
secundria quando solicitados pelo sistema operacional, o qual
responsvel pelo gerenciamento da memria.

Paginao

A tcnica denominada paginao utilizada na maioria dos sistemas


com memria virtual. Como sabemos, os endereos gerados pelos
programas so denominados endereos virtuais e constituem o
espao de endereamento virtual. Em computadores que no tem
memria virtual, os endereos virtuais so idnticos aos endereos
fsicos. Por outro lado, quando usamos memria virtual estes
endereos diferem. Portanto, o endereo gerado pelo programa no
pode ser colocado diretamente no barramento do sistema para
acessar uma posio qualquer de memria. Assim, a MMU mapeia os
end. virtuais em fsicos. A memria fsica dividida em blocos de
tamanho fixos denominados molduras de pginas (page frames). J a
memria lgica dividida em blocos de tamanho fixos denominados
pginas (pages). As pginas e as molduras de pginas so sempre do
mesmo tamanho.
Quando um programa tenta usar uma pgina virtual que no est
mapeada gerada uma interrupo da CPU para o sistema
operacional a fim de buscar esta pgina na memria. Esta interrupo
(trap) denominada falta de pgina (page fault). As aes
desencadeadas so: o sistema operacional escolhe uma moldura de
pgina (page frame) pouco usada e a salva em disco.
Em seguida, carrega a pgina virtual referenciada pela instruo na
moldura de pgina que foi liberada. Feito isso o sistema operacional
pode reinicializar a instruo causadora da interrupo.
Segmentao
O esquema de paginao foi criado para facilitar o gerenciamento da
memria. Contudo, os programadores e compiladores no so
capazes de ver a memria lgica dividida em pginas, mas sim em
segmentos. Dependendo do sistema a granularidade desses
segmentos pode ser diferente.
Por exemplo, comumente verificamos que um programa pode ser
segmentado em: cdigo, dados alocados dinamicamente, dados
alocados estaticamente e pilha de execuo. No entanto, alguns
sistemas enxergam cada objeto ou mdulo como se fosse um
segmento.
Quando o sistema utiliza o esquema de segmentao, o endereo
lgico tambm dividido em: nmero do segmento e deslocamento
dentro do segmento (semelhante ao esquema de paginao). Os

segmentos no necessariamente precisam ter o mesmo tamanho. No


entanto, existe um tamanho mximo definido para os segmentos.

Você também pode gostar