Graduando
O Mecanismo de Memória Virtual foi criado porque a quantidade de memória RAM instalada por padrão nos computadores, não suporta executar sozinha os aplicativos mais importantes deste. Este mecanismo tem como objetivo compartilhar a RAM entre os programas, tendo o uso máximo da RAM. A Memória Virtual carrega e mantém em memória uma página ou segmento, apenas quando for necessário.
As necessidades para implementar uma memória virtual são:
Hardware deve suportar paginação e/ou segmentação;
Sistema operacional deve controlar o fluxo de páginas ou segmentos entre a memória secundária (disco) e a principal;
Necessidade de gerenciar
Áreas livres e ocupadas
Mapeamento de memória lógica em memória física
Substituição de páginas/segmentos.
Alocação de Memória
Alocação Estática: O programa executado lê e cria um processo, que é criado em armazenamento primário e recebe um espaço na memória. O espaço de memória é divido em duas partes: segmento de memória (armazena dados estáticos) e segmento de código (armazena instruções de programa). Para que se realize a alocação estática o compilador deve saber o total de memória que está livre, mandar esta informação para o SO para que este crie um segmento de dados.
Alocação Dinâmica: objetos alocados dessa maneira podem ser criados e liberados em qualquer ordem, qualquer momento. A memória reservada para objetos dinâmicos é chamada de heap.
Alocação Local: Este tipo de alocação é usado para variáveis locais, a funções e sub-rotinas. Isso quer dizer que o processo em execução deve manter acessível às variáveis locais da função ou procedimento que está ativo no momento. Como uma função pode ser recursiva, um número certo de funções pode estar entre sua execução em um determinado momento, mesmo que apenas uma esteja realmente ativa.
Fragmentação de Memória
Interna: Ocorre quando o processo não ocupa inteiramente as páginas reservadas para ele. Geralmente acontece porque o tamanho do processo