LRM Prof. Mantovani ← Aulas da disciplina
Semana 10 · Aula 10 de 14

Memória virtual

Executar programas maiores que a memória física: paginação por demanda, algoritmos de substituição (FIFO, LRU, ótimo) e os problemas de thrashing e working set.

📚 Sistemas Operacionais🧪 1 simulador(es)📝 mini-quiz ao final
Objetivos da aula

O que você vai aprender

1

Explicar a paginação por demanda e a falta de página.

2

Aplicar os algoritmos de substituição FIFO, LRU e ótimo.

3

Reconhecer thrashing e o conceito de working set.

1 · Motivação

Rodar o que não cabe na RAM

Como um computador com 8 GB de RAM roda programas que, somados, pedem 20 GB? A resposta é a memória virtual: dar a cada processo a ilusão de uma memória enorme, usando o disco como extensão.

Quase nenhum processo usa todo o seu espaço de endereçamento de uma vez. A memória virtual aproveita isso para manter na RAM apenas as partes em uso, deixando o resto no disco.

2 · Mapa

O percurso da aula

Paginação por
demanda
Falta de
página
Substituição
(FIFO/LRU/ótimo)
Thrashing +
working set

Construímos a partir da paginação da aula 9: trazemos páginas só quando necessário, lidamos com a falta de página, escolhemos vítimas de substituição e diagnosticamos o thrashing.

3 · Conceito 1

Memória virtual e paginação por demanda

Memória virtual. Técnica que permite executar processos parcialmente carregados, dando a ilusão de uma memória maior que a física, usando o disco como extensão.
Paginação por demanda. Uma página só é trazida do disco quando, e se, for referenciada.

Cada entrada da tabela de páginas ganha um bit de validade: ligado se a página está na RAM, desligado se está só no disco.

4 · Falta de página

O que acontece em um page fault

Quando o processo acessa uma página com bit inválido, ocorre uma falta de página (page fault):

Referência
à página
Bit válido?Falta: buscar
no disco
Atualizar tabela
e continuar
⚠️
Uma falta de página custa um acesso a disco — milhões de vezes mais lento que à RAM. Por isso o objetivo é minimizar o número de faltas.
5 · Exemplo

FIFO sobre uma cadeia de referências

Cadeia 7, 0, 1, 2, 0, 3 com 3 quadros, algoritmo FIFO (F = falta):

// quadros mostrados após cada referência ref 7 -> [7] F ref 0 -> [7,0] F ref 1 -> [7,0,1] F ref 2 -> [0,1,2] F (remove 7, o mais antigo) ref 0 -> [0,1,2] (acerto: 0 já está) ref 3 -> [1,2,3] F (remove 0, agora o mais antigo)
6 · Interativo

Stepper: LRU passo a passo

Passo 1
ref 7: falta. Quadros: 7. (uso recente: 7)
Passo 2
ref 0: falta. Quadros: 7,0.
Passo 3
ref 1: falta. Quadros: 7,0,1. Cheio.
Passo 4
ref 2: falta. Remove o menos recentemente usado (7). Quadros: 0,1,2.
Passo 5
ref 0: acerto. 0 passa a ser o mais recente.
Passo 6
ref 3: falta. O menos recente agora é 1. Remove 1. Quadros: 0,2,3.
7 · Conceito 2

Algoritmos de substituição

Algoritmo de substituição. Regra que escolhe qual página remover da memória cheia quando uma nova precisa entrar. A página escolhida é a vítima.

Um bom algoritmo minimiza as faltas de página futuras escolhendo bem a vítima.

8 · Comparação

FIFO, LRU e ótimo

AlgoritmoRegraObservação
FIFORemove a página mais antiga (que entrou primeiro)Simples; sofre a anomalia de Belady
LRURemove a menos recentemente usadaBoa aproximação do ótimo; cara de implementar exata
ÓtimoRemove a que será usada mais tarde no futuroMínimo teórico de faltas; impossível na prática
💡
O LRU baseia-se na localidade temporal: o que foi usado há pouco tende a ser usado de novo em breve.
9 · Analogia

A mesa de estudo lotada

📚 Analogia
Sua mesa cabe só 3 livros (3 quadros), mas você consulta muitos. Quando precisa de um novo, tem de guardar algum. FIFO guarda o que está há mais tempo na mesa; LRU guarda o que você não abre há mais tempo; o ótimo guardaria o que você só vai precisar lá no fim — se você soubesse o futuro.
10 · Anomalia de Belady

Mais quadros, mais faltas?

Intuitivamente, mais quadros deveriam dar menos faltas. No FIFO isso pode falhar: a anomalia de Belady mostra cadeias em que aumentar o número de quadros aumenta as faltas.

⚠️
Algoritmos de pilha (como LRU e ótimo) não sofrem a anomalia de Belady: o conjunto de páginas com n quadros está sempre contido no de n+1.
11 · Fluxo

O ciclo de atendimento da falta

FaltaHá quadro
livre?
Não: escolher
vítima
Salvar vítima
(se suja) + carregar
💡
O bit de modificação (dirty bit) evita escrever no disco páginas que não foram alteradas: só a vítima "suja" precisa ser gravada antes de sair.
12 · Aprofundamento

Thrashing e working set

Thrashing. Situação em que o sistema passa mais tempo paginando (trocando páginas com o disco) do que executando: o desempenho despenca.
Working set. Conjunto de páginas que um processo usa ativamente em uma janela de tempo recente.

