Memória Virtual
O Problema: RAM Insuficiente
A RAM é finita. Quando o sistema operacional e os programas em execução consomem toda a RAM disponível, o computador precisa de uma solução para não travar ou encerrar processos forçadamente.
A solução é a Memória Virtual.
O que é Memória Virtual?
A Memória Virtual é um mecanismo do sistema operacional que usa uma parte do armazenamento secundário (HD ou SSD) para simular RAM adicional, criando um espaço de endereçamento maior do que a RAM física disponível.
Memória Virtual = RAM física + área reservada no HD/SSD (arquivo de swap/paginação)
O SO gerencia quais dados ficam na RAM e quais são temporariamente transferidos para o disco.
PROGRAMA A PROGRAMA B PROGRAMA C PROGRAMA D
│ │ │ │
└────────────┴───────────┴───────────┘
│
Sistema Operacional
(Gerenciador de Memória)
│
┌─────────────┴──────────────┐
│ │
RAM Física Arquivo de Swap
(rápida ~70ns) (lento ~100µs–10ms)
Paginação — Como Funciona
O SO divide a memória em blocos de tamanho fixo chamados páginas (tipicamente 4 KB).
Processo de paginação
- O SO mantém uma tabela de páginas para cada processo
- Páginas raramente usadas são movidas para o disco (swap out)
- Quando o programa precisa de uma página que está no disco, ocorre um page fault
- O SO carrega a página de volta para a RAM (swap in), possivelmente movendo outra para o disco
🎯 Simulador Interativo de Paginação
Clique nas páginas virtuais abaixo e veja a MMU decidir entre HIT, PAGE FAULT e despejo (swap out) em tempo real — é o mesmo fluxo do diagrama acima, agora interativo:
Simulador de Memória Virtual e Paginação
ℹ️ 8 páginas virtuais (0–7) disputando apenas 4 frames físicos na RAM. Política de substituição: FIFO — a página mais antiga carregada é sempre a primeira a ser despejada, mesmo que tenha sido acessada recentemente (diferente de LRU).
Arquivo de Swap / Página de Troca
Cada sistema operacional implementa a memória virtual de forma ligeiramente diferente:
| Sistema Operacional | Nome | Local padrão |
|---|---|---|
| Windows | Arquivo de Paginação (pagefile.sys) | C:\pagefile.sys |
| Linux | Swap partition ou swap file | /swapfile ou partição swap |
| macOS | Swap files | /private/var/vm/ |
Configuração no Windows
Por padrão, o Windows gerencia automaticamente o tamanho do arquivo de paginação:
- Tamanho mínimo: 1× RAM
- Tamanho máximo: 3× RAM (recomendado pela Microsoft)
- Localização: pode ser movido para outro disco
Para sistemas com muito acesso ao swap, mova o arquivo de paginação para um SSD NVMe — a velocidade de acesso é até 100× maior que um HD mecânico.
Impacto no Desempenho
O uso de memória virtual inevitavelmente degrada o desempenho, pois o armazenamento em disco é muito mais lento que a RAM:
| Componente | Latência de acesso |
|---|---|
| Cache L1 | ~1 ns |
| Cache L3 | ~10 ns |
| RAM DDR4 | ~70 ns |
| SSD NVMe (swap) | ~50–100 µs (750× mais lento) |
| SSD SATA (swap) | ~100 µs (1.400× mais lento) |
| HD mecânico (swap) | ~5–10 ms (100.000× mais lento) |
Degradação de desempenho com swap:
Sem swap (tudo na RAM): ████████████████████ 100%
Com swap em SSD NVMe: ██████████░░░░░░░░░░ ~50%
Com swap em SSD SATA: ████████░░░░░░░░░░░░ ~40%
Com swap em HD mecânico: ██░░░░░░░░░░░░░░░░░░ ~10%
A Memória Virtual não substitui a RAM física — ela é um recurso de contingência. Um sistema operando constantemente no swap está funcionando muito abaixo de sua capacidade ideal.
Swap ≠ RAM com Mesmo Desempenho
É um erro comum afirmar que a memória virtual "funciona como uma extensão da RAM com mesmo desempenho". Isso está incorreto:
| Afirmação | Correto? |
|---|---|
| "Memória virtual tem mesmo desempenho que a RAM" | ❌ |
| "Memória virtual usa cache do processador" | ❌ |
| "Memória virtual substitui completamente a RAM" | ❌ |
| "Memória virtual usa o HD/SSD e é mais lenta que a RAM" | ✅ |
| "Swap em SSD é mais rápido que swap em HD" | ✅ |
| "O SO gerencia quais dados ficam na RAM vs disco" | ✅ |
| "Page fault causa lentidão perceptível" | ✅ |
Thrashing — O Pior Cenário
O thrashing ocorre quando o sistema passa mais tempo gerenciando páginas entre RAM e disco do que executando programas de fato.
Sintomas:
- Disco em uso constante (100% de utilização)
- Sistema extremamente lento ou travado
- Ventoinhas aceleradas (CPU e disco trabalhando ao limite)
- Aplicações demoram minutos para responder
Causa: RAM insuficiente para as tarefas em execução.
Solução: Aumentar a RAM física.
Endereçamento Virtual
A memória virtual também serve como abstração de endereçamento — cada processo "acredita" ter acesso a toda a memória do sistema:
Processo A Processo B
Vê: 0x00000000–0xFFFFFFFF Vê: 0x00000000–0xFFFFFFFF
│ │
└──────────┬───────────────────┘
│
MMU (Memory Management Unit)
(hardware dentro da CPU)
│
┌──────────┴──────────┐
│ RAM Física │ Disco (swap)
│ (endereços reais) │
└─────────────────────┘
A MMU (Memory Management Unit), embutida na CPU, faz a tradução de endereços virtuais para físicos em tempo real.
Resumo Visual
┌─────────────────────────────────────────────────────┐
│ SISTEMA OPERACIONAL │
│ │
│ Programa A Programa B Programa C │
│ (em RAM) (em RAM) (parcialmente no swap) │
│ │ │ │ │
│ ────┴─────────────┴──────────────┴────────────── │
│ Gerenciador de Memória │
│ ────┬────────────────────────────────────────── │
│ │ │
│ ┌───┴────────┐ ┌──────────────────────┐ │
│ │ RAM Física │◄────────►│ Arquivo de Swap │ │
│ │ (rápida) │ swap │ HD/SSD (mais lento) │ │
│ └────────────┘ in/out └──────────────────────┘ │
└─────────────────────────────────────────────────────┘
Questão de Fixação
Sobre a Memória Virtual, assinale a alternativa correta.
| Alternativa | Análise |
|---|---|
| A) "Mesmo desempenho" | ❌ — Swap é muito mais lento que RAM |
| B) "Usa cache do processador" | ❌ — Usa HD ou SSD, não cache |
| C) "Substitui completamente a RAM" | ❌ — É recurso de contingência, não substituto |
| D) "Usa HD/SSD e o sistema fica mais lento" | ✅ — CORRETA |
| E) "Ativada apenas com SSD NVMe" | ❌ — Funciona com qualquer armazenamento |