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

Gerência de memória

Como o SO administra a memória principal: alocação contígua e particionamento, e os esquemas de paginação e segmentação.

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

O que você vai aprender

1

Explicar alocação contígua e o problema da fragmentação.

2

Descrever a paginação e a tradução de endereços lógico→físico.

3

Comparar paginação e segmentação e entender a abordagem combinada.

1 · Motivação

Por que a memória é um problema

Vários programas querem rodar ao mesmo tempo, mas a memória física é finita e única. Quem decide onde cada um fica? Como impedir que um programa leia ou corrompa a memória de outro?

A gerência de memória resolve três desafios: alocar espaço aos processos, proteger um processo do outro e aproveitar bem a memória disponível. As técnicas que veremos são a base da memória virtual da próxima aula.

2 · Mapa

Da memória contígua às páginas

Alocação
contígua
FragmentaçãoPaginaçãoSegmentação

Começamos com a ideia mais simples (cada processo em um bloco contínuo), vemos seus problemas de fragmentação e evoluímos para a paginação e a segmentação, que os resolvem de formas diferentes.

3 · Conceito 1

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

Endereço lógico (virtual). O endereço que o processo enxerga e usa em seu código.
Endereço físico. O endereço real na memória RAM. A MMU (unidade de gerência de memória) traduz lógico→físico em hardware.

Essa separação permite que cada processo "ache" que começa no endereço 0, enquanto o SO o coloca em qualquer região física livre.

4 · Alocação contígua

Partições e registradores base/limite

Na alocação contígua, cada processo ocupa um bloco contínuo de memória. A proteção usa dois registradores:

  • Registrador base: menor endereço físico do processo.
  • Registrador limite: tamanho do processo. Todo acesso é checado contra base e limite.
🔑
Se um endereço lógico ultrapassa o limite, o hardware gera uma falha (proteção): o processo não consegue invadir a memória de outro.
5 · Exemplo

Fragmentação em uma tabela

Memória de 100 KB com partições livres e os tipos de desperdício que surgem:

TipoO que éOnde aparece
Fragmentação internaEspaço sobrando dentro da partição alocadaPartições fixas / última página
Fragmentação externaLivre total suficiente, mas espalhado em pedaçosPartições variáveis

Exemplo: há 30 KB livres no total, mas em três buracos de 10 KB. Um pedido de 25 KB não cabe em nenhum: fragmentação externa.

6 · Interativo

Stepper: first-fit alocando processos

Passo 1
Estado inicial: buracos livres de 30, 10 e 20 KB.
Passo 2
Pedido de 25 KB: first-fit pega o primeiro que serve (30 KB). Sobram 5 KB nesse buraco.
Passo 3
Pedido de 8 KB: primeiro buraco que serve é o de 10 KB. Sobram 2 KB.
Passo 4
Pedido de 18 KB: cabe no buraco de 20 KB. Sobram 2 KB.
Passo 5
Sobraram 5+2+2 = 9 KB livres, mas espalhados: fragmentação externa típica.
7 · Conceito 2

Paginação

Paginação. A memória física é dividida em quadros (frames) e o espaço lógico em páginas do mesmo tamanho fixo. Uma tabela de páginas mapeia cada página a um quadro.

Como qualquer página cabe em qualquer quadro, o processo não precisa ocupar espaço contíguo na memória física.

8 · Tradução

Como o endereço é traduzido

O endereço lógico é quebrado em número de página + deslocamento. A tabela converte a página em quadro; o deslocamento é copiado direto:

Endereço lógico
página + desloc.
Tabela de
páginas
Endereço físico
quadro + desloc.
A paginação elimina a fragmentação externa. Resta apenas uma pequena fragmentação interna na última página de cada processo.
9 · Analogia

O livro com índice remissivo

📖 Analogia
A tabela de páginas é como o índice remissivo de um livro: você procura o "capítulo" (página lógica) e o índice diz em qual "folha física" do volume ele está (quadro). As folhas não precisam estar em ordem nem juntas — o índice cuida do mapeamento.
10 · Comparação

Paginação × segmentação

PaginaçãoSegmentação
Tamanho dos blocosFixo (páginas)Variável (segmentos)
VisãoFísica / uniformeLógica / do programador
Endereçopágina + deslocamentosegmento + deslocamento
FragmentaçãoInternaExterna
11 · Fluxo

TLB: acelerando a tradução

Cada acesso à memória exigiria consultar a tabela (na própria memória), dobrando o custo. A TLB (cache de traduções) resolve isso:

AcessoTLB tem a
tradução?
Sim: rápidoNão: tabela +
atualiza TLB
💡
A TLB é uma memória associativa pequena e rápida. Como há forte localidade de referência, a taxa de acerto costuma ser altíssima.
12 · Aprofundamento

