O que você vai aprender
Explicar alocação contígua e o problema da fragmentação.
Descrever a paginação e a tradução de endereços lógico→físico.
Comparar paginação e segmentação e entender a abordagem combinada.
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.
Da memória contígua às páginas
contígua→Fragmentação→Paginação→Segmentaçã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.
Endereço lógico × endereço físico
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.
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.
Fragmentação em uma tabela
Memória de 100 KB com partições livres e os tipos de desperdício que surgem:
| Tipo | O que é | Onde aparece |
|---|---|---|
| Fragmentação interna | Espaço sobrando dentro da partição alocada | Partições fixas / última página |
| Fragmentação externa | Livre total suficiente, mas espalhado em pedaços | Partiçõ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.
Stepper: first-fit alocando processos
Paginação
Como qualquer página cabe em qualquer quadro, o processo não precisa ocupar espaço contíguo na memória física.
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:
página + desloc.→Tabela de
páginas→Endereço físico
quadro + desloc.
O livro com índice remissivo
Paginação × segmentação
| Paginação | Segmentação | |
|---|---|---|
| Tamanho dos blocos | Fixo (páginas) | Variável (segmentos) |
| Visão | Física / uniforme | Lógica / do programador |
| Endereço | página + deslocamento | segmento + deslocamento |
| Fragmentação | Interna | Externa |
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:
tradução?→Sim: rápido→Não: tabela +
atualiza TLB
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.
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?
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.
Onde os alunos tropeçam
- 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.
Para fixar bem
- 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.
Reveal: por que separar lógico de físico?
Quais vantagens vêm de separar endereço lógico de físico?
Revisão relâmpago
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.
O essencial sobre memória
Atividade em grupo · Caçadores de fragmentação
Em trios, aloquem processos e identifiquem fragmentação.
Roteiro
- Tenham uma memória de 100 KB e partições livres de 30, 10 e 20 KB.
- Aloquem pedidos de 25, 8 e 18 KB usando first-fit, best-fit e worst-fit.
- Comparem a fragmentação resultante em cada estratégia.
- Discutam como a paginação evitaria a fragmentação externa.
Mini-quiz · Aula 9
20 questões sobre esta aula. Escolha e veja a explicação na hora.
📌 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.