Gerência de Memória Virtual
2
Introdução
• Memória virtual: técnica sofis:cada e
poderosa de gerência de memória, onde as memórias principal e secundária são
combinadas dando ao usuário a ilusão de exis:r uma memória muito maior que a capacidade real da memória principal. • Permite um número maior de processos
compar:lhando a memória principal, já que apenas partes de cada processo estarão
Espaço de Endereçamento
Virtual
• O conceito de memória virtual se aproxima muito da ideia de um vetor.
• Quando um programa faz referência a um elemento do vetor, ão há preocupação em saber a posição de memória daquele dado. • Um programa no ambiente de memória
virtual não faz referência a endereços Psicos de memória, mas apenas a endereços
virtuais.
• O mecanismo de tradução do endereço
4
Espaço de Endereçamento
Virtual
Espaço de Endereçamento
Virtual
6
Espaço de Endereçamento
Virtual
Mapeamento
• O processador apenas executa instruções e referencia dados residentes no espaço de endereçamento real.
• Deve exis:r um mecanismo que transforme os endereços virtuais em reais –
Mapeamento.
• Nos SOs modernos, a tarefa de tradução de endereços virtuais é realizada por hardware juntamente com o SO, de forma a não
comprometer seu desempenho e torná-‐lo transparente a usuários e sua aplicações.
8
Mapeamento
• O disposi:vo de hardware responsável por esta tradução é conhecido como Unidade de Gerência de Memória (Memory Management
Unity – MMU).
• A MMU sempre é acionada quando se faz referência a um endereço virtual.
• A tabela de mapeamento é uma estrutura de dados existente para cada processo.
• O SO u:liza a tabela de mapeamento de um processo em execução para tradução de seus endereços virtuais.
10
Memória Virtual por Paginação
• Técnica de gerência de memória em que o espaço de endereçamento virtual e o espaço de endereçamento real são divididos em
blocos de mesmo tamanho chamado páginas.
• Todo o mapeamento de endereço virtual em real é realizado através de tabelas de
páginas.
• Cada processo possui possui sua própria tabela de páginas. Entrada na Tabela de Páginas – ETP.
12
Memória Virtual por Paginação
• Tradução de
endereço virtual: vamos ler no PLT, página 179, após a Fig. 10.6.
14
Memória Virtual por Paginação
• Existe um bit de validade que
indica se uma página está ou não na memória principal – valid
Polí:cas de Busca de Páginas
• Determina quando uma página deve ser carregada para a memória.
• Duas polí:cas:
– Paginação por Demanda. – Paginação Antecipada.
• Na paginação por demanda, as páginas dos processos são transferidas da memória
secundária para a principal apenas quando são referenciadas. Leva somente as páginas necessárias para a memória principal.
16
Polí:cas de Busca de Páginas
• Na paginação antecipada, o sistema carrega para a memória principal, além da página referenciada, outras páginas que podem ou não ser necessárias ao processo ao longo do seu processamento. Caso o processo não
precise das páginas carregadas
antecipadamente, o sistema terá perdido tempo e ocupado memória principal sem necessidade.
Polí:cas de Alocação de Páginas
• Determina quantos frames cada processo pode manter na memória principal.
• Duas alterna:vas:
– Alocação Fixa.
– Alocação Variável.
• Na alocação fixa, cada processo tem um número máximo de frames que pode ser u:lizado durante a execução do programa.
– Se o máximo de frames não for suficiente: elevado número de page faults.
18
Polí:cas de Alocação de Páginas
• Na alocação variável, o número máximo de páginas alocadas ao processo pode variar
durante sua execução em função de sua taxa de paginação e de ocupação da memória
principal.
Polí:cas de Subs:tuição de Páginas
• Quando um processo a:nge o seu limite de alocação de frames e necessita alocar novas páginas na memória principal, o SO deve
selecionar, dentre aquelas alocadas, qual deverá ser liberada.
• Uma página real, quando liberada de um processo, está livre para ser u:lizada por qualquer outro processo.
• Deve-‐se considerar sempre se uma página foi ou não modificada antes de liberá-‐la, caso
20
Polí:cas de Subs:tuição de Páginas
• O SO grava na memória secundária antes de descartá-‐la, para uso em futuras referências – page out.
• Sempre que uma página modificada for
novamente referenciada ocorrerá um page
in, carregando-‐a para a memória principal a
22
Polí:cas de Subs:tuição de Páginas
• A polí:ca de subs:tuição deve ser definida como:
– Local.
– Global.
• Na polí:ca local, apenas as páginas do processo que gerou o page fault são candidatas a realocação.
• Na polí:ca global, todas as páginas alocadas na memória principal são candidatas à
subs:tuição, independente do processo que gerou o page fault.
Polí:cas de Subs:tuição de Páginas
• Na polí:ca de alocação fixa, somente pode-‐ se adotar a polí:ca de subs:tuição local.
• A polí:ca de alocação variável permite uma polí:ca de subs:tuição tanto local quanto global.
24
Algoritmos de Subs:tuição de
Páginas
• O maior problema na gerência de memória virtual por paginação não é decidir quais páginas carregar para a memória principal, mas quais liberar.
• Estes algoritmos têm o obje:vo de selecionar os frames que tenham as menores chances de serem referenciados em um futuro
próximo.
• Caso contrário, o frame poderia retornar diversas vezes para a memória principal.
Algoritmos de Subs:tuição de
Páginas
• Ó:mo.
– Seleciona para subs:tuição uma página que não será referenciada no futuro ou aquela que levará o maior intervalo de tempo para ser novamente u:lizada.
• Aleatório.
– Não u:liza critério algum de seleção.
• FIFO (First-‐In-‐First-‐Out).
– A página que primeiro foi u:lizada será a
primeira a ser escolhida, ou seja, o algoritmo escolhe a página que está a mais tempo na
26
Algoritmos de Subs:tuição de
Páginas
• LFU (Least-‐Frequently-‐Used).
– Seleciona a página menos referenciada, ou seja, o frame menos u:lizado.
• LRU (Least-‐Recently-‐Used).
– Seleciona a página que está a mais tempo sem ser referenciada.
• NRU (Not-‐Recently-‐Used).
– É semelhante ao LRU, porém com menor sofis:cação.
– U:liza um Bit de Referência (BR) que indica se a página foi u:lizada recentemente.
Algoritmos de Subs:tuição de
Páginas
• FIFO com buffer de páginas.
– Combina uma lista de páginas alocadas (LPA) com uma lista de páginas livres (LPL).
– LPA organiza as páginas alocadas há mais tempo no início da lista, enquanto as mais recentes
ficam no final.
– LPL organiza todos os frames livres da memória principal, sendo que as páginas livres há mais
tempo estão no início e as mais recentes no final. – Sempre que um processo necessita alocar uma
nova página, o SO seleciona a primeira da LPL, colocando-‐a no final da LPA.
28
Algoritmos de Subs:tuição de
Páginas
• FIFO com buffer de páginas.
– Caso seja necessário subs:tuição de página, é selecionado o frame a mais tempo em uso, ou seja, o primeiro da LPA.
Algoritmos de Subs:tuição de
Páginas
• FIFO Circular.
– Usa como base a FIFO, porém com as páginas alocadas na memória principal estão em uma estrutura de lista circular.
– Existe um ponteiro que guarda a posição da página mais an:ga.
– Cada página também possui um BR.
– Quando é necessário subs:tuir, o SO verifica se o frame apontado tem o BR igual a 0, se sim, a
página é selecionada para descarte.
– Caso o BR seja igual a 1, o bit é desligado e o ponteiro incrementado.
30
Algoritmos de Subs:tuição de
Páginas
Tamanho da Página
• O tamanho da página está associado à
arquitetura do hardware e varia de acordo com o processador.
• O tamanho da página tem impacto direto sobre o número de entradas na tabela de páginas e, consequentemente, no tamanho da tabela e no espaço ocupado na memória principal.
• O que é melhor, páginas grandes ou pequenas?
32
Memória Virtual por Segmentação
• Técnica de gerência de memória onde o
espaço de endereçamento virtual é dividido em blocos de tamanhos diferentes chamados segmentos.
• Um programa é dividido logicamente em sub-‐ro:nas e estruturas de dados, que são alocadas em segmentos na memória
34
Memória Virtual por Segmentação
• Enquanto da técnica de paginação, o
programa é dividido em páginas de tamanho fixo, sem qualquer ligação com sua estrutura, na segmentação, existe uma relação entre a lógica do programa e sua alocação na
memória principal.
• O espaço de endereçamento virtual de um processo possui um número máximo de
segmentos que podem exis:r, onde cada
segmento pode variar de tamanho dentro de um limite.
Memória Virtual por Segmentação
• O mecanismo de mapeamento é
semelhante do de paginação.
• ETS – Entrada na Tabela de
36
Memória Virtual por Segmentação
• Vantagem: facilidade para lidar com estruturas de dados dinâmicas. Na paginação, aumentar uma estrutura
dinâmica implica alocar novas páginas.
• O SO mantém uma tabela com áreas livres e ocupadas da memória.
• Quando um novo segmento é referenciado, o SO seleciona um espaço livre suficiente (best-‐
fit, worst-‐fir ou first-‐fit).
• Enquanto na paginação ocorre fragmentação interna, na segmentação, ocorre a externa.
Memória Virtual por Segmentação
Caracterís@ca Paginação Segmentação
Tamanho de blocos de memória Iguais Diferentes
Proteção Complexa Mais simples
Compar:lhamento Complexo Mais simples
Estrutura de dados dinâmicas Complexo Mais simples
Fragmentação interna Pode exis:r Não existe
Fragmentação externa Não existe Pode exis:r
Programação modular Dispensável Indispensável
38
Memória Virtual por Segmentação
com Paginação
• Técnica de gerência de memória na qual o espaço de endereçamento é dividido em segmentos e, por sua vez, cada segmento dividido em páginas.
• Tem o obje:vo de oferecer as vantagens tanto da técnica de paginação quanto da técnica de segmentação.
Memória Virtual por Segmentação
com Paginação
40