Você está na página 1de 25

Memria Virtual

Prof. M.Sc. Bruno R. Silva


CEFET-MG Campus VII
Memria Virtual

Permitir o compartilhamento seguro e eficiente da memria entre vrios


programas
Remover os transtornos de programao de uma quatidade pequena e
limitada de memria principal.
Quatro dcadas aps a sua inveno, o primeiro motivo ainda o que
predomina.
A memria virtual nos permite compartilhar eficientemente o processador e
a memria principal.
Precisamos proteger os programas uns dos outros
Um programa pode ler e escrever as partes da memria principal atribudas a
ele.
Memria Virtual

A memria virtual implementa a traduo do espao de endereamento de


um programa para os endereos fsicos.
Um bloco de memria virutal chamado de PGINA.
Uma falha de memria virtual chamada de FALTA DE PGINA
O processador produz um endereo virtual que traduzido para um
endereo fsico por uma combinao de hardaware e software.
Memria Virtual

Na memria virtual, um endereo desmembrado em um nmero de


pgina virtual e um offset de pgina.
Memria Virtual
Uma falta de pgina tem um altssimo custo = milhes de ciclos de clock
para ser processada.
A memria principal cerca de 100.000 vezes mais rpida que o disco
O alto custo leva a vrias decises importantes:
Pginas devem ser grandes o suficiente para tentar amortizar o longo tempo de
acesso.
Tamanhos de 4KB a 16KB so comuns
Em geral, usa-se o posicionamento totalmente associativo das pginas na
memria.
As faltas podem ser tratadas no nvel de software, pois o overhead ser
pequeno quando comparado ao tempo de acesso ao disco.
O software pode utilizar algoritmos inteligentes para escolher como
posicionar as pginas.
Sistema de memria virtual utiliza esquema write-back.
Memria Virtual
Posicionando uma pgina e a encontrando novamente
Quando houver necessidade de substituir uma pgina, o S.O. Pode utilizar
sofisticados algoritmos e estruturas de dados para monitorar o uso das pginas
E assim escolher substituir uma pgina que no ser necessria por
longo tempo.
A dificuldade de usar um esquema totalmente associativo est em localizar uma
entrada.
Uma pesquisa sequncia impraticvel.
Nos sistemas de memria virtual, usamos uma TABELA DE PGINAS para
indexar a memria. Ela reside na prpria memria.
Cada programa possui sua prpria tabela de pginas que mapeia o espao de
endereamento virtual deste programa para a memria principal
Um registrador de tabela de pginas includo no hardware para apontar para o
incio da tabela de pginas que est em uso atualmente.
Por enquanto considere que a tabela de pginas esteja em uma rea fixa e
contgua da memria
Cada entrada na tabela de pginas contm o nmero da pgina fsica para a
respectiva pgina virtual, SE a pginas estiver na memria.
Memria Virtual

Estado do processado:
Tabela de pginas
Contador de programas
Registradores
Se quisermos permitir que outro programa utilize o processador, precisamos
salvar o estado atual.
Ao restaurar este estado, possvel reiniciar o programa interrompido do ponto
onde ele parou.
Frequentemente nos referimos a esse estado como um processo.
processo
O processo considerado ativo quando est de posse do processador, caso
contrrio ele considerado inativo
O Sistema operacional o responsvel pelo escalonamento dos processos,
processos
efetuando a troca de contexto (mudana de estado) quando necessria
Quando h uma troca de contexto, o S.O. Simplesmente carrega o
registrador de tabela de pginas, fazendo-o apontar para a tabela de
pginas que ele quer tornar ativa.
Memria Virtual

Cada processo possui sua prpria tabela de pginas


Diferentes processos usam o mesmo endereo virtual
O S.O. o responsvel por alocar a memria fsica e atualizar a tabela de
pginas, de modo a evitar colises no espao de endereamento virtual dos
processos.
Cada entrada da tabela de pginas possui um bit de validade que indica se
a respectiva pgina fsica est ou no presente na memria.
A tabela de pgina contm um mapeamento para toda pgina virtual
possvel e portanto nenhuma tag necessria.
Memria Virtual
Memria Virtual

Falta de pgina
Se o bit de validade para uma pgina virtual estiver desligado, ocorre uma
falta de pgina.
pgina
O S.O. Precisa receber o controle, que feito pelo mecanismo de exceo.
Ento o S.O. Precisa encontrar a pgina no prximo nvel da hierarquia e
decidir onde colocar a pgina requisitada na memria principal
necessrio monitorar o local no disco de cada pgina em um espao de
endreamento virtual.
O S.O. Normalmente cria o espao no disco para todas as pginas de um
processo no momento em que ele cria o processo.
Este espao chamado de rea de swap.
swap
O S.O. Tambm cria uma estrutura para armazenar onde cada pgina
virtual est armazenada no disco.
Essa estrutura pode ser parte da tabela de pginas ou pode ser uma estrutura
de dados auxiliar
Memria Virtual
Memria Virtual
O S.O. Tambm cria uma estrutura para controlar quais processos e quais
endereos virtuais usam cada pgina fsica.
Quando ocorre uma falta de pgina, se todos os quadros da memria principal
estiverem em uso, o SO precisa escolher uma pgina para substituir.
A maioria dos Sos tenta escolher uma pgina que supostamente no seja
necessria no futuro prximo.
Os S.O podem seguir a poltica LRU (Last Recently Used).
As pginas substituidas so armazenadas na rea de swap do
armazenamento secundrio.
Implementar um esquema LRU completamente preciso muito caro, pois
requer atualizar uma estrutura de dados cada referncia de memria.
A maioria dos SOs aproxima a LRU monitorando que pginas foram e que
pginas no foram usadas recentemente.
Alguns computadores fornecem o bit de referncia ou bit de uso.
uso
ligado sempre que uma pgina acessada.
O SO limpa periodicamente os bits de referncia e, depois, os registra
para que ele possa determinar que pginas foram tocadas durante um
determinado perodo.
Memria Virtual

