Tópicos
Memória Virtual
P rof. Dr. José Luís Ze m
P rof. Dr. Re nato Kraide S offner
P rof. Ms. Rossano P ablo P into
Faculda de de Tecnologia de Americana
Introdução
E spaço de Endereçamento Virtual
Mapeamento
Paginação
S egmentação
S egmentação com Paginação
Proteção
Compartilhamento de Memória
S wapping em Memória Virtual
Trashing
Centro P aula S ouza
Introdução
Memória Virtual (v irtual memory) é uma técnica bastante poderosa
de gerenciamento de memória, onde as memórias principal e
secundária são combinadas , oferecendo ao usuário a impressão
de existir uma memória muito maior que a memória principal.
O conceito está baseado em desvincular o endereçamento feito
pelo processo dos endereços físicos da memória principal
Introdução
E n d e r e ç o F ís i c o
50 0
V ET [1 ]
50 1
V ET [2 ]
50 2
V ET [3 ]
50 3
V ET [4 ]
V ET [5 ]
50 4
Desta maneira, os processos e suas estruturas de dados deixam de
estar limitados ao tamanho da memória física disponív el.
.
.
.
59 9
.
.
.
.
.
.
V ET [1 0 0 ]
Um programa no ambiente de memória virtual não faz referência a
endereços físicos de memória (endereços reais), mas apenas a
endereços virtuais.
E n d e r e ç o v ir tu a l 0
E sp a ç o d e e n d e re ç a m e n to v irtu a l
Espaço de Endereçamento Virtual
No momento da execução de uma instrução, o endereço v irtual é
traduzido para um endereço físico para poder ser atendido pela
CPU.
O mecanismo de tradução do endereço virtual para o endereço
físico é denominado mapeamento.
O conjunto de endereços v irtuais que os processos podem
endereçar é chamado espaço de endereçamento virtual. Da
mesma maneira, o conjunto de endereços reais é chamado de
espaço de endereçamento real.
Espaço de Endere çamento Virtual
M e m ó ria V irtu a l
M e m ó r ia P r i n c i p a l
E n d e r e ç o v ir tu a l 1
E n d e r e ç o v ir tu a l 2
E n d e r e ç o v ir tu a l 3
E n d e r e ç o v ir tu a l 4
E n d e r e ç o v ir tu a l 5
.
.
.
E s p a ç o d e e n d e r e ça m e n to r e a l
Espaço de Endere çamento Virtual
E n d e r e ço re a l 0
En d e r e ço r e a l 1
En d e r e ço r e a l 2
En d e r e ço r e a l 3
.
.
.
E n d e r e ço re a l R
E n d e r e ç o v ir tu a l V
Mapeamento
Toda a estrutura do processo ou programa executado em seu
contexto precisa estar no espaço de endereçamento real para
poder ser referenciado pelo processador. Portanto, deve existir um
.
.
.
.
.
.
.
mecanismo que transforme endereços virtuais em endereços reais.
M e m ó r ia S e cu n d á r ia
Cada processo tem o mesmo espaço de endereçamento v irtual,
como se possuísse memória própria. O mecanismo de tradução se
encarrega de manter as tabelas de mapeamento exclusivas para
cada processo, relacionando os endereços virtuais do processo às
suas posições na memória física.
Mapeamento
Mapeamento
M e m ó r ia V i r t u a l
E s p a ço d e
e n d ere ça m en to
v ir t u a l d e A
E n d e r e ço v ir t u a l 1
.
.
.
Ta b e l a d e
m a p e a m en to
de A
.
.
.
M e m ó r ia P rin cip a l
M e m ó r ia P r in c ip a l
P r o c e ss o A
E s p a ço d e
e n d ere ça m en to
v i r tu a l d e B
.
.
.
M a p e a m e n to
E n d e r e ço v ir t u a l 1
Ta b e l a d e
m a p e a m en to
de B
.
.
.
Pro c e s s o B
P aginação
É a técnica de gerência de memória onde o espaço de
endereçamento virtual e o espaço de endereçamento real são
divididos em blocos do mesmo tamanho, chamados páginas.
P aginação
M e m ó r ia Pr in c ip a l
M e m ó r ia V ir tu a l
Pá g i n a r e a l 0
P á g in a v ir t u a l 0
Pá g i n a r e a l 1
As páginas no espaço virtual são denominadas páginas v irtuais,
enquanto as páginas no espaço real são chamadas de páginas
reais ou frames.
P á g in a v ir t u a l 1
Todo o mapeamento é realizado em nível de página, através de
tabelas de páginas.
Cada página virtual do processo possui uma entrada na tabela
(Entrada na Tabela de Página - ETP), com informações sobre o
mapeamento.
.
.
.
.
Ta b ela d e
p á g in a s
.
.
.
ETP
Pá g i n a r e a l R
Pá g i n a v i rtu a l 2
Pá g in a v i rt u a l V
M e m ó r ia Se cu n d á r ia
P aginação
P aginação
Pá g i n a v i rt u a l
Quando um programa é executado, as páginas v irtuais são
transferidas da memória secundária para a memória principal e
colocadas em frames.
D e s lo c a m e n to
E n d e r e ç o v i r tu a l
Sempre que o programa fizer referência a um endereço virtual, o
mecanismo de mapeamento localiza, na ETP da tabela do
processo, o endereço físico do frame.
N PV
D e s lo c .
T a b e la d e p á g i n a s
E TP
En d . d o f ra m e
O endereço v irtual é formado pelo número da página v irtual e um
deslocamento dentro da página.
En d . d o f ra m e
D e sl o c .
Fr am e
D e sl o c a m e n t o
E n d e r e ç o fís ic o
P aginação
P aginação
Além da informação sobre a localização da página virtual, a ETP
possui outras informações.
B it de validade que indica se uma página está ou não na memória
física (v alid bit ou residence bit).
B it de indicação se uma página
carregada (modify bit ou dirty bit).
M e m ó r i a P r in c i p a l
E n d e r e ço v irtu a l
Ta b e l a d e p á g i n a s
B i t d e v a l id a d e
0
Pa g
e fa
u lt
Pa g e in
sofreu alteração após ser
M e m ó r ia s e c u n d á r i a
M e m ó r i a P r in c i p a l
Ta b e l a d e p á g i n a s
B i t d e v a l id a d e
1
M e m ó r ia s e c u n d á r i a
P aginação
Paginação por Demand (Demand Paging)
P aginação
As páginas dos processos são transferidas da memória
secundária para a principal apenas quando são referenciadas.
O problema
pagináv eis.
da
fragmentação
também
existe
em
sistemas
A fragmentação só é encontrada, realmente, na última página,
quando o código não a ocupa por completo.
A maior ou menor fragmentação é conseqüência do tamanho da
página.
Paginação por Antecipação (Antecipatory Paging)
As páginas próximas àquela referenciada também são
carregadas, simulando uma prev isão de quais páginas serão
necessárias, trazendo-as antecipadamente para a memória.
P aginação
P aginação
P á g in a 0
PRO G RA M Fra g ;
VAR
P á g in a 1
PRO C ED U RE A ;
P á g in a 2
EN D ;
P á g in a 3
B E G IN
Páginas pequenas:
P á g in a 4
EN D .
F r a g m e n ta ç ã o
necessitam de tabelas de mapeamento maiores;
provocam maior taxa de paginação;
aumentam o número de acessos à memória secundária;
geram menor fragmentação.
O tamanho da página varia de sistema para sistema, mas
normalmente está entre 512 bytes a 4 Kbytes.
P aginação - W orking S et
P aginação - W orking S et
O conceito de W orking Set surgiu a partir da análise da taxa de
paginação dos processos.
Quando um programa iniciava sua execução, percebia-se uma
elevada taxa de page faults, que se estabilizava com o decorrer de
sua execução.
Localidade é a tendência que existe em um programa de fazer
referências às posições de memória relativ amente próximas.
P á g in a 0
I n i c i a li z a ç ã o
P á g in a 1
W H ILE () D O
B EG IN
P á g in a 2
P á g in a 3
P á g in a 4
P aginação - W orking S et
Se um programa foi desenv olvido utilizando-se as técnicas
estruturadas, o conceito de localidade estará presente com
certeza.
W orking Set é o conjunto de páginas que um processo referencia
constantemente, e por isso deve permanecer na memória
principal.
Caso contrário, aumenta-se
desempenho.
paginação, comprometendo
I m p r im e r e s u lta d o s
P aginação - W orking S et
A localidade tem um forte relacionamento com a maneira com que
a aplicação foi escrita.
a
EN D ;
o
O Working Set deve possuir um limite de páginas.
Quanto maior for o W orking Set, menor será a probabilidade de
ocorrerem page faults.
Quanto maior o Working Set, maior o consumo de memória e
menor a quantidade de processos carregados na memória principal
ao mesmo tempo, consequentemente, menor o grau de
multiprogamação.
P aginação - Realocação de P áginas
O maior problema na gerência de memória virtual por paginação
não é decidir qual página carregar para a memória, mas sim, quais
páginas remov er.
Qualquer estratégia de realocação de página deve considerar se
uma página foi ou não modificada, antes de liberá-la para outro
processo.
P aginação - Realocação de P áginas
O sistema possui um arquivo de paginação ( page file ) onde as
páginas modificadas ficam armazenadas.
M e m ó r i a P r i n c ip a l
A r q u iv o d e
p a g i n a çã o
Pa g e
out
Possíveis alterações feitas na página quando ocupada podem ser
perdidas.
P a g e in
P aginação - Realocação de P áginas
Sempre que o sistema liberar uma página, deverá gravá-la no
arquiv o de páginas ( page out ), preservando o seu conteúdo.
P aginação - Realocação de P áginas
Quando
uma destas páginas alteradas for referenciada
nov amente, ela será recuperada do arquiv o de páginas e trazida
para o W orking Set do processo ( page in ).
M e m ó r i a P r i n c ip a l
M e m ó r i a P r i n c ip a l
A r q u iv o d e
p a g i n a çã o
Pag e
ou
t
A r q u iv o d e
p a g i n a çã o
Pa g e
ou
t
P a g e in
P a g e in
P aginação - Realocação de P áginas
O sistema sabe se uma página foi alterada ou não através do bit de
modificação (modify bit ou dirty bit), que existe na ETP de cada
tabela de página.
A melhor estratégia de realocação seria aquela onde a escolha
caisse sobre uma página que não fosse referenciada num futuro
próximo, porém o SO têm dificuldade em prev er isso.
Assim, algumas estratégias são adotadas pelos SOs para a
realocação de páginas.
P aginação - Realocação de P áginas
First In First Out (FIFO)
A página que primeiro foi utilizada será a primeira a ser
escolhida.
Implementação bastante simples, sendo necessário apenas
uma fila onde as páginas mais antigas estão no início da fila e
as mais novas no final.
As páginas podem ter que voltar várias vezes à fila.
P aginação - Realocação de P áginas
Aleatória (RANDOM)
Esta escolha não utiliza critério algum para a seleção.
Todas as páginas do working set tem as mesmas chances de
serem selecionadas, inclusiv e páginas que são freqüentemente
referenciadas.
Apesar de ser uma estratégia que consome poucos recursos
não é tão comum.
P aginação - Realocação de P áginas
Least Recently Used ( LRU )
Esta estratégia seleciona
a página utilizada menos
recentemente, ou seja, a página que está mais tempo sem ser
referenciada.
Gera ov erhead causado pela atualização em cada paragina
referenciada, do momento do último acesso, além do algoritmo
de busca das páginas.
P aginação - Realocação de P áginas
Not Used Recently ( NRU )
B astante semelhante a LRU.
Nesta estratégia existe um flag que permite ao sistema a
implementação do algoritmo. O flag de referência indica
quando a página foi referenciada ou não, e está associado a
cada entrada na tabela de páginas.
Inicialmente, todas as páginas estão com flag indicando que
não foram referenciadas (0).
A medida que as páginas são referenciadas, o flag é modificado
pelo hardware (1), depois de certo tempo é possível saber
quais páginas foram referenciadas ou não.
S egmentação
A segmentação é uma técnica de gerência de memória, onde os
processos são divididos logicamente em sub-rotinas e estruturas
de dados, e colocados em blocos de informações na memória.
Os blocos tem tamanhos diferentes e são chamados de segmentos,
cada um com seu próprio espaço de endereçamento.
P aginação - Realocação de P áginas
Least Frequently Used ( LFU )
Neste esquema, a página menos referenciada, ou seja, a
menos freqüentemente utilizada será a página escolhida.
Para isso, é mantido um contador di número de referências
feitas às páginas.
A página que contiver o contador com o menor número de
referências será a página escolhida.
Este algoritmo privilegia páginas que são mais utilizadas.
Páginas que acabaram de entrar na memória podem ser
escolhidas para deixar a mesma.
S egmentação
P r o c e d im e n to X
P RO G RA M S e g m e n to ;
V A R A : A R R A Y. . .
C : ...
PRO C ED U RE X;
Pr o g r a m a Prin cip a l
F u n çã o Y
EN D ;
A grande diferença entre a paginação e a segmentação é que,
enquanto a primeira div ide a memória em partes de tamanho fixos,
sem qualquer ligação com a estrutura do processo, a segmentação
permite uma relação entre a lógica do processo e sua divisão na
memória.
FU N C T IO N Y;
A rra y A
EN D ;
B E G IN
EN D .
V a r iá v e l C
.
.
.
S egmentação
Os segmentos são mapeados através de tabelas de mapeamento
de segmentos (TMS).
Os endereços são compostos pelo número do segmento e um
deslocamento dentro do segmento.
O número do segmento identifica unicamente uma entrada na
tabela de segmentos (E TS), onde estão as informações sobre o
segmento na memória real.
S egmentação
S e g m e n t o v ir tu a l
D e sl o c a m e n to
E n d e r e ç o v i r tu a l
D e s lo c .
T a b e la d e se g m e n t o s
ET S
E n d . d o s e g m e n to
D e s lo c .
S e g m e n to n a
m e m ó r i a p r in c ip a l
D e s lo ca m e n to
E n d e r e ç o f ís ico
S egmentação
O SO mantém uma tabela com áreas liv res e ocupadas da
memória.
Quando um novo processo é carregado para a memória, o sistema
localiza um espaço livre que o acomode.
As estratégias para escolha da área liv re podem ser as mesmas
utilizadas na Alocação Particionada Dinâmica, ou seja, best fit,
worst fit ou first fit.
O problema da fragmentação também ocorre nesse modelo.
Um outro problema é sua complexidade, pois o SO dev e manter
tabelas de segmentos que v ariam de acordo com o número de
segmentos.
S egmentação com paginação
S istemas que implementam a segmentação com paginação
permitem a divisão lógica dos processos em segmentos e, por sua
v ez, cada segmento é div idido, fisicamente, em páginas.
S egmentação com paginação
P roteção
S e g m e n to v ir tu a l
A proteção é necessária para impedir que um processo, ao obter
acesso a uma página ou segmento do sistema, a modifique ou
mesmo tenha acesso a ela.
E ste esquema é implementado utilizando-se as entradas das
tabelas de mapeamento, onde alguns bits especificam os acessos
permitidos a cada uma das páginas / segmentos.
E n d e r e ço vir tu a l
N u m .
se g m e n to
N um .
p á g in a
D e slo c a m e n to
Ta b e la d e se g m e n to s
ETS
E n d . d a t a b e l a d e p á g in a s
L
Ta b e la d e p á g in a s
G
En d ereço da
p á g i n a / se g m e n to
ETP
E n d e re ç o d o fr a m e
B it s d e p r o te ç ã o
E n d e r e ço d o fr a m e
D e slo c a m e n to
E n d e r e ço físico
P roteção
Compartilhamento de Memória
E m ambientes multiprogramáveis, é comum a utilização de códigos
reentrantes.
E sp a ço d e
e n d e r e ça m e n to
vir t u a l d e A
E n d e r e ço vir tu a l 1
LG
D e scriçã o
00
10
11
Se m a ce sso
A ce ss o d e le itu r a
A ce ss o p a r a le itu r a / g r a v a ç ã o
T a b e la d e
m a p e a m e n to
d e A
.
.
.
M e m ó r ia P r in cip a l
P r o c e sso A
P á g in a
E sp a ço d e
e n d e r e ça m e n to
v ir tu a l d e B
E n d e r e ço vir tu a l 1
.
.
.
P r o ce ss o B
T a b e la d e
m a p e a m e n to
de B
S wapping em Memória Virtual
S wapping em Memória Virtual
M e m ó r ia P r in c i p a l
O conceito de swapping continua válido quando aplicado à
memória virtual.
P ro ce sso A
Pr o c e s s o B
Em sistemas que utilizam esta técnica, quando existem novos
processos que devem ser processados e não existe mais memória
real suficiente, o SO seleciona um ou mais processos que dev erão
deixar a memória para ceder espaço aos nov os processos.
Na prioridade, escolhe-se, dentre os processos, os de menor
prioridade e no critério estado do processo escolhe-se aqueles
processos que estão aguardando algum ev ento (bloqueados).
Sw
Pr o c e s s o D
ap
t
Os critérios utilizados para escolha do processo são a prioridade e
o estado do processo.
P ro ce sso C
ou
P ro ce sso F
P r o ce s s o E
M e m ó r ia P r in c i p a l
Pr o c e s s o B
P r o ce s s o A
Sw
ap
in
A r q u iv o d e
sw a p p in g
Pr o c e s s o C
P ro ce sso F
P ro ce sso B
P r o c e ss o D
Trashing
Trashing pode ser definido como sendo a excessiva transferência
de páginas / segmentos entre a memória principal e a memória
secundária.
Esse problema aplica-se tanto a sistemas que implementam
paginação como para aqueles que implementam a segmentação.
O trashing ocorre quando existem mais processos competindo por
memória do que espaço disponível.
Trashing
O SO tenta administrar a memória de maneira que todos os
processos sejam atendidos.
De qualquer maneira, se existir mais processos para serem
executados do que memória disponível, a solução seria
acrescentar mais memória principal.
Memória Virtual
P rof. Dr. José Luís Ze m
P rof. Dr. Re nato Kraide S offner
P rof. Ms. Rossano P ablo P into
Faculda de de Tecnologia de Americana
Centro P aula S ouza
Download

E n d e r e ç o F s i c o 500 501 502 503 504 . . . 599 V E T 1 ] V E T 2