Você está na página 1de 49

Memria Virtual

Prof. Dr. Jos Lus Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto
Faculdade de Tecnologia de Americana Centro Paula Souza

Tpicos

Introduo Espao de Endereamento Virtual Mapeamento Paginao Segmentao Segmentao com Paginao Proteo Compartilhamento de Memria Swapping em Memria Virtual Trashing

Introduo

Memria Virtual (virtual memory) uma tcnica bastante poderosa de gerenciamento de memria, onde as memrias principal e secundria so combinadas , oferecendo ao usurio a impresso de existir uma memria muito maior que a memria principal.

O conceito est baseado em desvincular o endereamento feito pelo processo dos endereos fsicos da memria principal

Desta maneira, os processos e suas estruturas de dados deixam de estar limitados ao tamanho da memria fsica disponvel.

Introduo
E n d e r e o F s ic o 500 501 502 503 504 . . . 599 . . . V E T [1 ] V E T [2 ] V E T [3 ] V E T [4 ] V E T [5 ] . . . V E T [1 0 0 ]

Espao de Endereamento Virtual

Um programa no ambiente de memria virtual no faz referncia a endereos fsicos de memria (endereos reais), mas apenas a endereos virtuais. No momento da execuo de uma instruo, o endereo virtual traduzido para um endereo fsico para poder ser atendido pela CPU. O mecanismo de traduo do endereo virtual para o endereo fsico denominado mapeamento. O conjunto de endereos virtuais que os processos podem enderear chamado espao de endereamento virtual. Da mesma maneira, o conjunto de endereos reais chamado de espao de endereamento real.

Espao de Endereamento Virtual

E s p a o d e e n d e r e a m e n to v i r tu 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

E n d e r e o v ir tu a l 0

E n d e re o re a l 0 E n d e re o re a l 1 E n d e re o re a l 2 E n d e re o re a l 3

. . .
E n d e r e o v ir tu a l V

. . .
E n d e re o re a l R

Espao de Endereamento Virtual


M e m r ia V ir tu a l M e m r ia P r in c i p a l

. . .

. . . .

M e m r ia S e c u n d r ia

Mapeamento

Toda a estrutura do processo ou programa executado em seu contexto precisa estar no espao de endereamento real para poder ser referenciado pelo processador. Portanto, deve existir um mecanismo que transforme endereos virtuais em endereos reais.

Cada processo tem o mesmo espao de endereamento virtual, como se possusse memria prpria. O mecanismo de traduo se encarrega de manter as tabelas de mapeamento exclusivas para cada processo, relacionando os endereos virtuais do processo s suas posies na memria fsica.

Mapeamento
M e m r ia V ir tu a l

. . .

M e m r ia P r in c ip a l

. . .

M a p e a m e n to

Mapeamento
E sp a o d e e n d e r e a m e n to v ir tu a l d e A E n d e r e o v ir tu a l 1 Ta b e la d e m a p e a m e n to de A

. . .
M e m r ia P r in c ip a l

P r o ce ss o 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 v ir tu a l 1 Ta b e la d e m a p e a m e n to de B

. . .

P ro ce sso B

Paginao

a tcnica de gerncia de memria onde o espao de endereamento virtual e o espao de endereamento real so divididos em blocos do mesmo tamanho, chamados pginas. As pginas no espao virtual so denominadas pginas virtuais, enquanto as pginas no espao real so chamadas de pginas reais ou frames. Todo o mapeamento realizado em nvel de pgina, atravs de tabelas de pginas. Cada pgina virtual do processo possui uma entrada na tabela (Entrada na Tabela de Pgina - ETP), com informaes sobre o mapeamento.

Paginao
M e m r ia P r in c ip a l M e m r ia V i r tu a l P g in a r e a l 0 P g in a v ir tu a l 0 P g in a r e a l 1 P g in a v ir tu a l 1 Ta b e la d e p g in a s

P g in a v ir tu a l 2

. . .
P g in a r e a l R

. . . .
P g in a v ir tu a l V

ETP

M e m r ia S e c u n d r ia

Paginao

