Vous êtes sur la page 1sur 65

Universidade Federal de Gois

Goinia 27/05/2010
Participantes:
Achiles Camilo Soares Neto
Bruno Blumenschein
Czar Augusto Ferreira
Maxwel Satoshi Duarte Otsuka
Tiago Borges Pereira

ndice
Aspectos bsicos
Paginao por demanda
Cpia na escrita
Substituio de pgina
Perguntas / Respostas

Aspectos Bsicos
A memria virtual uma tcnica que permite
a execuo de processos que no esto
completamente na memria. Uma vantagem
desse esquema que os programas podem
ser maiores do que a memria fsica.
A memria virtual tambm extrai a memria
principal
para
um
conjunto
de
armazenamento extremamente grande e
uniforme, separando a memria lgica, vista
pelo usurio, da memria fsica. Essa tcnica
livra os programadores dos problemas de
limitao do armazenamento de memria.

Aspectos Bsicos
A memria virtual permite que processos
compartilhem arquivos com facilidade e
implementem a memria compartilhada.
Ela ainda prov um mecanismo eficientes
para a criao de processos.
Contudo a memria virtual no fcil de
implementar e pode diminuir bastante o
desempenho, se usada de forma descuidada.

Aspectos Bsicos
Os algoritmos de gerncia de memria que
sero aqui esboados so necessrios por
causa de um requisito bsico: as instrues
executadas precisam estar na memria fsica.
A primeira tcnica para atender a esse
requisito colocar o espao de endereos
lgicos inteiro na memria fsica.
O carregamento dinmico pode ajudar a
aliviar essa restrio, mas exige precaues
especiais e trabalho extra pelo programador.

Aspectos Bsicos
O requisito de que as instrues precisam
estar na memria fsica para serem
executadas necessrio e razovel, mas
tambm lamentvel, porque limita o
tamanho de um programa ao tamanho da
memria fsica.
Como certas opes e recursos de um
programa podem ser usados raramente, na
verdade, o programa inteiro no precisa ser
necessariamente carregado.
E nos casos onde o programa inteiro
necessrio, ele pode no ser necessrio ao

Aspectos Bsicos
A capacidade de executar um programa que
esteja apenas parcialmente na memria teria
muitos benefcios:
O programa no seria mais restrito pela
quantidade de memria fsica disponvel. Os
usurios poderiam escrever programas para
um
espao
de
endereos
virtuais
extremamente grande, simplificado a tarefa
de programao.
Como cada programa do usurio poderia
exigir menos memria fsica, mais programas
poderiam ser executados ao mesmo tempo.

Aspectos Bsicos
Menos E/S seria necessria para carregar ou
trocar cada programa do usurio para a
memria, de modo que cada programa do
usurio seria executado mais rapidamente.
Assim, a execuo de um programa que no
esteja inteiramente na memria beneficiaria
tanto o sistema quanto o usurio.

Aspectos Bsicos
A memria virtual envolve a separao entre
a memria lgica e a memria fsica. Essa
separao permite que uma memria virtual
extremamente grande seja oferecida para os
programadores
quando
somente
uma
memria fsica menor estiver disponvel.
A memria virtual torna a tarefa de
programao muito mais fcil, pois o
programador no precisa mais se preocupar
com a quantidade de memria fsica
disponvel.

Aspectos Bsicos
Analisando a figura a seguir percebemos
que : permitimos que a heap cresa pra baixo
da memria por meio de chamadas de funo
sucessivas. O grande espao vazio entre a
heap e a fila faz parte do espao de endereos
virtuais, mas s exigir pginas fsicas reais se
a heap ou a pilha crescer. Os espaos de
endereo virtual que incluem os espaos
vazios so conhecidos como espaos de
endereos esparsos.

Aspectos Bsicos
O uso de um espao de endereo esparso
benfico porque os buracos pode ser
preenchidos enquanto os segmentos de pilha
ou heap crescem, ou se quisermos vincular
bibliotecas (ou possivelmente outros objetos
compartilhados) de forma dinmica durante a
execuo do programa.

Aspectos Bsicos
Alm de separar a memria lgica da
memria fsica, a memria virtual tambm
permite que arquivos e memria sejam
compartilhados por dois ou mais processos
diferentes, o que ocasiona os seguintes
benefcios:
As bibliotecas do sistema podem ser
compartilhadas
por
vrios
processos
diferentes, por meio do mapeamento do
objeto compartilhado para um espao de
endereos virtuais.

