quarta-feira, 2 de abril de 2014

Memória Paginada

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 13

Objetivo: Entender o funcionamento da Memória Paginada, como ela é administrada e gerenciada pelo sistema operacional.

1. Introdução

Memória Paginada é a estratégia utilizada pelo sistema operacional para melhor gerenciar a memória do computador. Tanto a memória principal quanto a memória secundária será dividida em Páginas de Memória, formando a Memória Virtual. O conteúdo armazenado nas páginas de memória estará armazenado na memória principal ou na secundária e a alteração de uma página entre a memória principal e secundária é chamada de paginação.

A principal vantagem alcançada pela utilização da Memória Paginada é a facilidade na recuperação de informações que estão em páginas na memória secundária. A recuperação acontecerá por dois motivos: o processador estará carregando o código executável de um programa (o processo passou do estado de Bloqueio para o estado de Espera), ou um programa estará acessando alguma informação na memória virtual.

O sistema operacional, por meio do gerenciador de memória, detecta que essa informação não está na memória principal (essa situação é chamada de “Falha de Página”, ou “Page Fault” em inglês). Sempre que acontecer uma falha de página, o sistema operacional deverá realizar o seguinte procedimento:

Encontrar a página de memória na Memória Secundária;

Determinar qual área da Memória Principal será utilizada para receber os dados da Memória Secundária, e armazenar esses dados na Memória principal;

Passar para o programa a nova página de memória correspondente à informação solicitada.

O item dois pode ser expandido, caso não haja uma página de memória livre na memória principal (toda a memória principal está em uso) para armazenar os dados da memória secundária. Nesse caso, haverá duas paginações: uma retirando uma página da memória principal para a memória secundária, e outra no caminho inverso. Diz-se então que houve uma Troca de Páginas (Page Swap, em inglês).

2. Troca de Página

Muitos sistemas operacionais realizam a Troca de Página utilizando um algoritmo que verificará qual a página de memória menos utilizada. As páginas de memória menos utilizadas são consideradas como candidatas a uma eventual troca de página, pois a probabilidade de serem utilizadas logo após a troca é considerada pequena ou menor que a probabilidade de uso de uma página de memória que está sendo frequentemente acessada. Por exemplo, quando se está escrevendo um documento em um programa como o MS-Word ou OpenOffice Writer, as páginas de memória mais acessadas são as que possuem as folhas de texto mais próximas do ponto em que se está escrevendo o documento. Quando o documento atinge uma determinada quantidade de folhas, as primeiras folhas passam a ser menos acessadas, e consequentemente, as respectivas páginas de memória tornam-se então páginas menos utilizadas.

A maioria dos programas, quando estão em execução, assume um comportamento padrão no que diz respeito à utilização de memória, pois a freqüência com que a memória é solicitada é constante. Este comportamento define uma característica importante no gerenciamento da memória virtual: o conjunto de páginas de memória mais utilizadas pelo programa. O programa irá ser executado de maneira mais eficiente se este conjunto estiver armazenado na memória principal do computador. Um programa que, em relação à quantidade total de memória principal, trabalhe com uma quantidade reduzida de informação e instruções e que esteja constantemente em uso, ficará sempre na memória principal.

Se houver um programa que tenha uma quantidade de instruções muito grande, e trabalhe com uma quantidade de informação maior que o espaço disponível na memória principal (por exemplo, um programa de edição de vídeo está sendo utilizado para editar um filme, trabalhará com uma quantidade de informação superior a 4 GB), a realização de Trocas de Páginas será tão grande que prejudicará o desempenho do sistema, pois os principais recursos do computador: processador, memória principal e memória secundária, estarão em uso realizando as trocas de páginas de memória.

Para minimizar o problema de excesso de Troca de Página, duas medidas podem ser tomadas:

Aumentar a quantidade de memória principal: quanto maior for a memória principal do computador, maior será a quantidade de páginas de memória disponíveis dentro da memória principal;

Diminuir a quantidade de programas em execução no computador: quanto menos programas estiverem em execução, menor será a necessidade por páginas de memória, aumentando a possibilidade de existirem páginas disponíveis.

A medida escolhida dependerá do tipo de utilização do computador e dos recursos financeiros disponíveis.

3. Diferença entre Paginação e Troca de Página

A Paginação, vista na Unidade 12, é a transferência de dados inativos da memória principal para a memória secundária, enquanto que a Troca de Página acontece quando uma página da memória secundária irá ocupar o espaço de uma página em uso na memória principal.

A maioria dos sistemas operacionais modernos implementam essas duas técnicas, mas fazem um tratamento diferenciado quanto à nomenclatura utilizada:

No Linux, o mecanismo de Troca de Página é unificado com a Paginação, não havendo separação conceitual. A diferenciação é feita apenas na direção da troca:

Entrada de Página: termo utilizado para designar a transferência de uma página da memória secundária para a memória principal, Page-In em inglês.

Saída de Página: termo utilizado para designar a transferência de uma página da memória principal para a memória secundária, Page-Out em inglês.

No MS-Windows é criado um arquivo físico no disco para armazenar as páginas menos utilizadas, este arquivo é chamado de Arquivo de Paginação, pagefile.sys, e tanto a paginação quanto a troca de página são tratadas da mesma maneira.

4. Diferenças na Troca de Página entre o MS-Windows e o Linux

Nos sistemas operacionais MS-Windows, a Troca de Página é feita utilizando-se o arquivo pagefile.sys. A localização desse arquivo pode ser definida pelo usuário, mas geralmente fica no diretório principal do disco onde está instalado o sistema operacional, geralmente “C:\pagefile.sys”. O tamanho deste arquivo também pode ser definido pelo usuário, podendo ser de dois tipos:

Tamanho Variável: à medida que mais páginas são necessárias, o arquivo de paginação irá ser incrementado.

Tamanho Fixo: um tamanho fixo é definido e não será alterado.

A vantagem de ter o arquivo de paginação com tamanho variável é a garantia de que sempre espaço disponível para armazenar os programas e seus dados (limitado pelo tamanho total da unidade de armazenamento). Mas isso gera o inconveniente de acarretar em uma possível fragmentação do arquivo pagefile.sys, que implicará em perda do desempenho do computador. A utilização de um arquivo com tamanho fixo é uma garantia de que o arquivo jamais sofrerá fragmentação (contanto que o arquivo seja criado logo após a instalação do sistema operacional), mas limita a quantidade de memória disponível no computador. Para contornar esse problema, pode-se definir um arquivo com tamanho grande, mas pode-se comprometer o espaço disponível na unidade de armazenamento.

No Linux uma estratégia diferente é adotada: o arquivo de paginação fica completamente separado em uma Partição. Uma partição é uma divisão funcional da unidade de armazenamento. Se uma unidade de armazenamento for particionada em duas unidades, cada unidade será gerenciada pelo sistema operacional de maneira independente da outra unidade. O que acontece na prática é que se tem um arquivo de paginação fixo no Linux.

Nenhum comentário:

Postar um comentário