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

Gerência de memória e MMU

Esquemas de alocação, paginação e segmentação, e o papel da MMU e da TLB na tradução de endereços por hardware — o ponto onde o SO e o silício se encontram.

📚 Sistemas Operacionais📝 mini-quiz ao final
Objetivos da aula

O que você vai aprender

1

Comparar alocação contígua, paginação e segmentação e seus tipos de fragmentação.

2

Explicar passo a passo a tradução de endereços lógicos em físicos pela MMU.

3

Justificar a existência da TLB e quantificar seu impacto no desempenho.

4

Relacionar a troca de contexto ao esvaziamento da TLB e ao custo de tradução.

1 · Motivação

Por que não dar a RAM crua aos programas?

Imagine que cada programa escrevesse diretamente em endereços físicos da RAM. Dois programas usariam o endereço 0x1000 ao mesmo tempo, um sobrescreveria o outro, e qualquer bug derrubaria o sistema inteiro. Compilar um programa exigiria saber, de antemão, em que posição da memória ele rodaria.

A gerência de memória resolve isso dando a cada processo a ilusão de uma memória própria, contígua e privada — o espaço de endereçamento lógico. O hardware (a MMU) traduz esses endereços em posições físicas reais, isolando os processos uns dos outros.

  • Cada processo "acha" que possui a memória toda.
  • O compilador gera endereços lógicos, sem saber onde o programa carregará.
  • O SO e a MMU mapeiam o lógico no físico em tempo de execução.
2 · Mapa

O que veremos nesta aula

Vamos da forma mais ingênua de organizar a memória até o mecanismo que sustenta os SOs modernos:

Alocação
contígua
Paginação e
segmentação
MMU
(tradução)
TLB
(aceleração)

O fio condutor é hardware: endereço lógico, tabela de páginas, MMU e TLB são engrenagens físicas que o SO programa, mas não substitui.

3 · Conceito

Endereço lógico e endereço físico

Endereço lógico (virtual). Endereço gerado pela CPU ao executar o programa, relativo ao espaço de endereçamento do processo.
Endereço físico. Endereço real de uma célula da RAM, usado no barramento de memória.

O conjunto de endereços lógicos válidos forma o espaço de endereçamento lógico; o conjunto de endereços físicos correspondentes, o espaço físico. A tradução entre eles é a essência da gerência de memória moderna.

4 · Explicação

Da alocação contígua à paginação

Na alocação contígua, cada processo recebe um bloco único e sequencial de RAM. É simples, mas, com o tempo, criam-se buracos: processos entram e saem deixando lacunas que, somadas, dariam memória de sobra — só que nenhuma é grande o bastante. É a fragmentação externa.

A paginação ataca esse problema dividindo a memória física em quadros de tamanho fixo e o espaço lógico em páginas do mesmo tamanho. Qualquer página cabe em qualquer quadro livre, eliminando a fragmentação externa. O preço é a fragmentação interna: a última página de um processo raramente é preenchida por completo.

5 · Exemplo

Traduzindo um endereço na paginação

Com páginas de 4 KB (4096 bytes), um endereço lógico se divide em número da página e deslocamento:

Endereço lógicoPágina (÷4096)Deslocamento (mod 4096)Quadro (tabela)Endereço físico
8500230855×4096+308 = 20788
100010099×4096+100 = 36964
40961033×4096+0 = 12288

O deslocamento nunca muda na tradução: apenas o número da página é substituído pelo número do quadro lido na tabela de páginas.

6 · Interativo

Passo a passo: a MMU traduzindo um acesso

Passo 1
A CPU emite o endereço lógico, dividido em (número da página, deslocamento).
Passo 2
A MMU consulta a TLB: o número da página já está cacheado? Se sim (TLB hit), pega o quadro na hora.
Passo 3
Se não (TLB miss), a MMU lê a tabela de páginas na memória para obter o quadro.
Passo 4
A MMU verifica os bits de permissão (presente, leitura/escrita/execução). Falha gera exceção.
Passo 5
A MMU monta o endereço físico (quadro × tamanho + deslocamento) e o acesso à RAM acontece.
7 · Conceito

A MMU e a tabela de páginas