Aspectos Bsicos
De modo semelhante, a memria virtual
permite
aos
processos
compartilharem
memria. A memria virtual permite a um
processo criar uma regio da memria que
pode compartilhar com outro processo. Os
processos que compartilham essa regio a
consideram parte do seu espao de endereos
virtuais, embora as pginas fsicas da
memria sejam compartilhadas.

Aspectos Bsicos
A memria virtual pode permitir que as
pginas sejam compartilhadas durante a
criao do processo, por meio da chamada do
sistema fork(), agilizando assim a criao do
processo.

Paginao por demanda


Carrega inicialmente apenas as pginas de
um processo medida que forem necessrias.
Comum serem usadas em sistemas de
memria virtual.
Pginas so carregadas quando forem
exigidas durante a execuo do programa.
Pginas que no sero acessadas, ento so
carregadas para memria fsica.

Paginao por demanda


Semelhante a paginao com SWAP
Processos residem na memria secundria
(disco); quando so executados, passam para
memria virtual.
Lazzy Swapper:
Nunca troca uma pgina
para a memria a menos que seja necessria.
Swapper x Paginador:
Swapper trata processos inteiros.
Paginador se preocupa com as pginas
individuais de um processo.

Paginao por demanda


Distino: Pginas na Memria x Pginas do
Disco
Utiliza-se do esquema de bit vlido/invlido
bit vlido = pgina est na memria.
bit invlido = ou vlida mas est no disco.

Paginao por demanda

E se o processo tentar acessar uma pgina no


trazida para memria ?
page
fault
trap:
Hardware
de
paginao nota o bit
marcado
como
invlido, e causa uma
interceptao para o
S.O.
Ocorrendo a falha, devese trat-la conforme

Paginao por demanda


Hardware
O mesmo de swap e paginao:
Tabela
de
pgina:
invlido/invlido

marcar

como

Memria secundria:
Mantm as pginas
que no esto na memria principal. Ex:
swap space

Paginao por demanda


Desempenho
Baseando-se no tempo de acesso efetivo, no
melhor caso, este tempo igual ao tempo de
acesso memria.
Nos piores casos, deve-se levar em conta a
ocorrncia de interceptao e quando ela
ocorre.

CPIA NA ESCRITA

A tcnica conhecida como cpia na


escrita (copy on write) funciona
permitindo que os processos pai e filho
compartilhem as mesmas pginas.
A proteo de pgina por cpia na
escrita uma otimizao que o
gerenciador de memria usa para
economizar a memria fsica e preciosos
ciclos de CPU no caso de regies que
nunca so acessadas.

CPIA NA ESCRITA

As pginas compartilhadas so marcadas


como pginas de cpia na escrita,
significando que, se um processo escrever
em uma pgina compartilhada, uma cpia
da pgina compartilhada ser criada.
A cpia na escrita permite a criao de
processos mais eficientes, pois somente
pginas modificadas so copiadas.

CPIA NA ESCRITA
O processo de cpia na escrita acontece da
seguinte forma:

Quando um processo mapeia uma viso de


cpia na escrita de um objeto de seo que
contm pginas de leitura/escrita, em vez de
criar um processo de cpia privada, o
gerenciador de memria adia a criao de
uma cpia das pginas at que a pgina seja
modificada.

CPIA NA ESCRITA

Dois processos esto compartilhando trs pginas, cada


uma marcada como cpia-na-escrita.

CPIA NA ESCRITA

Se um thread em qualquer processo escreve


na pgina, uma falta de gerenciamento de
memria gerada.
O gerenciador de memria v que a escrita
para uma pgina de cpia na escrita e, em
vez de informar a falta como uma violao
de acesso, ele reserva uma nova pgina de
leitura/escrita na memria fsica.
Copia o contedo da pgina original para a
nova pgina, atualiza a informao de
mapeamento de pgina e dispensa a
exceo

CPIA NA ESCRITA

Faz com que a instruo que gerou a falta


seja novamente executada. Dessa vez, a
operao de escrita ter sucesso.
A pgina recm copiada agora privada ao
processo que fez a escrita, e no visvel
aos outros processos que ainda
compartilham a pgina de cpia na escrita.
Cada novo processo que escreve nessa
mesma pgina compartilhada tambm
receber sua prpria cpia privada.

CPIA NA ESCRITA

CPIA NA ESCRITA

Somente as pginas que podem ser


modificadas precisam ser marcadas como
cpia na escrita.
As pginas que no podem ser modificadas
(pginas contendo cdigo executvel)
podem ser compartilhadas pelo pai e pelo
filho.

CPIA NA ESCRITA

A cpia na escrita uma tcnica comum