Quando um programa executado, as pginas virtuais so transferidas da memria secundria para a memria principal e colocadas em frames. Sempre que o programa fizer referncia a um endereo virtual, o mecanismo de mapeamento localiza, na ETP da tabela do processo, o endereo fsico do frame. O endereo virtual formado pelo nmero da pgina virtual e um deslocamento dentro da pgina.

Paginao
P g in a v ir tu a l D e s l o c a m e n to E n d e r e o v i r tu a l

N PV

D e slo c .

Ta b e la d e p g in a s

ETP E n d . d o fra m e

E n d . d o fra m e

D e slo c .

Fra m e D e s l o c a m e n to E n d e r e o fs ic o

Paginao

Alm da informao sobre a localizao da pgina virtual, a ETP possui outras informaes. Bit de validade que indica se uma pgina est ou no na memria fsica (valid bit ou residence bit). Bit de indicao se uma pgina sofreu alterao aps ser carregada (modify bit ou dirty bit).

Paginao
E n d e r e o v i r tu a l Ta b e la d e p g in a s M e m r ia P r in c ip a l

B it d e v a lid a d e 0
Pag e fa u

P a g e in
lt

M e m r ia s e c u n d r ia

M e m r ia P r in c ip a l Ta b e la d e p g in a s

B it d e v a lid a d e 1 M e m r ia s e c u n d r ia

Paginao

Paginao por Demand (Demand Paging)

As pginas dos processos so transferidas da memria secundria para a principal apenas quando so referenciadas.

Paginao por Antecipao (Antecipatory Paging)

As pginas prximas quela referenciada tambm so carregadas, simulando uma previso de quais pginas sero necessrias, trazendo-as antecipadamente para a memria.

Paginao

O problema paginveis.

da

fragmentao

tambm

existe

em

sistemas

A fragmentao s encontrada, realmente, na ltima pgina, quando o cdigo no a ocupa por completo. A maior ou menor fragmentao conseqncia do tamanho da pgina.

Paginao
PRO G RA M Fra g ; VAR

P g in a 0

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 g in a 4

EN D. F r a g m e n ta o

Paginao

Pginas pequenas:

necessitam de tabelas de mapeamento maiores; provocam maior taxa de paginao; aumentam o nmero de acessos memria secundria; geram menor fragmentao.

O tamanho da pgina varia de sistema para sistema, mas normalmente est entre 512 bytes a 4 Kbytes.

Paginao - Working Set

O conceito de Working Set surgiu a partir da anlise da taxa de paginao dos processos. Quando um programa iniciava sua execuo, percebia-se uma elevada taxa de page faults, que se estabilizava com o decorrer de sua execuo. Localidade a tendncia que existe em um programa de fazer referncias s posies de memria relativamente prximas.

Paginao - Working Set

P g in a 0

I n ic ia liz a o

P g in a 1

W H I L E () D O B E G IN

P g in a 2

P g in a 3

EN D ;

P g in a 4

I m p r im e r e s u lta d o s

Paginao - Working Set

A localidade tem um forte relacionamento com a maneira com que a aplicao foi escrita. Se um programa foi desenvolvido utilizando-se as tcnicas estruturadas, o conceito de localidade estar presente com certeza. Working Set o conjunto de pginas que um processo referencia constantemente, e por isso deve permanecer na memria principal. Caso contrrio, aumenta-se a paginao, comprometendo o desempenho.

Paginao - Working Set

O Working Set deve possuir um limite de pginas. Quanto maior for o Working Set, menor ser a probabilidade de ocorrerem page faults. Quanto maior o Working Set, maior o consumo de memria e menor a quantidade de processos carregados na memria principal ao mesmo tempo, consequentemente, menor o grau de multiprogamao.

Paginao - Realocao de Pginas

O maior problema na gerncia de memria virtual por paginao no decidir qual pgina carregar para a memria, mas sim, quais pginas remover. Qualquer estratgia de realocao de pgina deve considerar se uma pgina foi ou no modificada, antes de liber-la para outro processo. Possveis alteraes feitas na pgina quando ocupada podem ser perdidas.

Paginao - Realocao de Pginas

O sistema possui um arquivo de paginao ( page file ) onde as pginas modificadas ficam armazenadas.
M e m r ia P r in c ip a l A r q u iv o d e p a g in a o
Pag e out

P a g e in

