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