Buscar

Memória Virtual e Paginação

Prévia do material em texto

MEMÓRIA VIRTUAL
�A cada ano que passa, as tecnologias 
utilizadas no mundo da computação se 
desenvolvem cada vez mais, fazendo 
com que os aplicativos exijam cada vez 
mais recursos do sistema. mais recursos do sistema. 
�Conseqüentemente, a quantidade de 
memória requisitada também aumenta 
na mesma proporção
� Em grande parte dos computadores, a quantidade 
de memória RAM instalada por padrão não dá 
conta de rodar sozinha os mais importantes 
aplicativos ( navegador, suíte de 
criação, comunicadores instantâneos) ao mesmo 
tempo. tempo. 
� Por esse e outros motivos, o mecanismo de 
Memória Virtual foi desenvolvido, visando 
compartilhar a RAM de maneira eficiente entre os 
programas. Logo, sua importância para a 
computação é inegável, principalmente por 
aproveitar ao máximo o uso da RAM.
MODO COMO OS PROGRAMAS SÃO
ARMAZENADOS NA MEMÓRIA FISICA?
� Ao contrário do que muitas pessoas pensam, os 
programas ficam divididos em vários pequenos 
pedaços na memória física e não de forma 
contínua. 
� Por exemplo, a tabela abaixo demonstra um � Por exemplo, a tabela abaixo demonstra um 
exemplo de como os 
aplicativos Firefox, Skype e Photoshop poderiam 
estar presentes em uma memória RAM de 8 
posições:
� Como é possível observar, as posições são 
ocupadas da seguinte forma:
� Apesar da memória ser dividida em pequenos 
pedaços, cada programa é enganado pelo sistema 
operacional, pensando que a memória é contínua e 
exclusiva só para ele. Isso acontece por causa do 
mecanismo de Memória Virtual, que consiste em mecanismo de Memória Virtual, que consiste em 
criar tabelas que relacionam posições virtuais e 
reais da RAM para um mesmo aplicativo. 
� Por exemplo, o layout de memória(muito 
simplificado) que o Firefox enxerga seria algo como 
o mostrado a seguir:
� Olhando a tabela acima, o Firefox enxerga a 
memória de forma contínua (posições de 0 a 2) 
, enquanto a RAM trabalha de forma dividida em 
pequenos pedaços.
� Como é possível notar, a ordem dos dados não � Como é possível notar, a ordem dos dados não 
precisa ser a mesma, visto que a posição virtual 1 
corresponde à real 4, e a posição virtual 2 
corresponde à real 2.
MEMÓRIA VIRTUAL E PAGINAÇÃO
� A memória virtual foi um dos mecanismos mais 
interessantes criados até hoje no mundo da 
computação, fazendo com que programas 
compartilhem a RAM do sistema, pensando que 
possuem toda a memória disponível para uso possuem toda a memória disponível para uso 
próprio.
� Esse conceito engloba e utiliza vários outros 
menores, como cache de disco, paginação e tabela 
de páginas.
� Técnica de Memória Virtual: separação da memória 
lógica de usuário e memória física
� Somente parte dos programas precisam estar 
carregados na memória para execução
� Espaço de endereçamento lógico pode, portanto, � Espaço de endereçamento lógico pode, portanto, 
ser muito maior que o espaço de endereçamento 
físico
� Permite que espaços de endereçamento serem 
compartilhados por vários processos
� Possibilita criação de processos de forma mais 
eficiente
LIMITAÇÃO DAMEMÓRIA FÍSICA E O USO DE
CACHE DE DISCO
� Sem o uso da memória virtual e da cache de 
disco, seria comum o fato da RAM acabar muito 
rápido, pois os aplicativos necessitariam mais 
espaço do que o disponível. 
� Por exemplo, suponha um computador com 512 de � Por exemplo, suponha um computador com 512 de 
RAM rodando o Windows Vista e o Firefox. Por 
padrão, o Vista sozinho já ocupa aproximadamente 
500 MB e o Firefox 100 MB.
� Fazendo os cálculos, é possível perceber que os 
dois aplicativos juntos já estouram a quantidade de 
RAM total (600 > 512). 
� A solução mais natural é o uso da cache de disco, 
deixando armazenado na memória principal deixando armazenado na memória principal 
somente os trechos mais importantes do programa, 
enquanto que o resto do aplicativo fica no próprio 
disco HD( também chamado de memória 
secundária ).
� Por exemplo, suponha que dois arquivos do 
Microsoft Word (aa.doc e bb.doc) estejam abertos 
ao mesmo tempo, mas que somente o aa.doc 
esteja sendo editado no momento. 
� Se você pensar um pouco, poderá observar que o � Se você pensar um pouco, poderá observar que o 
documento que não está sendo editado (bb.doc) 
não precisa estar na memória principal a todo 
momento
� Simplificando bastante, é mais ou menos isso que 
acontece, o documento editado (aa.doc) fica 
armazenado na RAM e o não editado (bb.doc) na 
cache do disco.
� Para tornar mais eficiente seu gerenciamento, os 
dados são armazenados na memória em blocos, os 
quais são chamados Páginas de Memória. Logo, 
continuando com o mesmo exemplo, a página de 
memória que contem os dados do documento memória que contem os dados do documento 
aa.doc ficaria na RAM, enquanto que a página do 
bb.doc estaria somente no disco.
Cada documento pode ter uma ou mais páginas de 
memória, o que implica no fato de que um mesmo 
aplicativo possui muitas delas ao mesmo tempo.
� No exemplo abaixo, com a página do bb.doc 
somente no disco, a RAM fica livre para armazenar 
dados mais importantes de outros programas no 
espaço 3. Este é o conceito de cache de disco, 
utilizado na implementação da memória virtual.utilizado na implementação da memória virtual.
SISTEMA DE PAGINAÇÃO DE MEMÓRIA
� Até o exato momento, vimos os principais conceitos 
sobre memória virtual:
� A memória física é compartilhada por vários aplicativos 
ao mesmo tempo;
� Cada programa enxerga uma versão virtual própria da 
memória, não correspondendo ao modo real;
� Os programas não podem ser carregados de maneira 
completa na RAM, portanto, é necessário armazenar 
parte deles na memória primária e outra parte na 
secundária, através do mecanismo de páginas.
� A paginação de memória é nada mais que a junção 
de todos eles
� Neste mecanismo, cada programa possui 
uma tabela de páginas, a qual informa a posição 
exata de um página de memória qualquer ( na exata de um página de memória qualquer ( na 
RAM ou no Disco). 
� Em outras palavras, a tabela de páginas é a 
memória virtual que o programa enxerga. Para 
entender esses conceitos de forma mais palpável, 
vamos elaborar um exemplo bastante simplificado 
de sua organização.
� Suponha que 8 arquivos estejam abertos no Word, 
possuindo os seguintes nomes: aa.doc, bb.doc, 
cc.doc, dd.doc, ee.doc, ff.doc, gg.doc e hh.doc.
� Além disso, suponha também que cada um dos 
documentos possui uma página de memória documentos possui uma página de memória 
específica, com o mesmo nome do arquivos. Por 
motivos de simplificação, vamos usar uma RAM 
que armazena 8 páginas.
� Continuando, as páginas aa.doc, ee.doc e gg.doc 
estão na memória, enquanto que as demais estão 
no disco. Logo, o mecanismo de paginação e 
Memória Virtual pode ser organizado da seguinte 
maneira:maneira:
PAGINAÇÃO SOB DEMANDA: HARDWARE
� Na tabela acima, podemos observar que as 
páginas do Word estão dividindo espaço na RAM 
com outras pertencentes a aplicativos como o 
Skype e o Firefox. 
� A maioria dos sistemas operacionais reserva � A maioria dos sistemas operacionais reserva 
espaço no disco para efetuar a cache de disco 
durante a sua própria inicialização. Normalmente 
esta é uma região especial, não compartilhada com 
os demais arquivos armazenados no HD.
� No Windows, é possível reservar este espaço em 
qualquer partição já existente. Já no Linux, é 
necessário criar uma partição especial, chamada 
de Swap.
SUBSTITUIÇÃO DE PÁGINAS NA MEMÓRIA
� Quando um programa necessita trabalhar com uma 
página que não está na RAM, acontece o que 
chamamos de Falta de Página. (page fault)
� Deste modo, ele procura um espaço livre e passa a 
utilizá-loutilizá-lo
Caso toda a RAM esteja lotada, é necessárioefetuar a famosa troca de páginas, que faz com 
que a nova página saia do disco e vá para 
memória, do mesmo modo que alguma outra 
presente lá saia da memória e volte para o disco.
� Existem vários métodos de escolher qual página 
será expurgada de lá, entre os mais usados, está o 
que determina que o conjunto de dados que está 
há mais tempo sem ser acessado deve dar lugar.
� Conseqüentemente, as tabelas de ambos os 
programas envolvidos na operação ( uma única programas envolvidos na operação ( uma única 
tabela se as páginas forem do mesmo aplicativo), 
devem ser atualizadas coma as novas posições de 
memória das páginas. Este processo é realizado 
milhares de vezes por segundo, por vários 
programas ao mesmo tempo.
� Solução: Substituição de página
� Encontrar um página pouco utilizada para trocar
� Utiliza um algoritmo de seleção de vítima
ALGORITMOS DE SUBSTITUIÇÃO DE PÁGINAS
� Algoritmo FIFO (First-In, First-Out) ou PCPS 
(Primeiro a Chegar, Primeiro a Sair)
� Algoritmo Ótimo
� Algoritmo NRU (Not Recently Used)
Algoritmo LRU (Least Recently Used)� Algoritmo LRU (Least Recently Used)
� Algoritmo da Segunda Chance
� Algoritmo MFU
FIFO
� Página que foi primeiro utilizada (first-in) será a primeira 
a ser retirada (first-out)
� Fila (lista encadeada) de páginas
� Início: Página mais velha
� Fim: Página mais nova
� Falta de página� Falta de página
� Retira página do início
� Insere página nova no fim
� Simples
� A princípio: razoável que a página há mais tempo no 
working set deva ser retirada , mas isto nem sempre é 
verdade...
� Esta escolha não leva em consideração se a página 
está sendo muito utilizada ou não, o que não é muito 
adequado pois pode prejudicar o desempenho
do sistema. 
� Por este motivo, o FIFO apresenta uma deficiência 
denominada anomalia de Belady: a quantidade de falta denominada anomalia de Belady: a quantidade de falta 
de páginas pode aumentar quando o tamanho da 
memória também aumenta. 
� Por estas razões, o algoritmo FIFO puro é muito pouco 
utilizado. Contudo, sua principal vantagem é a facilidade 
de implementação: uma lista de páginas ordenada pela 
“idade”. Dessa forma, na ocorrência de uma falta de 
página a primeira página da lista será substituída e a 
nova será
acrescentada ao final da lista.
ALGORITMO ÓTIMO
� Trocar a página que não será usada no período 
mais longo
� Desempenho – deseja-se um algoritmo que resulte 
em um número mínimo de faltas de páginas (page
faults).faults).
� Problema: saber quando cada página será 
referenciada
É Impossível de se implementar
� Utilidade: Comparação com relação aos demais 
algoritmos
� Por estes motivos, o algoritmo ótimo só é utilizado 
em simulações para se estabelecer o valor ótimo e 
analisar a eficiência de outras propostas 
elaboradas.
� Seleciona uma página que não vai mais ser usada 
ou a que mais vai demorar a ser usada
� Impossível na prática: o SO ainda não tem bola de 
cristal ou joga tarô para saber o futuro das 
aplicaçõesaplicações
� Usado como parâmetro de desempenho
� NRU (Not Recently Used) Página não usada 
recentemente
� Escolhe a página que não foi recentemente utilizada 
Algoritmo
� As páginas são separadas em quatro categorias 
quando há page fault:
� Classe 0: não referenciada, não modificada
� Classe 1: não referenciada, modificada
� Classe 2: referenciada, não modificada;
� Classe 3: referenciada, modificada
� Uma página da classe mais baixa não vazia é escolhida 
aleatoriamente para ser substituída.
� Fácil de entender e implementar e tem desempenho 
adequado
� LRU (Least Recently Used) Menos usada 
recentemente
� Seleciona a página usada há mais tempo, isto é, o 
objetivo é retirar aquela que está há mais tempo 
sem ser referenciadasem ser referenciada
� Realizável : alto custo
� Manter lista:
� Início: Página usada mais recentemente
� Fim: Página usada menos recentemente
� NFU (Não Freqüentemente Usada)
ou LFU (Least Frequently Used)
� Aging (Envelhecimento)
Algoritmo Aging (Envelhecimento): modificação do � Algoritmo Aging (Envelhecimento): modificação do 
NFU
� Algoritmo da Segunda Chance
� É um algoritmo FIFO modificado
� MFU (Most Frequently Used)
� Escolhe a página mais freqüentemente usada
� Argumento: uma página com contador de valor 
baixo, foi, provavelmente, trazida para a memória baixo, foi, provavelmente, trazida para a memória 
recentemente e ainda será usada
PEQUENOS TRAVAMENTOS EM APLICATIVOS
� Sabe quando você está rodando algum aplicativo 
ou jogo pesado e pequenos travamentos ocorrem 
constantemente? 
� Existem muitas possibilidades que o problema seja 
ocasionado por “Thrashing”, ou seja, muitas ocasionado por “Thrashing”, ou seja, muitas 
páginas de memória precisam ser substituídas na 
mesma hora, confundindo o sistema e travando 
momentaneamente o aplicativo. Uma das principais 
maneiras de resolver este problema é adicionar 
mais memória RAM ao computador.
� Frequencia de Falta de páginas
� Estipula um limite para a taxa de falta de páginas
� Se a taxa do processo passa do limite superior
� O processo ganha mais quadros
� Se a taxa do processo cai do limite inferior
MEMÓRIA VIRTUAL
THRASHING
Siste
m
a
s O
p
e
ra
cio
n
ais
� O processo perde quadros
41
Siste
m
a
s O
p
e
ra
cio
n
ais
� 1) Diferencie página virtual de uma página real.
� Página virtual é um conjunto de endereços virtuais 
que faz parte do espaço de endereçamento virtual 
de um processo.Página real é um conjunto de de um processo.Página real é um conjunto de 
endereços reais localizado na memória principal. A 
página real está sempre associada a uma página 
virtual
� 2) Quais os benefícios oferecidos pela técnica de 
memória virtual? Como este conceito permite que um 
programa e seus dados ultrapassem os limites da 
memória principal?
� Os principais benefícios da técnica de memória virtual 
são possibilitar que programas e dados sejam do são possibilitar que programas e dados sejam do 
tamanho da memória principal, permitir um número 
maior de processos compartilhando a memória principal 
e minimizar o problema da fragmentação. O que 
possibilita que um programa e seus dados ultrapassem 
os limites da memória principal é a técnica de gerência 
de memória virtual que combina as memórias principal 
e secundária, estendendo o espaço de endereçamento 
dos processos.

Outros materiais

Perguntas Recentes