Paginao - Realocao de Pginas

Sempre que o sistema liberar uma pgina, dever grav-la no arquivo de pginas ( page out ), preservando o seu contedo.
M e m r ia P r in c ip a l A r q u iv o d e p a g in a o
Pag e out

P a g e in

Paginao - Realocao de Pginas

Quando uma destas pginas alteradas for referenciada novamente, ela ser recuperada do arquivo de pginas e trazida para o Working Set do processo ( page in ).
M e m r ia P r in c ip a l A r q u iv o d e p a g in a o
Pag e out

P a g e in

Paginao - Realocao de Pginas

O sistema sabe se uma pgina foi alterada ou no atravs do bit de modificao (modify bit ou dirty bit), que existe na ETP de cada tabela de pgina. A melhor estratgia de realocao seria aquela onde a escolha caisse sobre uma pgina que no fosse referenciada num futuro prximo, porm o SO tm dificuldade em prever isso. Assim, algumas estratgias so adotadas pelos SOs para a realocao de pginas.

Paginao - Realocao de Pginas

Aleatria (RANDOM)

Esta escolha no utiliza critrio algum para a seleo. Todas as pginas do working set tem as mesmas chances de serem selecionadas, inclusive pginas que so freqentemente referenciadas. Apesar de ser uma estratgia que consome poucos recursos no to comum.

Paginao - Realocao de Pginas

First In First Out (FIFO)

A pgina que primeiro foi utilizada ser a primeira a ser escolhida. Implementao bastante simples, sendo necessrio apenas uma fila onde as pginas mais antigas esto no incio da fila e as mais novas no final. As pginas podem ter que voltar vrias vezes fila.

Paginao - Realocao de Pginas

Least Recently Used ( LRU )

Esta estratgia seleciona a pgina utilizada menos recentemente, ou seja, a pgina que est mais tempo sem ser referenciada. Gera overhead causado pela atualizao em cada paragina referenciada, do momento do ltimo acesso, alm do algoritmo de busca das pginas.

Paginao - Realocao de Pginas

Not Used Recently ( NRU )

Bastante semelhante a LRU. Nesta estratgia existe um flag que permite ao sistema a implementao do algoritmo. O flag de referncia indica quando a pgina foi referenciada ou no, e est associado a cada entrada na tabela de pginas. Inicialmente, todas as pginas esto com flag indicando que no foram referenciadas (0). A medida que as pginas so referenciadas, o flag modificado pelo hardware (1), depois de certo tempo possvel saber quais pginas foram referenciadas ou no.

Paginao - Realocao de Pginas

Least Frequently Used ( LFU )

Neste esquema, a pgina menos referenciada, ou seja, a menos freqentemente utilizada ser a pgina escolhida. Para isso, mantido um contador di nmero de referncias feitas s pginas. A pgina que contiver o contador com o menor nmero de referncias ser a pgina escolhida. Este algoritmo privilegia pginas que so mais utilizadas. Pginas que acabaram de entrar na memria podem ser escolhidas para deixar a mesma.

Segmentao

A segmentao uma tcnica de gerncia de memria, onde os processos so divididos logicamente em sub-rotinas e estruturas de dados, e colocados em blocos de informaes na memria. Os blocos tem tamanhos diferentes e so chamados de segmentos, cada um com seu prprio espao de endereamento. A grande diferena entre a paginao e a segmentao que, enquanto a primeira divide a memria em partes de tamanho fixos, sem qualquer ligao com a estrutura do processo, a segmentao permite uma relao entre a lgica do processo e sua diviso na memria.

Segmentao

P r o c e d im e n to X P R O G R A M S e g m e n to ; V A R A : A R R A Y... C : ... PRO C ED U RE X; EN D ; F U N C T IO N Y ; EN D ; B E G IN EN D . V a ri v e l C A rra y A P r o g r a m a P r in c ip a l F u n o Y

. . .

Segmentao

Os segmentos so mapeados atravs de tabelas de mapeamento de segmentos (TMS). Os endereos so compostos pelo nmero do segmento e um deslocamento dentro do segmento. O nmero do segmento identifica unicamente uma entrada na tabela de segmentos (ETS), onde esto as informaes sobre o segmento na memria real.