O thrashing surge quando há processos demais para quadros de menos: cada processo perde páginas do seu working set e gera faltas constantes. Reduzir o grau de multiprogramação alivia o problema.

13 · Interativo

Check: diagnóstico de thrashing

A CPU está quase ociosa, mas o disco trabalha sem parar e o sistema está lentíssimo. O que está acontecendo?

CPU ociosa + disco saturado + lentidão é a assinatura clássica do thrashing. A solução é reduzir o grau de multiprogramação ou adicionar memória.
14 · Caso prático

O servidor que travou ao abrir mais abas

Um servidor com pouca RAM roda bem com 10 processos. Ao subir para 40, a vazão despenca e a CPU fica em 5%. Diagnóstico: thrashing — os working sets somados não cabem na RAM.

Soluções: adicionar RAM, reduzir o número de processos simultâneos (controle do grau de multiprogramação) ou suspender processos para devolver quadros aos demais. O modelo do working set ajuda a decidir quantos processos cabem.

15 · Erros comuns

Armadilhas frequentes

⚠️
Atenção:
  • Achar que o LRU sofre a anomalia de Belady — ele não sofre (é algoritmo de pilha).
  • Contar como acerto a primeira referência a uma página: a primeira é sempre falta.
  • Confundir "menos recentemente usada" (LRU) com "mais antiga na memória" (FIFO).
  • Pensar que o ótimo é implementável: ele exige conhecer o futuro das referências.
16 · Dicas

Para acertar as contas de faltas

Dicas:
  • Desenhe os quadros após cada referência e marque F na falta.
  • Para o ótimo, olhe à frente na cadeia e escolha a vítima cuja próxima utilização está mais longe.
  • Para o LRU, mantenha a ordem de uso; para o FIFO, a ordem de entrada.
  • Lembre: o ótimo dá sempre o menor número possível de faltas para a cadeia.
17 · Interativo

Reveal: por que LRU é caro?

Por que implementar LRU exato é custoso, e como o SO contorna isso?
O LRU exato exigiria registrar a ordem de uso de toda referência — um contador ou pilha atualizado a cada acesso à memória, o que é caro demais em hardware. Na prática, usam-se aproximações: o algoritmo da segunda chance (bit de referência + fila circular) e variantes que só distinguem "usado recentemente ou não", em vez de uma ordem exata.
18 · Flashcards

Revisão relâmpago

Page faultvirar
Acesso a uma página que não está na RAM; precisa ser trazida do disco.
Dirty bitvirar
Indica se a página foi modificada; se não, não precisa ser gravada ao sair.
Anomalia de Beladyvirar
No FIFO, mais quadros podem aumentar o número de faltas.
Working setvirar
Páginas ativamente usadas em uma janela recente; mantê-lo na RAM evita thrashing.
19 · Conexões

Amarrando com o curso

  • Gerência de memória (aula 9): a paginação é a base; aqui acrescentamos o disco como extensão.
  • E/S e disco (aula 12): faltas de página geram acessos a disco; o escalonamento de disco importa.
  • Escalonamento (aula 5): o grau de multiprogramação afeta diretamente o thrashing.
  • Processos (aula 3): um processo em falta de página bloqueia esperando a E/S.
20 · Síntese

O essencial sobre memória virtual

🔑
Síntese: a memória virtual executa processos maiores que a RAM usando o disco; a paginação por demanda traz páginas só quando referenciadas e gera faltas caras. FIFO (com anomalia de Belady), LRU (aproximável) e ótimo (referência teórica) escolhem a vítima. Thrashing é paginação excessiva; manter o working set de cada processo na RAM o evita.
+ · Simulador

Conte as faltas você mesmo

Use o simulador de substituição de páginas abaixo.

Informe uma cadeia de referências e o número de quadros, e compare FIFO, LRU e ótimo lado a lado. Conte as faltas de página de cada um e tente reproduzir a anomalia de Belady no FIFO aumentando os quadros.

Mão na massa · colaborativo

Atividade em grupo · Contando faltas de página

Em grupos, apliquem os algoritmos de substituição à mão.

⏱️ 30 min👥 grupos de 3–4🧩 laboratório

Roteiro

  1. Usem a cadeia de referências 7,0,1,2,0,3,0,4,2,3 com 3 quadros.
  2. Calculem o número de faltas para FIFO, LRU e ótimo.
  3. Comparem qual teve menos faltas e por quê.
  4. Confiram no simulador e tentem provocar a anomalia de Belady no FIFO.
FIFOaplica a fila
LRUrastreia o uso recente
Ótimoolha o futuro da cadeia
📤 Entrega: Tabela com o número de faltas de cada algoritmo para a cadeia dada.
Teste seu conhecimento

Mini-quiz · Aula 10

20 questões sobre esta aula. Escolha e veja a explicação na hora.

0/20

📌 Resumo — leve isto para a prova

  • Memória virtual executa processos maiores que a RAM usando o disco como extensão.
  • Paginação por demanda traz páginas só quando referenciadas; faltas custam acesso a disco.
  • FIFO (com anomalia de Belady), LRU (aproximável) e ótimo (referência teórica) escolhem a vítima.
  • Algoritmos de pilha como LRU não sofrem a anomalia de Belady; o dirty bit evita gravações desnecessárias.
  • Thrashing é paginação excessiva; manter o working set na RAM e controlar a multiprogramação o evitam.