Gerenciamento de Memória
O espaço de endereçamento cria uma espécie de memória abstrata. É o conjunto de endereços que um processo pode usar para endereçar a memória.
Conceitos Fundamentais
O gerenciador de memória tem duas funções vitais:
- Proteção: Impedir que um processo (ex: Navegador) escreva na memória de outro (ex: Editor de Texto), o que causaria travamentos.
- Realocação: Permitir que o programa seja carregado em qualquer lugar da memória RAM, não apenas no endereço fixo onde foi compilado.
Registradores Base e Limite
A forma mais simples de proteção.
- Base: Onde começa o programa na memória física.
- Limite: Qual o tamanho do programa.
- Hardware: Toda vez que o programa tenta acessar um endereço, a CPU verifica:
Base <= Endereço < Base+Limite.
Swapping (Troca de Processos)
O que fazer quando a soma da memória exigida pelos programas abertos é maior que a RAM instalada? O Swapping move um processo inteiro que está ocioso da memória RAM para o Disco (HD/SSD), liberando espaço. Quando o usuário volta a usar aquele processo, o SO o traz de volta para a RAM.
Gerenciamento de Espaços Livres
Como o SO sabe onde há buracos livres na RAM para colocar programas?
- Mapas de Bits: A memória é dividida em blocos pequenos. Um bit 0 significa livre, 1 significa ocupado.
- Listas Encadeadas: Uma lista
[Processo A] -> [Buraco Livre] -> [Processo B].
Memória Virtual
A memória virtual é uma técnica que permite executar programas que são maiores do que a memória física disponível. Ela quebra o programa em pedaços pequenos chamados Páginas.
Paginação (Paging)
- Endereço Virtual: O endereço que o programa “pensa” que está usando.
- Endereço Físico: O endereço real na RAM.
- MMU (Memory Management Unit): Um chip no processador que traduz Virtual -> Físico em tempo real.
Tabela de Páginas
É um “mapa” que diz: “A Página 1 do Word está no Quadro 500 da RAM”.
Falta de Página (Page Fault)
Ocorre quando o programa tenta acessar uma página que não está na RAM (está no disco).
- A CPU gera uma interrupção (trap).
- O SO assume o controle.
- O SO escolhe uma página pouco usada na RAM para remover (Page Replacement).
- O SO carrega a página necessária do disco para a RAM.
- O programa continua como se nada tivesse acontecido.
Isso explica por que o computador fica lento quando a RAM enche: o disco é milhares de vezes mais lento que a RAM, e o SO fica trocando páginas o tempo todo (Thrashing).