Gerência de memória
Os computadores utilizam uma hierarquia de memória em sua organização, combinando memórias voláteis e não voláteis, tais como: memória cache, memória principal e memória secundária. Ao sistema operacional é destinada a função de coordenar e gerenciar a utilização dessas memórias de forma eficiente. Este serviço é implementado pelo sistema operacional através do gerenciador de memória.
O gerenciador de memória controla quais partes da memória estão sendo utilizadas e quais não estão. Além disso, ele é responsável por alocar espaço em memória aos processos que serão executados e liberar as posições de memória ocupadas quando os processos são finalizados. Outra funcionalidade do gerenciador de memória é controlar o swapping de informação, constante na execução das aplicações. Para iniciar a discussão sobre o tema da aula vamos entender, primeiramente, a função da MMU.
A MMU é um módulo de hardware que faz o mapeamento entre os endereços lógicos (end. da memória virtual) e os endereços físicos da memória (RAM), ou seja, é um dispositivo que transforma endereços virtuais em endereços físicos. Para isso, a MMU normalmente traduz número de páginas virtuais para número de páginas físicas utilizando uma cache chamada Translation Lookaside Buffer (TLB).
Em geral, os programas precisam ser compilados para que possam ser executados no sistema computacional. Várias atividades ocorrem entre o instante em que o mesmo é compilado e o momento em que ele inicia sua execução: geração do código objeto, código executável, alocação em memória, nova entrada no PCB, inserção da referência do processo na fila de apto, etc.
Gerenciamento Básico de Memória
Podemos classificar os gerenciadores de memória em dois tipos: os que permitem as trocas de processos entre a memória principal e o disco (troca de processos e paginação, mais complexos) e os que não permitem (muito mais simplificados e limitados). A necessidade da troca de processos e paginação acontece