Você está na página 1de 32

Capítulo 10 – Memória Virtual

● Fundamentos
● Somente parte do processo precisa estar na
memória principal para execução
● Espaço de endereçamento lógico pode ser
maior do que o espaço físico disponível
● Pode ser implementada como paginação por
demanda ou segmentação por demanda
Figura – Diagrama mostrando que a memória virtual é maior do que a
memória física
● Paginação sob demanda
● Uma página é trazida para a memória quando é
necessária para a execução do processo
– Menos E/S
– Necessidade de menos memória física
– Resposta mais rápida
– Mais processos
● As referências a páginas:
– Podem ser inválidas – aborta o processo
– Podem gerar a necessidade de trazê-las para a
memória
Figura – Transferência de uma memória paginada para espaço de disco
contíguo
● Conceitos básicos
● Cada entrada da tabela de páginas conta com
um bit que identifica se a página está na
memória (valor 1) ou não (valor 0)
● Inicialmente o valor é 0 para todas as entradas
● Na tradução de endereços, há uma falta de
página quando o bit correspondente é 0
Figura – Tabela de página quando algumas páginas não estão na memória
principal
● Numa falta de página, o controle passa para o
Sistema Operacional
– Obtém um frame vazio
– Carrega a página neste frame
– Atualiza a tabela, bit = 1
– Retoma a instrução que gerou a falta de página
Figura – Etapas do tratamento de uma falta de página
● Pode não haver frames livres
– Substituição de página – encontra uma página não
usada na memória e a leva para o disco
– Qual página ?
● Taxa de falta de página: 0 ≤ p ≤ 1.0
– Se p == 0, não há faltas de página
– Se p == 1, cada referência gera uma falta
● Tempo efetivo de acesso (EAT) leva em
consideração (além da taxa de falta de pág.):
– Tempo de tratamento da falta de página pelo s.o.,
tempo para reescrever a página vítima na memória
secundária (eventual), tempo para ler a página para
a memória, retomada da execução pelo s.o.
● Substituição de página
● Que página será substituída para dar lugar a
uma vindo da memória secundária?
● Processo de substituição:
– Localiza a página desejada no disco
– Encontra um frame livre:
● Se existe, usa o disponível;
● Caso contrário, usa um algoritmo de substituição para
escolher a página vítima
– Lê a página para o frame e atualiza as tabelas de
páginas e de frames
– Retoma a execução do processo
Figura – Necessidade de substituição de página
Figura – Substituição de página
● Algoritmos de substituição
● Busca uma baixa taxa de falta de páginas
● É avaliado pela execução sobre uma string de
referências à memória e respectivo cálculo do
número de faltas de página
● Exemplo de string de referências:
● 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5.
● Substituição de página FIFO
● Com 3 frames, há 9 faltas de página
● Com 4 frames, há 10 faltas de página
– Anomalia de Belady
Figura – Gráfico de falta de página versus número de quadros
Figura – Algoritmo de substituição de página FIFO
● Algoritmo ótimo
● Substitui a página que não será usada pelo
maior período de tempo
● Não pode ser implementado
● É usado para avaliar algoritmos de
substituição: o quanto eles se aproximam do
algoritmo ótimo
Figura – Algoritmo de substituição de página ótimo
● Algoritmo de substituição LRU (least
recently used)
● Implementação com contadores:
– Cada entrada de página conta com um contador
que é atualizado com o valor de relógio da última
referência a esta página
– Substitui-se a página com o menor valor de data
● Bit de referência
– Associa-se um bit a cada página, inicialmente com
valor 0
– Quando a página é referenciada, o bit é setado
– Substitui-se uma com o bit em 0
Figura – Algoritmo de substituição de página LRU
● Segunda chance
– Usa o bit de referência
– Se uma página a ser substituída possui o bit em 1,
então:
● Reseta o bit
● Mantém a página na memória
● Passa à próxima página, na ordem do relógio, usando as
mesmas regras
● Se todas têm o bit em 1, torna-se FIFO
Figura – Algoritmo de substituição de página da segunda chance (ou do
clock)
● Alocação de frames
● Cada processo precisa de um número mínimo
de quadros
● Alocação Fixa ou por Prioridade
● Fixa
– Igual ou proporcional ao tamanho
● Por Prioridade
– Alocação proporcional, não ao tamanho, mas à
prioridade
– Substitui página do próprio processo, ou de algum
de menor prioridade
● Alocação global versus local
● Global – o processo usa qualquer frame livre
ou qualquer frame como vítima
● Local - o processo usa um frame livre ou um
frame como vítima do seu próprio conjunto de
frames
● Thrashing
● O processo não executa – fica transportando
páginas para tratar faltas
● O segredo da paginação é o modelo de
localidade
● Durante a execução, um processo migra de
uma localidade para outra
● Por que ocorre o thrashing?
– Tamanho da localidade > tamanho total de
memória disponível
● O modelo de conjunto de trabalho
● Δ ≡ janela do conjunto de trabalho ≡ tempo no
qual serão anotados os acessos a páginas pelo
processo. Exemplo: durante 10.000 instruções
● WS Pi (conjunto de trabalho do processo Pi) = o
conjunto das páginas acessadas no Δ mais
recente (varia com o tempo)
– Δ pequeno, não vai atingir toda a localidade
– Δ grande, vai pegar várias localidades
– Δ = ∞, é o processo inteiro
● Demanda total de frames: D = ∑ WS Pi
● Ocorre thrashing quando D > m (total de frames
disponíveis)
● Política: se D > m, suspende um processo

Figura – Modelo de conjunto de trabalho

● Pode-se usar um temporizador e bits de


referência para manter o conjunto de trabalho.
Páginas com bits em 1 pertencem ao conjunto
● Freqüência de falta de página
● É estabelecida um taxa de falta de páginas
aceitável
– Se a taxa é baixa, o processo perde frames
– Se a taxa é alta, o processo ganha frames

Figura – Freqüência de falta de páginas


● Considerações adicionais
● Pré-paginação – levar para a memória, de uma
vez, todas as páginas que serão necessárias
● Tamanho da página envolve os seguintes
aspectos:
– fragmentação
– Tamanho da tabela de páginas
– Tempo de E/S
– localidade
● Idealmente, o conjunto de trabalho de cada
processo deve caber na TLB
– Caso contrário, vai ocorrer um alto índice de falta
de página
● Certas páginas precisam ser “grampeadas” na
memória
– Exemplo: páginas que estão recebendo dados
provenientes da leitura de um arquivo
● Segmentação por demanda – semelhante à
paginação por demanda usando segmentos no
lugar de páginas
Figura – O motivo pelo qual os quadros usados para I/O devem estar na
memória
Fonte bibliográfica
● Sistemas Operacionais – Conceitos e
Aplicações, de Abraham Silberschatz, Peter
Galvin e Greg Gagne, 3ª tiragem, Editora
Campus

Você também pode gostar