You are on page 1of 49

Memória Virtual

Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto
Faculdade de Tecnologia de Americana Centro Paula Souza

Tópicos
         

Introdução Espaço de Endereçamento Virtual Mapeamento Paginação Segmentação Segmentação com Paginação Proteção Compartilhamento de Memória Swapping em Memória Virtual Trashing

Introdução

Memória Virtual (virtual 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

Desta maneira, os processos e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível.

Introdução
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 ]

O conjunto de endereços virtuais que os processos podem endereçar é chamado espaço de endereçamento virtual. Da mesma maneira. O mecanismo de tradução do endereço virtual para o endereço físico é denominado mapeamento.Espaço de Endereçamento Virtual  Um programa no ambiente de memória virtual não faz referência a endereços físicos de memória (endereços reais). o endereço virtual é traduzido para um endereço físico para poder ser atendido pela CPU.    . No momento da execução de uma instrução. mas apenas a endereços virtuais. o conjunto de endereços reais é chamado de espaço de endereçamento real.

E n d e re ço re a l R . . E n d e r e ç o v ir tu a l V . .Espaço de Endereçamento 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 . . .

. .Espaço de Endereçamento 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 . . . .

 Cada processo tem o mesmo espaço de endereçamento virtual. relacionando os endereços virtuais do processo às suas posições na memória física.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. deve existir um mecanismo que transforme endereços virtuais em endereços reais. 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. Portanto.

. . M e m ó r ia P r in c ip a l . . M a p e a m e n to .Mapeamento M e m ó r ia V ir tu a l . .

. . . 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 .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 . P ro ce sso B . .

Paginaçã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. enquanto as páginas no espaço real são chamadas de páginas reais ou frames. com informações sobre o mapeamento. As páginas no espaço virtual são denominadas páginas virtuais. Cada página virtual do processo possui uma entrada na tabela (Entrada na Tabela de Página . chamados páginas. Todo o mapeamento é realizado em nível de página.ETP). através de tabelas de páginas.    .

P á g in a v ir tu a l V ETP M e m ó r ia S e c u n d á r ia . . . . . P á g in a r e a l R . .Paginação 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 .

Paginação  Quando um programa é executado. na ETP da tabela do processo. Sempre que o programa fizer referência a um endereço virtual. o mecanismo de mapeamento localiza.   . O endereço virtual é formado pelo número da página virtual e um deslocamento dentro da página. o endereço físico do frame. as páginas virtuais são transferidas da memória secundária para a memória principal e colocadas em frames.

d o fra m e D e slo c . d o fra m e E n d .Paginação 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 . Fra m e D e s l o c a m e n to E n d e r e ç o fís ic o . Ta b e la d e p á g in a s ETP E n d .

Bit de validade que indica se uma página está ou não na memória física (valid bit ou residence bit).   . Bit de indicação se uma página sofreu alteração após ser carregada (modify bit ou dirty bit). a ETP possui outras informações.Paginação  Além da informação sobre a localização da página virtual.

Paginação 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 .

simulando uma previsão de quais páginas serão necessárias.Paginação  Paginação por Demand (Demand Paging)  As páginas dos processos são transferidas da memória secundária para a principal apenas quando são referenciadas.  Paginação por Antecipação (Antecipatory Paging)  As páginas próximas àquela referenciada também são carregadas. trazendo-as antecipadamente para a memória. .

A maior ou menor fragmentação é conseqüência do tamanho da página. quando o código não a ocupa por completo. da fragmentação também existe em sistemas  A fragmentação só é encontrada.Paginação  O problema pagináveis. na última página.  . realmente.

VAR P á g in a 0 P á g in a 1 PRO C ED U RE A .Paginação PRO G RA M Fra g . P á g in a 2 EN D . F r a g m e n ta ç ã o . P á g in a 3 B E G IN P á g in a 4 EN D.

provocam maior taxa de paginação. .Paginação  Páginas pequenas:     necessitam de tabelas de mapeamento maiores.  O tamanho da página varia de sistema para sistema. mas normalmente está entre 512 bytes a 4 Kbytes. geram menor fragmentação. aumentam o número de acessos à memória secundária.

Quando um programa iniciava sua execução. percebia-se uma elevada taxa de page faults.Working Set  O conceito de Working Set surgiu a partir da análise da taxa de paginação dos processos. 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 relativamente próximas.   .Paginação .

Paginação . P á g in a 4 I m p r im e r e s u lta d o s .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 .

aumenta-se a paginação. comprometendo o desempenho. Se um programa foi desenvolvido utilizando-se as técnicas estruturadas.Paginação . o conceito de localidade estará presente com certeza. Working Set é o conjunto de páginas que um processo referencia constantemente. Caso contrário.Working Set  A localidade tem um forte relacionamento com a maneira com que a aplicação foi escrita.    . e por isso deve permanecer na memória principal.

Quanto maior for o Working Set.Working Set  O Working Set deve possuir um limite de páginas. maior o consumo de memória e menor a quantidade de processos carregados na memória principal ao mesmo tempo. Quanto maior o Working Set. menor será a probabilidade de ocorrerem page faults. consequentemente. menor o grau de multiprogamação.   .Paginação .

mas sim. Qualquer estratégia de realocação de página deve considerar se uma página foi ou não modificada.Paginação . quais páginas remover.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.   . Possíveis alterações feitas na página quando ocupada podem ser perdidas. antes de liberá-la para outro processo.

Paginação . 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 .Realocação de Páginas  O sistema possui um arquivo de paginação ( page file ) onde as páginas modificadas ficam armazenadas.

