quarta-feira, 2 de abril de 2014

Memória Virtual

RICARDO DE MAGALHÃES SIMÕES - Sobre o Autor
Doutorando em Engenharia Elétrica, Mestre em Informática (2006) e Bacharel em Ciência da Computação (2003), todos pela Universidade Federal do Espírito Santo. Atualmente, Professor Substituto de Informática no CEFET-ES, Professor de Programação I no Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas à Distância no CEFET- ES, professor de Sistemas Operacionais pela ESAB. Tem experiência na área de Ciência da Computação, com ênfase em Desenvolvimento de Algorítmos, Educação de Informática para estudantes do Ensino Médio, atuando principalmente nos seguintes temas: Informática Básica, Programação nas linguagem C/C++/C#, Java, Pascal.
Página pessoal:
Curriculo Lattes::

UNIDADE 12
Objetivo: Aprender o conceito de Memória Virtual, como é o seu funcionamento, qual a sua relação com a memória principal e como é gerenciada pelo sistema operacional.

1. Introdução

A memória virtual é um recurso utilizado na computação que cria para os programas um ambiente de memória contínua e na prática é construído em um ambiente de memória fragmentada, podendo até ser utilizado dispositivos de armazenamento para o salvamento de informações de maneira temporária. A utilização de memória virtual torna o uso da memória principal mais eficiente.

O entendimento de Memória Virtual deve ir além do conceito de “memória temporária armazenada em disco”. O aumento da memória é o primeiro ganho que se tem ao utilizar-se memória virtual. O conceito real de memória virtual é: “gerenciar a memória de forma que os programas em execução no computador tenham um ambiente de memória unificada e contínua”. Os principais sistemas operacionais em operação atualmente fazem uso da técnica de Memória Virtual para obter com isso um aumento no desempenho do computador.
A técnica de memória virtual foi inicialmente desenvolvida nos anos de 1959 a 1962, na Universidade Manchester, Inglaterra, para o computador Atlas. Antes da criação da memória virtual gerenciada pelo sistema operacional, os próprios programas eram responsáveis por realizarem o gerenciamento da informação, utilizando a memória principal e os dispositivos de armazenamento de acordo com a necessidade inerente ao próprio programa.

A principal motivação para a criação da memória virtual foi o pensamento de se proporcionar aos desenvolvedores de programas um recurso mais facilitado de utilização da memória do computador. Na década de 1960 começaram a surgir os primeiros modelos de computadores comerciais que possuíam o recurso de memória virtual disponível, mas como toda tecnologia recém lançada, passou por um processo de popularização difícil.

Os primeiros sistemas operacionais implementavam técnicas rudimentares de memória virtual, que em comparação com os sistemas proprietários, em que os programas gerenciavam sua própria memória, tinham um desempenho abaixo do desejado para justificar uma substituição. Foi a IBM no final da década de 1960 que oficializou a adoção da memória virtual nos computadores ao lançar alguns modelos que utilizavam esse recurso. A partir de então, todas as empresas passaram a implantar nos sistemas operacionais a capacidade de gerenciamento da memória através da Memória Virtual.

A utilização de memória virtual em um sistema computadorizado depende principalmente da arquitetura do computador, mais especificamente, do modo de endereçamento de memória utilizado pelo processador. A Intel, desenvolvedora dos processadores Pentium, adotou o recurso de memória virtual em seus processadores em 1982 com o lançamento do modelo 80286. A Microsoft passou a utilizar o recurso de memória virtual apenas em 1990, no lançamento do MS-Windows 3.

Os programas utilizam a memória reservando espaços de dados para serem armazenados o código do programa em si e os dados que serão processados pelo programa. Este espaço de dados é chamado de Área de Endereçamento. Quando um programa é iniciado, o próprio sistema operacional reserva um Espaço de Endereçamento para armazenar o código executável do programa, e a medida que o programa é utilizado pelo usuário, mais espaços de endereçamento podem ser solicitados para armazenar os dados que estiverem sendo informados.

Para o sistema operacional gerenciar de forma mais eficiente a memória do computador, os espaços de endereçamento que um programa está utilizando são agrupados em um bloco único (a Área de Armazenamento formada pelos Espaços de Endereçamento) que é manipulado e administrado como uma única seqüência de dados na memória.

2. Implementação da Memória Virtual

A maioria das implementações de gerenciadores de memória virtual divide a memória em Espaços de Endereçamento de pelo menos 2 KB de tamanho, este espaço de dados é chamado de Página de Memória. Cada página é uma área contínua de dados, não fragmentada. Quanto maior a quantidade de memória disponível no computador, maior será o tamanho de uma Página de Memória.

Para realizar o mapeamento entre o Endereço Físico de Memória e o Endereço de Memória Virtual é utilizada uma Tabela de Paginação. Cada registro na Tabela de Paginação contém: o endereço da página inicial na Memória Virtual e o endereço real na memória física (que pode ser um valor na memória principal ou na memória secundária). Pode existir uma única Tabela de Paginação para todo o sistema ou podem existir tabelas específicas para cada aplicação em uso no computador.

A Paginação é a técnica empregada para se realizar a transferência de dados inativos, que podem ser programas ou informações não utilizadas, retirando-os da memória principal e colocando-os na memória secundária. Para executar a paginação, a maioria dos sistemas operacionais atuais utiliza o disco-rígido como memória secundária. Para os programas, a soma da memória principal e memória secundária será a memória disponível para armazenar informações.

Quando um programa não está em uso, ou quando uma informação não está sendo acessada, a área de memória que está reservada para guardar o código do programa ou os dados da informação, será retirada da memória física principal e colocada na memória física secundária. O endereçamento virtual não será afetado.

Quando o programa voltar a ser utilizado ou quando a informação for acessada, a paginação será feita no sentido contrário, retirando o que está na memória secundária e colocando na memória principal. O Espaço Físico utilizado na memória principal não é necessariamente o mesmo utilizado anteriormente, o que precisa ser mantido é o Espaço Virtual de Endereçamento.

3. Páginas Permanentes

Algumas páginas armazenadas na memória virtual não podem, em qualquer hipótese, sofrer paginação. Os programas ou informações contidas nessas páginas devem obrigatoriamente estar disponíveis durante todo o tempo de utilização do computador, alguns exemplos são:

A Tabela de Paginação propriamente dita, é uma informação que deve estar sempre disponível na memória principal;

Rotinas ativadas por Interrupção também devem estar sempre armazenadas na memória principal;

Dispositivos que utilizam o recurso de Acesso Direto à Memória (Direct Memory Access, DMA) devem ter sempre disponível no mesmo espaço físico de memória as informações que estão sendo manipuladas. Como a paginação não garante que os dados retornarão ao mesmo endereço físico, as informações desses dispositivos não poderão ser paginadas.

Nenhum comentário:

Postar um comentário