Memória Virtual
Introdução/Antecedentes
execução de programas parcialmente na memória
separa memória lógica/física
não é necessário todo o programa o tempo todo
beneficia sistema e usuários
facilita a tarefa de programar
espaço de endereço virtual
memória física só é ocupada se necessário
permite vinculaçao de bibliotecas
Paginação por demanda
menos E/S necessária
resposta mais rápida
menos memória necessária
mais usuários
página é necessária
referência a ela
inválida -> aborta
não está na memória
trás para a memória
Lazy swapper
termo inapropriado
lida com páginas individuais
saber se pág está na MP
bit vál/inv
inicia inv
na tradução
se bit = i
page fault
não na memória
lentidão perceptível
apanha quadro vazio
passa página para quadro
reinicia tabelas
define bit = v
reinicia instrução que causou page fault
EAT = (1 – p) x ma + (p x t)
p = taxa de page fault
t = OH de page fault + swap in + swap out + OH de restart
Page Fault
Página está em disco
Não há quadros livres
Uma solução
Substituição de Página
Técnica básica
Encontra quadro não utilizado
libera-o (swap space)
coloca página do processo
bit de modificação - overhead
FIFO
substitui mais antiga
use-se uma fila
fácil de programar
nem sempre é boa
Anomalia de Belady
Algoritmo ideal (ótimo)
substitui página que não será usada pelo maior período
não é factível
precisa prever o futuro
usado para comparação
LRU
substitui página que não foi usada pelo maior período
difícil implementação
necessita assistência de hardware
contadores
referência de página
pilha
página "mais antiga" no topo
copia o clock para contador
Aproximação ao LRU
bits de referência adicionais
histórico de uso
substituir pág com menor nº
menos ou há mais tempo usada
segunda chance
FIFO melhorado
apenas um bit referência
pág é usada
bit vai para 1
vitíma tem bit 1
dá 2º chance e joga para 0
verifica a próxima
segunda chance melhoorado
2 bits
referência e modificação
0, 1
1, 0
0, 0
1, 1
melhor candidato a vítima
reduz necessidade de E/S
Baseada em contagem
LFU
MFU
substitui pág com menor contador
incomuns, pouco usados
menor count? trazida recente e ainda deverá ser usada
Armazenamento em Buffer
usada em conjunto com algum algortimo
exemplo do gandula
banco de quadros livres reserva
onde página desejada aguarda até vítima ser retirada
processo reinicia + rápido
Alocação de quadros
Fixa
Igual
Proporcional
divide quadros igualmente
processos maiores recebem mais quadros
Por prioridade
proporcional a prioridade
Global
Local
processo pode apanhar quadro de outro
seleciona apenas seus próprios quadros
Thrashing
+ tempo paginando do que executando
limitar
impedir
algoritmo substituição local
fornecer quantos quadros o processo precisar
modelo de localidade de execução do processo
Working Set Model
D = janela do WS (passado)
D pequeno
D grande
não abrange localidade inteira
abrange várias localidades
D infinito
abrange programa inteiro
se o WS está todo na memória
poucas Page Fault
vários processos sem WS na memória
risco de thrashing
Pré-paginação
carrega WS na memória antes de processo executar
garante menos Page Fault