MMU (Memory Management Unit). Hardware, geralmente integrado à CPU, que traduz endereços lógicos em físicos a cada acesso à memória, checando também permissões.
Tabela de páginas. Estrutura em RAM, mantida pelo SO, que mapeia cada número de página ao número do quadro e guarda bits de controle (presente, modificado, acessado, permissões).
Endereço lógico
página · deslocamento
MMU + tabela
de páginas
Endereço físico
quadro · deslocamento
8 · Explicação

Permissões e faltas de página na MMU

A MMU faz mais do que traduzir: ela é a guardiã da memória. Cada entrada da tabela de páginas carrega bits que a MMU consulta a cada acesso:

  • Presente/ausente: se a página não está na RAM, a MMU gera uma falta de página e o SO a traz do disco (tema da Aula 9).
  • R/W/X: tentar escrever em página somente leitura, ou executar dados, gera uma falha de proteção.
  • Modificado (dirty) e acessado: ajudam o SO a decidir o que escrever de volta e o que substituir.

É por isso que a proteção de memória é praticamente gratuita: o hardware já faz a checagem no mesmo ciclo da tradução.

9 · Analogia

A lista telefônica e o papelzinho

📒 Analogia
A tabela de páginas é a lista telefônica completa: tem todos os números, mas está numa gaveta (a RAM) e consultá-la é lento. A TLB é o papelzinho colado no monitor com os números que você mais liga: olhar para ele é instantâneo. Quando o número não está no papelzinho (TLB miss), você abre a lista inteira — e anota o número no papelzinho para a próxima vez.
10 · Comparação

Paginação × segmentação

AspectoPaginaçãoSegmentação
UnidadePágina/quadro de tamanho fixoSegmento de tamanho variável
VisãoFísica (transparente ao programa)Lógica (código, dados, pilha)
FragmentaçãoInterna (última página)Externa (segmentos variáveis)
Endereço(página, deslocamento)(segmento, deslocamento)
Uso típicoSOs modernosHistórico; combinada com paginação no x86
💡
Muitas arquiteturas combinam as duas: o programa pensa em segmentos, e cada segmento é paginado por baixo. O x86 clássico fazia exatamente isso.
11 · Fluxo

O que acontece em uma falta de página

Acesso a página
ausente
MMU gera
exceção
SO escolhe
quadro
Traz página
do disco
Atualiza tabela
e reexecuta
🔑
A falta de página não é um erro do programa: é o mecanismo normal pelo qual a memória virtual carrega páginas sob demanda. A MMU detecta, o SO resolve, a instrução é reexecutada de forma transparente.
12 · Aprofundamento

Tabelas multinível e o custo de páginas grandes

Num espaço de 64 bits, uma tabela de páginas plana seria gigantesca. Por isso usam-se tabelas de páginas multinível (2, 3 ou 4 níveis): o endereço é fatiado em vários índices, e só os ramos efetivamente usados existem na memória. O preço é que um TLB miss pode exigir vários acessos à memória (um por nível) — chamado de page walk.

Para reduzir isso, processadores oferecem páginas grandes (huge pages) de 2 MB ou 1 GB: menos entradas, menos níveis, maior alcance da TLB. Bancos de dados e máquinas virtuais usam huge pages justamente para diminuir TLB misses em grandes áreas de memória.

13 · Interativo

Verifique seu entendimento

Com páginas de 1 KB, qual o endereço físico de uma referência lógica à página 4, deslocamento 200, se a página 4 está no quadro 7?

O deslocamento (200) é preservado; só o número da página (4) vira número do quadro (7). Logo, 7×1024 + 200 = 7368.
14 · Caso prático

MMU × MPU em microcontroladores

Nem todo embarcado tem MMU. Microcontroladores ARM Cortex-M, comuns em IoT e automotivo, em geral não possuem MMU completa — não há memória virtual nem tradução de endereços. Em vez disso, trazem uma MPU (Memory Protection Unit): ela não traduz endereços, mas define regiões com permissões (R/W/X, privilegiado/usuário).

Assim, um RTOS como o FreeRTOS pode usar a MPU para impedir que uma tarefa corrompa a pilha de outra, sem o custo e a imprevisibilidade da paginação. Em tempo real rígido, prefere-se proteção por regiões fixas a tradução dinâmica.

