Gerenciamento de Memória: Fragmentação, Paginação e Swap
Classificado em Computação
Escrito em em
português com um tamanho de 5,87 KB
Fragmentação interna
Fragmentação interna é quando sobra espaço dentro de uma partição de memória que não consigo utilizar.
Solução — alocar dinamicamente a memória para que não haja desperdício.
Fragmentação externa
Fragmentação externa é quando sobra espaço entre dois espaços alocados que não consigo utilizar.
Solução — utilizar mecanismos que alocam espaço de forma que não sobre espaço livre fragmentado.
Aglutinação e Compactação
Aglutinação — pegar os espaços vazios vizinhos e juntar em um só.
Compactação — deslocar processos para outro espaço de modo que a fragmentação diminua.
Cálculo da fragmentação interna
Calcular a fragmentação interna: alocar os processos nas partições e ver quanto sobra de cada partição.
Algoritmos de alocação
- Best-fit — na hora de alocar procura o menor buraco onde o processo cabe.
- Worst-fit — aloca no maior buraco disponível.
- First-fit — aloca no primeiro local encontrado onde o processo caiba.
- Next-fit — pega o próximo local livre a partir do último local alocado.
Swap
Swap é um mecanismo do sistema operacional (S.O.) para mover processos para o disco a fim de liberar espaço na memória. É usado quando a memória estiver cheia e for necessário liberar espaço.
Unidades e potências de 2
Relação entre potências de 2, unidades em KB/MB e bytes:
2^10 = 1 KB = 1 024 bytes 2^11 = 2 KB = 2 048 bytes 2^12 = 4 KB = 4 096 bytes 2^13 = 8 KB = 8 192 bytes 2^14 = 16 KB = 16 384 bytes 2^15 = 32 KB = 32 768 bytes 2^16 = 64 KB = 65 536 bytes 2^17 = 128 KB = 131 072 bytes 2^18 = 256 KB = 262 144 bytes 2^19 = 512 KB = 524 288 bytes 2^20 = 1 MB = 1 048 576 bytes 2^21 = 2 MB = 2 097 152 bytes 2^22 = 4 MB = 4 194 304 bytes 2^23 = 8 MB = 8 388 608 bytes 2^24 = 16 MB = 16 777 216 bytes 2^25 = 32 MB = 33 554 432 bytes 2^26 = 64 MB = 67 108 864 bytes 2^27 = 128 MB = 134 217 728 bytes 2^28 = 256 MB = 268 435 456 bytes
Exercício: definir esquema de endereçamento por paginação
Defina um esquema de endereçamento usando paginação que permita endereçar uma memória de 128 MB, usando páginas de 4 KB.
Endereço lógico = 27 bits, porque 2^27 = 128 MB.
Deslocamento = 12 bits, porque 2^12 = 4 KB.
Bits para endereçar páginas = 27 − 12 = 15 bits.
Número de páginas = 2^15.
Páginas grandes
Vantagens — a tabela de páginas é menor.
Desvantagens — maior fragmentação interna.
Cálculos de probabilidade e utilização
N = 4 programas
P = 0,5 é a probabilidade de estar fazendo entrada/saída
Desperdício = p^n
Exemplo de potências de 0,5: 0,5^1 = 0,5; 0,5^2 = 0,25; 0,5^3 = 0,125; 0,5^4 = 0,0625; 0,5^5 = 0,03125; 0,5^6 = 0,015625; 0,5^7 = 0,0078125; 0,5^8 = 0,00390625; 0,5^9 = 0,001953125; 0,5^10 = 0,000976563; 0,5^11 = 0,000488281.
Aumento na taxa de utilização (exemplo)
N = 3 programas
P = 0,6
Fu = 1 − p^n = utilização atual
Adicionando 1 MB cabe mais 2 processos de 512 KB (supondo que processos rodem a 512 KB).
Fu = 1 − p^n (posterior)
Posterior − atual = aumento na utilização.
Memória virtual
- Memória virtual permite carregar partes do programa para ser executado sem precisar ter todo o programa em memória.
- Carga inicial do programa é mais rápida.
- Permite que mais programas sejam carregados em memória.
- Partes inúteis do programa não são carregadas.
Paginação versus segmentação
Na paginação o processo é quebrado em pedaços de tamanho fixo. Na segmentação o processo é dividido em segmentos de tamanhos variados.
Page fault
Page fault é quando uma página não está carregada na memória (ocorre em memória virtual).
Ocorre quando tento acessar uma página que ainda não está carregada na memória. A MMU gera uma interrupção, o S.O. carrega a página do disco para a memória e o programa retoma a execução.
Quando isso ocorre, o programa fica parado aguardando a finalização do S.O.
Fragmentação interna e tradução de endereços
Fragmentação interna ocorre, possivelmente, na última página.
Tradução do endereço lógico para endereço físico:
endereço lógico / tamanho da página = número do bloco (página); o restante é o deslocamento dentro da página.
Política de substituição de páginas
Quando a memória fica cheia e é necessário carregar uma nova página, alguma página que está na memória terá que ser removida — essa é a política de substituição de páginas.
Bit de modificação — indica que houve uma operação de escrita naquela página (também chamado de bit M).
Acesso à memória e locality
Programas estruturados acessam a memória em regiões subsequentes (localidade espacial/temporal). Programas não estruturados tendem a acessar a memória em partes diversas, o que pode gerar mais page faults.
Algoritmos de substituição (resumo)
- NRU — não recentemente usada (usa bits R e M).
- LRU — menos recentemente usada (última referência).
- Segunda chance — similar ao FIFO, mas verifica o bit R; se R = 1, zera R e dá uma segunda chance à página, passando para a próxima.