utilizada por vrios sistemas operacionais,
inclusive Windows XP, Linux e Solaris.

Substituio de pginas
Considere a seguinte situao:
Enquanto um processo do usurio est sendo
executado, ocorre uma falha de pgina.
O sistema operacional determina onde a pgina
desejada est residindo no disco, mas descobre
que no existe quadros livres na lista de quadros
livres: TODA A MEMRIA EST SENDO
UTILIZADA.
Mediante a esta situao a soluo mais

comum a substituio de pginas.

Substituio de pginas
A substituio de pginas consistem em encontrar um

quadro que no esteja sendo usado e o liberlo.


Como?

Liberando o quadro, escrevendo seu contedo no swap

space e alterando a tabela de pginas (e todas as


outras tabelas) para indicar que a pgina no est mais
em memria.
Pode-se usar o espao liberado para manter a pgina no
qual o processo notou a falha.
Modificamos a rotina se servios de falha de pginas
para incluir a substituio de pgina:

Substituio de pginas

Encontrar o local da pgina desejada no disco;


Encontrar um quadro livre:

Se houver um quadro livre, use-o;


Se no houver um quadro livre, use um algoritmo
de substituio de pgina para selecionar um
quadro vtima;
Envie o quadro vtima para o disco; mude as tabelas
de pgina e quadro de acordo;

Ler a pgina desejada para o quadro recmliberado; mudar as tabelas de pgina e quadro;
Reiniciar o processo do usurio.

Substituio de pginas

Substituio de pginas
Observe que, se nenhum quadro estiver livre,

duas transferncias de pgina so exigidas (Uma


para fora e outra para dentro).
Para reduzir este custo pode-se ser usado um bit
de modificao. Cada pgina ou quadro pode
ter um bit de modificao associado a ela no
hardware.
Quando selecionarmos uma pgina para

substituio, examinamos seu bit de modificao:

Se o bit estiver marcado, sabemos que a pgina foi


modificada desde que foi lida no disco e neste caso
precisamos escrever esta pgina no disco;
Se o bit no estiver marcado, sabemos que a pgina no
foi modificada e, consequentemente, no precisamos
movimentar essa pgina para o disco.

Substituio de pginas
A substituio de pgina algo bsico na

paginao por demanda. Ela completa a


separao de memria lgica e memria fsica.
Se tivermos um processo do usurio com 20
pginas, poderemos execut-lo em 10 quadros
usando a paginao por demanda e um
algoritmo de substituio para encontrar um
quadro livre sempre que necessrio.

Substituio de pginas

Substituio de pginas FIFO


O algoritmo de substituio de pginas mais
simples o First In First Out (FIFO).
Um algoritmo de substituio FIFO associa a
cada pgina a hora em que essa pgina foi
trazida da memria.
Quando uma pgina tiver de ser substituda,
a pgina mais antiga ser a escolhida.
O algoritmo de substituio FIFO fcil de
entender e programar. Contudo, seu
desempenho nem sempre bom.

Substituio de pginas

Substituio de pginas
Substituio de pginas FIFO
Para ilustrar os problemas que so possveis com
ASFIFO considere o grfico do prximo slide.
Observe que a quantidade de falhas para quatro
quadros (dez) maior do que a quantidade de
falhas para trs quadros (nove).
Este resultado inesperado conhecido como
anomalia de Belady: para alguns algoritmos de
substituio de pgina, a taxa de falha de
pgina pode aumentar enquanto a quantidade
de quadros alocados aumenta. Poderamos
esperar que, dado mais memria a um processo,
seu desempenho melhorasse.

Substituio de pginas

Substituio de pginas
Substituio de pgina tima
Um resultado da descoberta da anomalia de
Belady foi a busca de um algoritmo de
substituio de pgina tima.
Um algoritmo de substituio de pgina tima
possui a menor taxa de falhas de pginas de
todos os algoritmos, e nunca sofrer com a
anomalia Belady. Esse algoritmo chamado de
OPT ou MIN. Ele simples:
Substitua a pgina que no ser usada pelo maior

perodo.

Substituio de pginas

Substituio de pginas
Substituio de pgina tima
Infelizmente, o algoritmo de substituio de
pgina tima difcil de implementar, pois
exige o conhecimento futuro da string de
referncia. Como resultado, o algoritmo
timo usado para estudos de comparao.
Por exemplo, pode ser til saber que,
embora um novo algoritmo no seja ideal,
est dentro dos 12,3% do ideal, no mximo,
de dentro dos 4,7% da mdia.