Estratégias de alocação contígua

  • First-fit: primeiro buraco que serve. Rápido.
  • Best-fit: o menor buraco suficiente. Reduz desperdício imediato, mas deixa muitos farelos minúsculos.
  • Worst-fit: o maior buraco. Tende a deixar buracos grandes reutilizáveis, mas costuma ter mau desempenho geral.

A compactação move processos para juntar o espaço livre em um bloco único, combatendo a fragmentação externa — ao custo de copiar memória e parar os processos.

13 · Interativo

Check: qual fragmentação?

Em um sistema paginado, sobra um pedacinho não usado na última página de um processo. Que tipo de fragmentação é essa?

É fragmentação interna: espaço desperdiçado dentro de um quadro alocado. A paginação elimina a externa, mas não a interna.
14 · Caso prático

Por que o x86 usa segmentação com paginação

Sistemas reais combinam as duas técnicas: segmentação com paginação. O endereço passa primeiro pela segmentação (visão lógica do programador: código, dados, pilha) e cada segmento é então paginado (sem fragmentação externa).

Os processadores x86 historicamente ofereceram segmentação e paginação juntas. Os SOs modernos (Linux, Windows) usam segmentação de forma mínima e apostam quase tudo na paginação, que é mais simples e flexível.

15 · Erros comuns

Onde os alunos tropeçam

⚠️
Cuidados:
  • Trocar interna por externa: interna é dentro da partição/página; externa é entre blocos.
  • Achar que a paginação elimina toda fragmentação — ela tira só a externa.
  • Confundir página (lógica) com quadro (físico): a tabela mapeia uma na outra.
  • Esquecer que páginas grandes reduzem o tamanho da tabela, mas aumentam a fragmentação interna.
16 · Dicas

Para fixar bem

Dicas de estudo:
  • Memorize: paginação ⇒ fragmentação interna; segmentação/contígua ⇒ fragmentação externa.
  • Pratique a tradução: separe sempre página/deslocamento e use a tabela.
  • Pense na TLB como o atalho que torna a paginação viável na prática.
17 · Interativo

Reveal: por que separar lógico de físico?

Quais vantagens vêm de separar endereço lógico de físico?
Permite realocação (o SO move o processo na memória sem alterar seu código), proteção (cada processo só acessa seu próprio espaço), compartilhamento controlado (páginas comuns, como bibliotecas, mapeadas em vários processos) e é a base da memória virtual — executar processos parcialmente carregados, maiores que a RAM.
18 · Flashcards

Revisão relâmpago

Quadro (frame)virar
Bloco de tamanho fixo da memória física que recebe uma página.
MMUvirar
Hardware que traduz endereço lógico em físico a cada acesso.
TLBvirar
Cache de traduções recentes página→quadro; acelera o acesso.
Best-fitvirar
Escolhe o menor buraco livre que ainda atende ao pedido.
19 · Conexões

Onde isso reaparece

  • Memória virtual (aula 10): a paginação é o alicerce da paginação por demanda.
  • Proteção (aula 13): base/limite e tabelas de página garantem isolamento entre processos.
  • Processos (aula 3): o espaço de endereçamento faz parte do contexto guardado no PCB.
  • Sistemas de arquivos (aula 11): a alocação de blocos em disco ecoa as estratégias contígua/encadeada/indexada.
20 · Síntese

O essencial sobre memória

🔑
Síntese: a alocação contígua é simples mas sofre fragmentação (interna em partições fixas, externa em variáveis). A paginação usa páginas/quadros fixos, elimina a fragmentação externa e traduz endereços via tabela + TLB. A segmentação organiza por unidades lógicas de tamanho variável. Sistemas reais combinam segmentação com paginação.
Mão na massa · colaborativo

Atividade em grupo · Caçadores de fragmentação

Em trios, aloquem processos e identifiquem fragmentação.

⏱️ 25 min👥 trios🧩 exercício

Roteiro

  1. Tenham uma memória de 100 KB e partições livres de 30, 10 e 20 KB.
  2. Aloquem pedidos de 25, 8 e 18 KB usando first-fit, best-fit e worst-fit.
  3. Comparem a fragmentação resultante em cada estratégia.
  4. Discutam como a paginação evitaria a fragmentação externa.
Alocadoraplica as estratégias
Auditormede a fragmentação
Relatorcompara os resultados
📤 Entrega: Tabela comparando first/best/worst-fit e a fragmentação de cada um.
Teste seu conhecimento

Mini-quiz · Aula 9

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

0/20

📌 Resumo — leve isto para a prova

  • Alocação contígua sofre fragmentação interna (partições fixas) e externa (variáveis).
  • A MMU traduz endereço lógico em físico; base/limite protegem o processo.
  • Paginação usa páginas/quadros fixos, elimina a fragmentação externa e usa TLB para acelerar.
  • Segmentação divide a memória por unidades lógicas de tamanho variável.
  • Sistemas reais combinam segmentação com paginação.