Paginação . 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 .Realocação de Páginas  Sempre que o sistema liberar uma página. preservando o seu conteúdo. deverá gravá-la no arquivo de páginas ( page out ).

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 . ela será recuperada do arquivo de páginas e trazida para o Working Set do processo ( page in ).Paginação .Realocação de Páginas  Quando uma destas páginas alteradas for referenciada novamente.

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.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. algumas estratégias são adotadas pelos SOs para a realocação de páginas.Paginação . Assim.   . porém o SO têm dificuldade em prever isso.

Paginação . Apesar de ser uma estratégia que consome poucos recursos não é tão comum.Realocação de Páginas  Aleatória (RANDOM)  Esta escolha não utiliza critério algum para a seleção.   . inclusive páginas que são freqüentemente referenciadas. Todas as páginas do working set tem as mesmas chances de serem selecionadas.

Paginação .Realocação de Páginas  First In First Out (FIFO)  A página que primeiro foi utilizada será a primeira a ser escolhida. As páginas podem ter que voltar várias vezes à fila. 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.   .

Realocação de Páginas  Least Recently Used ( LRU )  Esta estratégia seleciona a página utilizada menos recentemente.Paginação . do momento do último acesso. Gera overhead causado pela atualização em cada paragina referenciada. além do algoritmo de busca das páginas. ou seja. a página que está mais tempo sem ser referenciada.  .

   .Paginação . e está associado a cada entrada na tabela de páginas. depois de certo tempo é possível saber quais páginas foram referenciadas ou não.Realocação de Páginas  Not Used Recently ( NRU )  Bastante semelhante a LRU. o flag é modificado pelo hardware (1). todas as páginas estão com flag indicando que não foram referenciadas (0). 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. Inicialmente. A medida que as páginas são referenciadas.

A página que contiver o contador com o menor número de referências será a página escolhida. Páginas que acabaram de entrar na memória podem ser escolhidas para deixar a mesma. a página menos referenciada.     . Para isso.Realocação de Páginas  Least Frequently Used ( LFU )  Neste esquema.Paginação . ou seja. é mantido um contador di número de referências feitas às páginas. a menos freqüentemente utilizada será a página escolhida. Este algoritmo privilegia páginas que são mais utilizadas.

e colocados em blocos de informações na memória. cada um com seu próprio espaço de endereçamento. Os blocos tem tamanhos diferentes e são chamados de segmentos. A grande diferença entre a paginação e a segmentação é que. enquanto a primeira divide a memória em partes de tamanho fixos. a segmentação permite uma relação entre a lógica do processo e sua divisão na memória.Segmentaçã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. sem qualquer ligação com a estrutura do processo.

... . B E G IN EN D . F U N C T IO N Y . PRO C ED U RE X. 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 . EN D . V A R A : A R R A Y.Segmentação 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 . C : . . . EN D ..

Segmentação  Os segmentos são mapeados através de tabelas de mapeamento de segmentos (TMS).   . O número do segmento identifica unicamente uma entrada na tabela de segmentos (ETS). Os endereços são compostos pelo número do segmento e um deslocamento dentro do segmento. onde estão as informações sobre o segmento na memória real.

Segmentação 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 fís ic o .

    .Segmentação  O SO mantém uma tabela com áreas livres e ocupadas da memória. Quando um novo processo é carregado para a memória. ou seja. best fit. Um outro problema é sua complexidade. o sistema localiza um espaço livre que o acomode. pois o SO deve manter tabelas de segmentos que variam de acordo com o número de segmentos. O problema da fragmentação também ocorre nesse modelo. worst fit ou first fit. As estratégias para escolha da área livre podem ser as mesmas utilizadas na Alocação Particionada Dinâmica.

.Segmentação com paginação  Sistemas que implementam a segmentação com paginação permitem a divisão lógica dos processos em segmentos e. por sua vez. em páginas. fisicamente. cada segmento é dividido.

s e g m e n to N um . 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 .Segmentação com paginação 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 . 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 .

Este esquema é implementado utilizando-se as entradas das tabelas de mapeamento.  L G 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 . ao obter acesso a uma página ou segmento do sistema. onde alguns bits especificam os acessos permitidos a cada uma das páginas / segmentos.Proteção  A proteção é necessária para impedir que um processo. a modifique ou mesmo tenha acesso a ela.

Proteção 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 .

é 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 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 .Compartilhamento de Memória  Em ambientes multiprogramáveis. P ro ce sso B . . 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 . . . .

Na prioridade. os de menor prioridade e no critério estado do processo escolhe-se aqueles processos que estão aguardando algum evento (bloqueados).Swapping em Memória Virtual  O conceito de swapping continua válido quando aplicado à memória virtual. Os critérios utilizados para escolha do processo são a prioridade e o estado do processo. Em sistemas que utilizam esta técnica. o SO seleciona um ou mais processos que deverão deixar a memória para ceder espaço aos novos processos.    . escolhe-se. dentre os processos. quando existem novos processos que devem ser processados e não existe mais memória real suficiente.

Swapping em Memória 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 .

O trashing ocorre quando existem mais processos competindo por memória do que espaço disponível.   .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.

 . De qualquer maneira. a solução seria acrescentar mais memória principal. se existir mais processos para serem executados do que memória disponível.Trashing  O SO tenta administrar a memória de maneira que todos os processos sejam atendidos.

Dr. Rossano Pablo Pinto Faculdade de Tecnologia de Americana Centro Paula Souza . Renato Kraide Soffner Prof. Dr. Ms. José Luís Zem Prof.Memória Virtual Prof.