Substituio de pginas
Substituio de pgina LRU
Se o algoritmo timo no vivel, talvez uma
aproximao do algoritmo timo seja possvel.
A distino principal entre FIFO e OPT :
FIFO usa a hora em que uma pgina foi trazida da

memria;
OPT usa a hora em que uma pgina dever ser
usada.

Se usarmos o passado recente como uma

aproximadamente para o futuro prximo, ento


poderemos substituir a pgina que no foi usada
pelo maior perodo.

Substituio de pginas
Substituio de pgina LRU
Esta tcnica o algoritmo Lest Recently Used
(LRU menos recentemente usado);
A substituio LRU associa a cada pgina a
hora do ltimo uso desta pgina. Quando uma
pgina tiver de ser substituda, a LRU escolhe a
pgina que no foi usada pelo maior perodo;

Substituio de pginas

Substituio de pginas
Substituio de pgina LRU
O maior problema como implementar a
substituio LRU. Um algoritmo de substituio
de pgina LRU pode exigir assistncia substancial
do hardware. O problema determinar a ordem
dos quadros definidos pelo horrio da ltima
utilizao. Duas implementaes so viveis:
Contadores: no caso mais simples associamos a

cada entrada da tabela de pgina um campo de


tempo de uso e acrescentamos a CPU um relgio e
um contador lgico. Sempre que feita uma
referncia a pgina, o contedo do registrador de
relgio copiado para o campo de horrio de uso
na tabela de pgina para esta pgina.

Substituio de pginas
Substituio de pgina LRU
Pilha: outra tcnica para implementar a

substituio LRU manter uma pilha de nmeros


de pgina. Sempre que uma pgina referenciada,
ela removida da pilha e colocada no topo.
Deste modo, o topo da pilha sempre a pgina
usada mais recentemente, e a pagina inferior a
pgina LRU.
Como as entradas precisam ser removidas do meio
da pilha, melhor implementar essa tcnica
usando uma lista duplamente encadeada com um
ponteiro para a cabea e outro para o final.

Substituio de pginas
Substituio de pgina por aproximao LRU
Poucos sistemas computadorizados provem
suporte de hardware suficiente para a
verdadeira substituio de pgina LRU e outros
algoritmos de substituio precisam ser
utilizados.
Muitos sistemas provem alguma ajuda na forma
de bits de referncia. O bit de referncia
definido pelo hardware sempre que a pgina
referenciada. Os bits de referncia esto
associados a cada entrada na tabela de pginas.

Substituio de pginas
Substituio de pgina por aproximao LRU

Inicialmente, todos os bits so apagados (com 0)

pelo sistema operacional.


A medida que um processo executado, o bit
associado a cada pgina referenciada marcada
(com 1) pelo hardware.
Depois de um algum tempo podemos determinar
quais pginas no foram usadas verificando o bit de
referncia embora no saibamos a ordem do uso.
Essa informao a base para muitos algoritmos de
substituio de pgina que se aproximam da
substituio LRU.

Substituio de pginas
Algoritmo de bits de referncia adicionais

mantido um byte (8 bits) para cada pgina em

uma tabela de memria;


Em intervalos regulares uma interrupo de
temporizador transfere o controle para o SO.
O sistema operacional desloca o bit de referncia de
cada pgina para o bit para o bit de alta ordem de
seu byte de 8 bits deslocando os outros bits para a
direita em 1 bit e descartando o bit de baixa ordem;
Esses registradores de deslocamento de 8 bits
comtm o histrico do uso da pgina para os oito
ltimos perodos;

Substituio de pginas
Algoritmo de bits de referncia adicionais

Se o registrador de deslocamento tiver 00000000

a pgina no foi usada por oito perodos;


Uma pgina utilizada pelo menos uma vez a cada
perodo teria um registrador de deslocamento
igual a 11111111;
Uma pgina com o registrador de deslocamento
igual a 11000100 foi usada mais recentemente
do que uma com 01110111;
Se interpretarmos esses bytes de 8 bits como
inteiros sem sinal, a pgina com o menor nmero
a pgina LRU e poder ser substituda;
Esse algoritmo chamado algoritmo de
substituio de pgina da segunda chance;

Substituio de pginas
Algoritmo da segunda chance

O algoritmo bsico da segunda chance um

algoritmo de substituio FIFO;


O que muda que quando uma pgina tiver sido
selecionada inspecionamos seu bit de referncia:
Se o valor for 0, prosseguimos com a substituio;
Se o valor for 1, damos uma segunda chance a

pgina e selecionamos a prxima pgina FIFO;

