

Quando a capacidade de endereçamento do
processador não corresponde à MP instalada,
os endereços gerados são endereços virtuais
(abstrações para endereços não reais)
Na maioria dos SOs modernos as aplicações e
processos sempre fazem referências à
memória usando endereços virtuais.
◦ Nestes casos a memória virtual está sempre em uso

Mapeamentos
◦ Primeiro caso: Capacidade de endereçamento
menor que a memória física instalada 
Mapeamento feito sobre uma “janela” ou subgrupo
da MP
◦ Segundo caso: Capacidade de endereçamento =
memória instalada  Mapeamento trivial. Cada
endereço corresponde à uma posição na memória
◦ Terceiro caso: Capacidade de endereçamento > que
memória instalada  Solução é uso de memória
virtual

O processador faz uso de endereços virtuais
e o Gerenciador de Memória Virtual se
encarrega de fazer os mapeamentos.

Não podendo ficar limitado à quantidade de
memória física instalada e nem à baixa
velocidade de acesso da memória secundária
(virtual), utiliza-se uma hierarquia:


Se os dados e instruções que o processador
precisa estão na MP, não há problema... O
acesso é feito de imediato
Se os dados que o processador precisa estão
endereçados na memória virtual o
processamento é interrompido para que o
gerenciador de memória traga os blocos
necessários da memória secundária para a MP


Programas tendem a se concentrar, a cada
intervalo de tempo, em pequenas regiões
dentro do espaço de endereçamento
disponível.
Isto faz com que todas as instruções (ou
quase todas) estejam disponíveis na MP,
diminuindo os acessos à Memória Secundária.

Razões para existir condensação:
◦ Programas são escritos de forma seqüencial e as
próximas instruções a serem executadas estão
normalmente próximas à corrente
◦ Programas apresentam laços de repetição que são
executados diversas vezes
◦ Dados são organizados seqüencialmente (por
exemplo em vetores e tabelas)




Custo médio por bit (relação entre MP e MS)
Taxa de acerto – hit ratio (taxa em que os
dados estão disponíveis diretamente na MP)
Tempo médio de acesso (considerando
acesso à MP e MS)
Taxa de aproveitamento da MP (o ideal é que
a MP não tenha espaços “vagos”)


Swapping
É a principal operação sobre as memórias
virtuais. Consiste em movimentar um bloco
entre os níveis da hierarquia de memória
◦ Um bom sistema de memória virtual deve tratar
destas questões:
 Quando movimentar ?
 Onde colocar o bloco ?
 Qual o tamanho ideal de um bloco ?


O mapa de memória pode ser implementado
em registradores especiais de alta velocidade,
na própria MP ou em memórias especiais.
Geralmente contêm:
◦ Lista de espaços ocupados
◦ Lista de espaços vazios
◦ Endereços mapeados na MS


O principal objetivo de se ter uma política de
substituição de blocos é fazer com que a taxa
de acertos seja maximizada (hit ratio)
Quando um bloco referenciado não está
disponível na MP ocorre uma condição
conhecida como “acesso falho à memória”
(memory fault)

FIFO ( First-in-first-out)
◦ Seleciona para substituição o mais antigo bloco, ou
seja, o que está há mais tempo na MP
◦ Vantagem: fácil de se implementar. Um nr de
seqüência é associado a cada bloco quando ele é
alocado na MP. Quando um bloco precisa ser
substituído, basta eliminar o de menor seqüência.
◦ Desvantagem: Um bloco frequentemente utilizado
pode ser substituído por ser o mais antigo (sendo o
mais freqüentemente utilizado, as chances de ser o
mais antigo aumentam)

LRU (Least recently used)
◦ Seleciona para substituição o bloco menos
recentemente utilizado pelo processador.
◦ Desvantagem: Dificuldade do SO manter uma
estatística dos blocos menos recentemente
utilizados. Estratégia possível é atribuir contadores
(age registers) a cada bloco na MP. Toda vez que o
bloco é referenciado seu contador é atualizado para
o maior valor positivo. De tempos em tempos,
todos os contadores são decrementados. O bloco
menos recentemente utilizado é aquele cujo
contador apresentar menor número.
◦ LFU (Least Frenquently Used): o controlador de
cache escolhe o bloco que tem tido menos acessos
(menos referências) por parte da CPU
◦ Escolha aleatória
16




Os blocos de memória podem ser
organizados como segmentos ou como
páginas.
Um segmento pode ser considerado como um
bloco de palavras seqüenciais logicamente
relacionadas (sub-rotina, pilha, matriz) .
Segmentos possuem tamanhos variáveis. Sua
principal propriedade é a coesão
Páginas tem tamanho fixo, sem preocupar
com a coesão.

Vantagem:
◦ Respeitam a modularidade e a lógica dos
programas

Desvantagem: Custo de se gerenciar o
tamanho variável dos segmentos durante a
alocação e a substituição

Vantagem:
◦ Simplicidade de se gerenciar o tamanho fixo nas
alocações e substituições (como tem tamanho fixo,
basta trocar uma página por outro no “frame”)

Desvantagem:
◦ Não respeitam a organização lógica dos programas.

Tenta resolver as desvantagens dos dois
modelos:
◦ Cada segmento é dividido em páginas de tamanho
fixo
Download

Memória Virtual