Com um endereo virtual de 32 bits, pginas de 4KB e 4 bytes por entrada


da tabela de pginas, podemos calcular o tamanho total da tabela de
pginas:

Precisaramos usar 4MB de memria para cada programa em execuo em


um dado momento.
Imagine agora um computador com dezenas ou centenas de programas ativos
Memria Virtual

Diversas tcnicas so usadas para reduzir a quantidade de armazenamento


necessria para a tabela de pginas
Manter um registrador de limite que restrinja o tamanho da tabela de pginas
para um determinado processo.
O espao de endereamento se expande apenas em uma direo
Manter duas tabelas de pginas com e dois registradores limite, dividindo o
espao de endereamento em dois seguimentos.
Isso permite expandir o espao de endereamento nas duas direes
Os dois esquemas acima, tm a desvantagem de no funcionar bem quando o
espao de endereamento usado de uma maneira esparsa.
Aplicar uma funo de hashing no endereo virtual de modo que a estrutura de
dados da tabela de pginas precise ser apenas do tamanho do nmero de
pginas fsicas na memria principal.
Utilizar mltiplos nveis de tabelas de pginas
So teis com espaos de endereamento muito grandes e em sistemas
que exigem alocao no contgua.
Memria Virtual

Por fim, para reduzir a memria principal real consumida pelas tabelas de
pginas:
A maioria dos sistemas modernos permite que as tabelas de pginas sejam
paginadas.
Permite que as tabelas de pginas residam no espao de endereamento
virtual
Uma srie interminvel de faltas de pginas precisa ser evitada,
o que pode ser evitado colocando todas as tabelas de pginas no espao
de endereamento do SO
e colocando pelo menos algumas das tabelas de pginas para o sistema
em uma parte da memria que fisicamente endereada.
Memria Virtual

Escritas
Utiliza esquemas write-back
O tempo de transferncia de disco pequeno quando comparado ao seu tempo
de acesso.
Copiar de volta uma pgina inteira muito mais eficiente do que escrever
words individuais.
Um bit de modificao ligado quando qualquer word de uma pgina
modificada.
Se a pgina necessitar ser substituda, o SO verifica o bit para decidir se
deve escrevla no disco antes de substitu-la.

Memria Virtual

TLB Translation-lookaside buffer


Funciona como uma Cache para tabelas de pginas.
Sem a TLB, cada acesso memria pode levar, no mnimo o dobro do tempo,
devido ao acesso tabela de pginas.
A TLB se baseia na localidade de referncia tabela de pginas
Quando uma traduo para um nmero de pgina virtual usada, ela
provavelmente ser necessria novamente no futuro prximo
Pois as referncias s words nessa pgina possuem localidade temporal
e espacial.

Memria Virtual
Memria Virtual

Em cada referncia consultamos o nmero da pgina virtual na TLB. Se


tivermos um acerto, o nmero de pgina fsica usado e o bit de referncia
ligado.
Se o processador estiver realizando uma escrita, o bit de modificao tambm
ligado.
Se ocorrer uma falha na TLB, precisamos determinar se ela uma falta de
pginas ou simplesmente uma falha de TLB.
Se a pgina existir na memria ento a falha indica apenas que a traduo est
faltando na TLB.
Se a pgina no estiver na memria, ento houve uma falta de pgina e neste
caso o processador chama o SO usando uma exceo
Depois que em uma falha, a traduo tenha sido recuperada da tabela de
pginas, precisamos selecionar uma entrada da TLB para substituir e copias os
bits de referncia e de modificao de volta para a entrada da tabela de pginas.
Memria Virtual

Alguns valores comuns para uma TLB poderiam ser:


Tamanho da TLB: 16 a 512 entradas
Tamanho do bloco: 1 a 2 entradas
Tempo de acerto: 0,5 a 1 ciclo de clock
Penalidade de falha: 10 a 100 ciclos de clock
Taxa de falhas: 0.01% a 1%

Alguns sistemas usam TLBs pequenas e totalmente associativas


Outros usam TLBs grandes com baixa associatividade.
A TLB do Intrinsity FastMATH
A TLB do Intrinsity FastMATH
Memria virtual

Integrando memria virtual, TLBs e caches


Os dados no podem estar na cache a menos que estejam presentes na
memria principal.
O SO cuida de remover o contedo de qualquer pgina da cache quando decide
migrar esta pgina para o disco. Ao mesmo tempo, ele modifica as tabelas de
pginas e a TLB.
Sob circunstncias ideais um endereo virtual traduzido pela TLB e enviado
para a cache onde os dados apropriados so encontrados, recuperados e
desvolvidos ao processador.
No pior caso, uma referncia pode falhar em todos os trs componentes: TLB,
tabela de pginas e a cache.

Memria virtual
Memria virtual

Cache fsicamente indexada e fsicamente rotulada


Tanto o ndice quanto a tag de cache so endereos fsicos em vez de virtuais.
Cache virtualmente indexada e virtualmente rotulada.
A cache acessada com endereo virtual que no foi traduzido para um
endereo fsico.
Isso tira a TLB do caminho crtico, reduzindo a latncia da cache.
Cache virtualmente indexada, mas fsicamente rotulada.
Utilizam apenas a parte do offset da pgina do endereo, que fsico para
indexao, mas usam tags fsicas.

Você também pode gostar