Gerenciamento de Memória em Sistemas Operacionais
Classificado em Computação
Escrito em em
português com um tamanho de 8,09 KB
Conceitos Fundamentais de Memória
Os programas precisam estar na RAM para serem executados. O Processador acessa diretamente a RAM.
- Interação CPU LOAD: Move dados da RAM para um registro.
- Interação CPU STORE: Move dados de um registro para a RAM (vice-versa).
- HD (Disco Rígido): As informações são armazenadas por meio de escrita magnética nas lâminas.
- Cache (MCache): Armazena arquivos mais frequentes para acesso rápido.
Gerenciamento de Memória
Administração da memória, verificando os espaços em uso, alocando e desalocando, e gerenciando as trocas da RAM com o HD.
Estratégias de Alocação de Memória
Alocação Contígua Simples
Presente nos primeiros Sistemas Operacionais (SO) monoprogramáveis. A memória é dividida em duas partições: uma para o SO e outra para os demais programas.
Vantagens e Desvantagens
- Vantagem: Eficiente em sistemas de tempo real.
- Proteção: O registrador de limite contém a memória mais alta usada pelo SO para que não seja alterada por outros processos.
- Desvantagem: Quantidade de memória limitada e aproveitamento não eficiente.
Alocação Particionada Estática Absoluta
Divide a RAM em partições. Problemas com programas grandes, que só executarão em certas partições.
Alocação Particionada Estática
Começa a administração verificando se a partição está livre ou não, diminuindo assim a espera na execução de novos programas.
- Fragmentação Interna: A memória alocada pode ser maior que a requerida, sobrando uma área livre dentro da partição.
Alocação Particionada Dinâmica
A RAM não é dividida; há espaço para o SO e para os demais. Resolve o problema anterior, pois, em vez de ter várias partes diferentes, há uma maior.
- Fragmentação Externa: Há espaço total, mas o programa não pode ser executado, pois não há um bloco contíguo do tamanho ou maior para ele entrar.
- Solução: Realocamento dos blocos ou Compactação.
Estratégias de Alocação (Escolha do Bloco)
- Best-fit (Melhor Ajuste): Coloca o programa na menor partição onde ele caiba, reduzindo o desperdício.
- Worst-fit (Pior Ajuste): Coloca o programa no maior bloco livre.
- First-fit (Primeiro Ajuste): Coloca o programa no primeiro bloco livre que ele caiba.
Swapping
Transfere um processo da RAM para o HD e depois o traz de volta.
Seu maior problema é o elevado custo das operações de entrada/saída (swapped in/out).
Se a memória estiver cheia, ele pega o programa com menor prioridade e o guarda no HD. Quando liberar espaço, ele o traz de volta.
Técnica de Overlay
Manter na memória apenas o que é necessário no momento. Necessário quando o processo é maior que a quantidade de memória disponível.
Memória Virtual e Paginação
Memória Virtual
Onde as memórias principal e secundária são combinadas, dando ao usuário a ilusão de existir uma memória muito maior que a memória principal.
O SO mantém 20% na memória e o restante no disco.
- Endereço Lógico (ou Virtual): Gerado pela CPU.
- Endereço Físico: Endereço visto pela unidade de memória.
Paginação
É a parte da gerência de memória onde o espaço de endereçamento virtual e o espaço de endereçamento real são divididos em blocos do mesmo tamanho (páginas e frames, respectivamente).
Exemplo: 64Kb de espaço de endereçamento virtual e 32 Kb de memória física. Podemos ter 16 páginas virtuais e 8 frames, considerando páginas de 4Kb.
Mapeamento
Realizado por hardware e Sistema Operacional, é a tradução de um endereço virtual em seu endereço físico correspondente.
MMU (Unidade de Gerenciamento de Memória)
A MMU constata que uma página virtual não está mapeada e força o desvio da CPU para o sistema operacional. Essa interrupção (trap) é denominada Falta de Página (PAGE FAULT).
Resolvendo a Falta de Página
O SO escolhe um frame pouco usado e salva em disco (reescreve seu conteúdo de volta ao disco). Em seguida, ele carrega a página virtual no frame recém-liberado, atualiza o mapeamento da tabela de páginas e reinicia a instrução causadora da interrupção.
Mapeamento – Tabela de Páginas
Serve para mapear páginas virtuais em frames (físicos) e resolver o problema de tabelas de páginas gigantescas.
Estratégias para otimizar tabelas:
- Ter uma única tabela de páginas.
- Ter a tabela totalmente na memória.
- Tabelas multinível (sub-tabelas que funcionam como índices em níveis).
TLB (Tabela de Tradução de Endereços)
Contém: descrição, tag (endereço virtual), bit de modificação, proteção e endereço físico (posição do frame na RAM).
Política de Alocação de Páginas
Determina quantos frames cada processo pode alocar na memória principal.
- Alocação Fixa: Cada processo recebe um número máximo de páginas que pode ser utilizado. Se o número for insuficiente, o processo gera um page fault e cede uma página para obter uma nova.
- Alocação Variável: O número máximo de páginas alocadas ao processo pode variar durante sua execução, em função de sua taxa de paginação.
Working Set
Conjunto de páginas constantemente referenciadas pelo processo, devendo permanecer na memória principal para que execute de forma eficiente. Deve ter um limite máximo de páginas.
Política de Substituição de Páginas
O maior problema na gerência de memória virtual por paginação não é decidir que página carregar para a memória, mas quais páginas remover.
Qualquer estratégia de realocação de páginas deve considerar se uma página foi ou não modificada antes de liberá-la para outro processo.
- First-in First-out (FIFO): A página que primeiro foi utilizada será a primeira a ser selecionada para substituição.
- Segunda Chance (SC):
- Se o bit R (Referência) for 0, além de ser a mais antiga, não estará sendo usada e pode ser substituída.
- Se R = 1 (página usada), passa o bit R para 0 e a página vai para o final da fila.
Não Recentemente Usada (NUR)
Classifica as páginas com base nos bits R (Referência) e M (Modificação):
- Classe 0: Não referenciada, não modificada (R=0, M=0)
- Classe 1: Não referenciada, modificada (R=0, M=1)
- Classe 2: Referenciada, não modificada (R=1, M=0)
- Classe 3: Referenciada, modificada (R=1, M=1)
Outros Conceitos
Problema de Fragmentação
A fragmentação só é encontrada, realmente, na última página, quando o código não a ocupa por completo (Fragmentação Interna).
Segmentação
Técnica de gerência de memória na qual o espaço de endereçamento virtual e o espaço de endereçamento real são divididos em blocos de tamanhos diferentes, chamados segmentos.
Permite uma relação entre a lógica do programa e sua divisão na memória.
Compartilhamento de Memória
Permite aos processos trabalhar sob um espaço de endereçamento comum em memória virtual.
Thrashing (Balanço)
Excessiva transferência de páginas e/ou segmentos entre a memória principal e memória secundária.
Ocorre em dois níveis: no próprio processo e no sistema.