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