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