15 · Erros comuns

Confusões frequentes

⚠️
Erros comuns nesta aula:
• Confundir fragmentação interna (desperdício dentro do bloco, na paginação) com externa (buracos entre blocos, na alocação contígua).
• Achar que o deslocamento muda na tradução — ele é sempre preservado.
• Pensar que a MMU é software do SO — a MMU é hardware; o SO apenas preenche a tabela de páginas.
• Supor que todo SO tem MMU — embarcados simples usam MPU ou nada.
16 · Dicas

Como acertar as contas de tradução

Roteiro infalível para traduzir endereços: (1) número da página = endereço ÷ tamanho da página; (2) deslocamento = resto dessa divisão; (3) procure o quadro na tabela; (4) endereço físico = quadro × tamanho + deslocamento. Se o tamanho da página for potência de 2, divisão e resto viram simples bits altos e baixos do endereço.
17 · Interativo

Revele a resposta

Por que a troca de contexto entre processos é tão cara para a memória?
Porque cada processo tem sua própria tabela de páginas. Ao trocar de processo, o SO carrega o registrador que aponta para a nova tabela (CR3 no x86), o que invalida a TLB: as traduções cacheadas pertenciam ao processo anterior. Os primeiros acessos do novo processo pagam TLB misses e page walks até a TLB "esquentar". Por isso threads do mesmo processo, que compartilham a tabela, trocam de forma muito mais barata.
18 · Flashcards

Revisão relâmpago

Fragmentação externavirar
Buracos pequenos entre blocos na alocação contígua; somados dariam memória, mas nenhum serve.
Fragmentação internavirar
Desperdício dentro de um bloco alocado; típica da última página na paginação.
MMUvirar
Hardware que traduz endereços lógicos em físicos e checa permissões a cada acesso.
TLBvirar
Cache das traduções página→quadro recentes; evita consultar a tabela na RAM.
Page walkvirar
Percurso pela tabela multinível em um TLB miss; pode custar vários acessos à memória.
19 · Conexões

Para onde isso leva

A gerência de memória é a base de muito do que vem a seguir:

  • A falta de página e os bits da tabela são o motor da memória virtual (Aula 9).
  • A TLB liga-se à hierarquia de cache (Aula 9) e à troca de contexto (Aula 3).
  • A proteção por MMU/MPU sustenta o isolamento e a segurança de plataforma (Aula 13).
  • Em tempo real (Aula 12), evita-se tradução imprevisível: MPU em vez de MMU.
20 · Síntese

Resumo da aula

🔑
Cada processo vê um espaço lógico privado; a MMU (hardware) traduz endereços lógicos em físicos a cada acesso, checando permissões. A paginação elimina a fragmentação externa ao custo de fragmentação interna; a segmentação dá visão lógica, mas sofre fragmentação externa. A TLB cacheia traduções e é vital ao desempenho — por isso a troca de processo, que a esvazia, custa caro.
Mão na massa · colaborativo

Atividade em grupo · Traduzindo endereços à mão

Em duplas, façam a tradução página→quadro como uma MMU.

⏱️ 20 min👥 duplas🧩 exercício

Roteiro

  1. Dada uma tabela de páginas e um tamanho de página, traduzam 3 endereços lógicos para físicos.
  2. Identifiquem o número da página e o deslocamento em cada um.
  3. Marquem um acesso que cause falta de página.
  4. Discutam o papel da TLB caso o mesmo endereço seja acessado de novo.
Tradutorcalcula página/quadro/deslocamento
Conferentevalida e marca a falta de página
📤 Entrega: Tabela com 3 endereços lógicos traduzidos + identificação de uma falta de página.
Teste seu conhecimento

Mini-quiz · Aula 8

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

0/20

📌 Resumo — leve isto para a prova

  • Cada processo tem espaço lógico próprio; a MMU traduz lógico→físico por hardware.
  • Paginação sofre fragmentação interna; alocação contígua, fragmentação externa.
  • A tabela de páginas (no SO) guarda quadros e bits de controle; a MMU os consulta.
  • A TLB cacheia traduções; faltas na TLB e page walks são caros.
  • Embarcados usam MPU (proteção por regiões) em vez de MMU.