Segmentao
S e g m e n to v i r tu a l D e s l o c a m e n to E n d e r e o v i r tu a l

D e slo c .

T a b e la d e s e g m e n to s

ETS E n d . d o s e g m e n to

D e slo c.

S e g m e n to n a m e m r ia p r in c ip a l D e s l o c a m e n to E n d e r e o fs ic o

Segmentao

O SO mantm uma tabela com reas livres e ocupadas da memria. Quando um novo processo carregado para a memria, o sistema localiza um espao livre que o acomode. As estratgias para escolha da rea livre podem ser as mesmas utilizadas na Alocao Particionada Dinmica, ou seja, best fit, worst fit ou first fit. O problema da fragmentao tambm ocorre nesse modelo. Um outro problema sua complexidade, pois o SO deve manter tabelas de segmentos que variam de acordo com o nmero de segmentos.

Segmentao com paginao

Sistemas que implementam a segmentao com paginao permitem a diviso lgica dos processos em segmentos e, por sua vez, cada segmento dividido, fisicamente, em pginas.

Segmentao com paginao


S e g m e n to v ir tu a l

E n d e r e o v ir tu a l

N um . s e g m e n to

N um . p g in a

D e s l o c a m e n to

T a b e la d e s e g m e n to s

ETS E n d . d a ta b e l a d e p g in a s

Ta b e la d e p g in a s

ETP E n d e r e o d o fra m e

E n d e r e o d o fr a m e

D e s l o c a m e n to

E n d e r e o f s ic o

Proteo

A proteo necessria para impedir que um processo, ao obter acesso a uma pgina ou segmento do sistema, a modifique ou mesmo tenha acesso a ela. Este esquema implementado utilizando-se as entradas das tabelas de mapeamento, onde alguns bits especificam os acessos permitidos a cada uma das pginas / segmentos.

E n d e re o d a p g i n a / s e g m e n to

B its d e p r o te o

Proteo

LG 00 10 11

D e scri o S e m a ce sso A c e s s o d e l e itu r a A c e s s o p a r a le itu r a / g r a v a o

Compartilhamento de Memria

Em ambientes multiprogramveis, comum a utilizao de cdigos reentrantes.


E sp a o d e e n d e r e a m e n to v ir tu a l d e A E n d e r e o v ir tu a l 1 Ta b e la d e m a p e a m e n to de A

. . .
M e m r ia P r in c ip a l

P ro ce 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 v ir tu a l 1 Ta b e la d e m a p e a m e n to de B

. . .

P ro ce sso B

Swapping em Memria Virtual

O conceito de swapping continua vlido quando aplicado memria virtual. Em sistemas que utilizam esta tcnica, quando existem novos processos que devem ser processados e no existe mais memria real suficiente, o SO seleciona um ou mais processos que devero deixar a memria para ceder espao aos novos processos. Os critrios utilizados para escolha do processo so a prioridade e o estado do processo. Na prioridade, escolhe-se, dentre os processos, os de menor prioridade e no critrio estado do processo escolhe-se aqueles processos que esto aguardando algum evento (bloqueados).

Swapping em Memria Virtual


M e m r ia P r in c ip a l

P ro ce sso A P ro ce sso B

P ro ce sso F

P ro ce sso C
Sw
ap

P ro ce sso D P ro ce sso E

ou
t

M e m r ia P r in c ip a l

P ro ce sso B P ro ce sso A
Sw

ap

in

P ro ce sso C

A r q u iv o d e s w a p p in g P ro ce sso F

P ro ce sso B P ro ce sso D

Trashing

Trashing pode ser definido como sendo a excessiva transferncia de pginas / segmentos entre a memria principal e a memria secundria. Esse problema aplica-se tanto a sistemas que implementam paginao como para aqueles que implementam a segmentao. O trashing ocorre quando existem mais processos competindo por memria do que espao disponvel.

Trashing

O SO tenta administrar a memria de maneira que todos os processos sejam atendidos. De qualquer maneira, se existir mais processos para serem executados do que memria disponvel, a soluo seria acrescentar mais memria principal.

Memria Virtual
Prof. Dr. Jos Lus Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto
Faculdade de Tecnologia de Americana Centro Paula Souza