Quando uma pgina recebe uma segunda

chance, seu bit de referncia apagado e sua


hora de chegada reiniciada para a hora atual;

Substituio de pginas
Algoritmo da segunda chance melhorado

Pode-se melhorar o algoritmo da segunda chance

considerando o bit de referncia e o bit de


modificao como um par ordenado:

(0,0) nem usada recentemente nem modificada,

melhor pgina a ser substituda;


(0,1) no usada recentemente mas modificada no
to bom pois a pgina precisar ser escrita antes de
ser substituda;
(1,0) usada recentemente mas limpa provvel
que seja usada novamente;
(1,1) usada recentemente e modificada provvel
que logo seja usada novamente e a pgina ter que
ser escrita no disco antes de poder ser substituda;

Substituio de pginas
Substituio de pgina baseada em contagem

Pode-se manter um contador do nmero de referncias

feitas a cada pgina e desenvolver os dois esquemas a


seguir:

O algoritmo Lest Frequently Used LFU (menos

freqentemente usada) exige que a pgina com a menor


contagem seja substituda:
O motivo para essa seleo que uma pgina usada de
maneira ativa deve ter um contador de referncia grande,
porm, um problema surgir uma pgina for bastante usada
durante a fase inicial de um processo mas nunca mais for
usada novamente;
O algoritmo Most Frequently Used MFU (mais
freqentemente usada) baseada no argumento de que a
pgina com a menor contagem provavelmente acabou de
ser trazida da memria e ainda est para ser usada.

Substituio de pginas
Algoritmo com buffer de pgina

Outros procedimentos so usados em conjunto com

o algoritmo de substituio de pgina:

Os sistemas mantm um banco de quadros livres;


Quando ocorre uma falha, um quadro livre escolhido

como antes;
A pgina desejada lida para um quadro livre do
banco antes de a vtima ser retirada;

Este procedimento permite ao processo reiniciar

assim que possvel, sem esperar a pgina vtima ser


retirada;
Quando a vtima mais tarde for retirada, seu quadro
ser acrescentado ao banco de quadros livres

Substituio de pginas
Algoritmo com buffer de pgina

Uma expanso desta idia :


Manter uma lista de pginas modificadas;
Quando o dispositivo de pginas tiver ocioso
uma pgina modificada ser selecionada e
escrita no disco e seu bit de modificao
zerado;
Esse esquema aumenta a probabilidade de

uma pgina estiver limpa quando for


selecionada para substituio e no precisar
ser escrita no disco;

Perguntas
1- Porque interessante a utilizao de
memria virtual do ponto de vista da
programao?
2- Quais as semelhanas e diferenas entre
Paginao por demanda e SWAP?
3- Qual o principal benefcio do uso da tcnica
da Cpia na escrita ?
4- Qual algoritmo de substituio de pginas
mais simples? Comente-o.
5- Quais fatores afetam o desempenho de uma
paginao por demanda?

Respostas
1- Porque interessante a utilizao de
memria virtual do ponto de vista da
programao?
A memria virtual interessante para o
programador porque o programa no teria
que ser mais restrito pela quantidade de
memria fsica disponvel. O programador
poderia assim escrever programas para um
espao de endereos virtuais extremamente
grande, deixando a programao mais
simples.

Respostas
2- Quais as semelhanas e diferenas entre
Paginao por demanda e SWAP?
Em ambos os processos residem na memria
secundria e quando so executados passam
pra memria virtual; uma troca s realizada
quando necessrio. Na Paginao preocupase com as pginas individuais de cada
processo, no swap trata-se de processos
inteiros

Respostas
3- Quais os benefcios da proteo de pgina
por cpia na escrita?

Otimizao para economizar a memria


fsica e preciosos ciclos de CPU no caso de
regies que nunca so acessadas. Alm de
permitir a criao de processos mais
eficientes,
pois
somente
pginas
modificadas so copiadas.

Respostas
4- Qual algoritmo de substituio de pginas
mais simples? Comente-o.

O algoritmo de First In First Out (FIFO),


onde um algoritmo de substituio FIFO
associa a cada pgina a hora em que essa
pgina foi trazida da memria. Quando
uma pgina tiver de ser substituda, a
pgina mais antiga ser a escolhida.

Respostas
5- Quais fatores afetam o desempenho de uma
paginao por demanda?

O desempenho de uma paginao por


demanda depende da ocorrncia de
interceptao e quando e como ela ocorre.

Referncias
Sistemas operacionais com JAVA. Abraham Silberchatz

Vous aimerez peut-être aussi