apresentação do powerpoint - cloud object storage · sumário 1. introdução 2. endereçamento...

41
Sistemas Operacionais Gerência de Memória Virtual

Upload: doantuong

Post on 10-Feb-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

Sistemas

Operacionais Gerência de Memória

Virtual

Sumário

1. Introdução 2. Endereçamento Virtual 3. Mapeamento 4. Memória Virtual por Paginação

1. Política de Busca de Páginas 2. Política de Alocação de Páginas 3. Política de Substituição de Páginas 4. Algoritmos de Substituição de Páginas

5. Swapping em Memória Virtual 6. Thrashing

1. Introdução

Técnicas de gerenciamento de memória foram apresentadas no módulo anterior, com o objetivo de: Maximizar o número de processos residentes na memória principal. Reduzir o problema da fragmentação.

Os esquemas vistos nem sempre se mostram suficientemente eficientes.

O tamanho de um programa e de suas estruturas de dados continua

sendo uma função do tamanho da memória principal disponível.

1. Introdução

Memória virtual é uma técnica sofisticada 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 existir uma memória muito maior que a

capacidade real da memória principal.

O conceito de memória virtual fundamenta-se em não vincular o endereçamento feito pelo programa aos endereços físicos da memória principal.

A vantagem é que programas e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível. Os programas podem possuir endereços associados à memória

secundária.

1. Introdução

Memória virtual permite um número maior de processos compartilhando a memória principal. Apenas partes de cada processo

estarão residentes. Utilização mais eficiente também

do processador.

Essa técnica também minimiza o problema da fragmentação.

A maioria dos sistemas operacionais implementa memória virtual.

2. Endereçamento Virtual

A memória virtual utiliza abstração semelhante ao vetor. Só que em relação aos endereços dos

programas e dados.

Quando um programa faz referência a um elemento do vetor, não há preocupação em saber a posição de memória daquele dado.

O compilador se encarrega de gerar instruções que implementam esse mecanismo, tornando-o totalmente transparente ao programador.

2. 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), mas apenas endereços virtuais.

No momento da execução de uma instrução, o endereço virtual referenciado é traduzido para um endereço físico.

O processador manipula apenas posições da memória principal.

O mecanismo de tradução do endereço virtual para endereço físico é

denominado mapeamento.

2. Endereçamento Virtual

Um processo é formado pelo contexto de hardware, pelo contexto de software e pelo espaço de endereçamento.

Em ambientes que implementam memória virtual: O espaço de endereçamento do processo é conhecido como espaço

de endereçamento virtual e representa o conjunto de endereços virtuais que o processo pode endereçar.

O conjunto de endereços reais que o processador pode referenciar é chamado de espaço de endereçamento real.

2. Endereçamento Virtual

2. Endereçamento Virtual

O espaço de endereçamento virtual não tem relação direta com os endereços no espaço real então:

Um programa pode fazer referência a

endereços virtuais que estejam fora dos limites da memória principal disponível.

Parte do código fica residente na

memória principal, permanecendo o restante na memória secundária.

Permite aumentar o compartilhamento

da memória principal entre muitos processos.

2. Endereçamento Virtual

No desenvolvimento de aplicações, a existência dos endereços virtuais é ignorada pelo programador.

Os compiladores e linkers se encarregam de gerar o código executável em função do espaço de endereçamento virtual.

O sistema operacional cuida dos detalhes durante sua execução.

3. Mapeamento

Deve existir um mecanismo que transforme os endereços virtuais em endereços reais.

Esse mecanismo, conhecido por mapeamento, permite traduzir um endereço localizado no espaço virtual para um associado no espaço real.

Um programa não precisa estar necessariamente em endereços contíguos da memória para ser executado.

3. Mapeamento

A tarefa de tradução de endereços virtuais é realizada por hardware juntamente com o sistema operacional.

A MMU (Memory Management Unit) é o dispositivo de hardware acionado sempre que um processo faz referência a um endereço virtual.

3. Mapeamento

Cada processo tem o seu espaço de endereçamento virtual como se possuísse sua própria memória.

O mecanismo de tradução se encarrega de manter tabelas de mapeamento exclusivas para cada processo.

Os endereços virtuais do processo são relacionados às suas posições na memória real.

3. Mapeamento

A tabela de mapeamento é uma estrutura de dados existentes para cada processo.

Quando um determinado processo está sendo executado, o sistema utiliza a tabela de mapeamento do processo em execução para realizar a tradução de seus endereços virtuais.

Se um outro processo vai ser executado, o sistema deve passar a referenciar a tabela de mapeamento do novo processo.

A troca de tabelas de mapeamento é realizada por meio de um registrador (localizado na MMU).

Indica a posição inicial da tabela corrente, onde, toda vez que há mudança de contexto, o registrador é atualizado com o endereço da nova tabela.

3. Mapeamento

Considere a tabela de mapeamento de um certo processo. Para efeito de implementação, perceba que o mecanismo de mapeamento não pode ser realizado considerando uma entrada da tabela de mapeamento para mapear cada endereço virtual em um endereço na memória principal.

Isso faria com que o espaço ocupado pela tabela se tornasse tão grande quanto o espaço de endereçamento virtual do processo, inviabilizando por completo a implementação do mecanismo de memória virtual.

Em função disso, as tabelas mapeiam blocos de dados. O tamanho do bloco determina o número de entradas existentes na tabela de mapeamento.

3. Mapeamento

Existem basicamente três técnicas que permitem a implementação de memória virtual: 1 – Técnica de Paginação:

Os blocos são de tamanho fixo. Esta é a técnica que mais exploraremos neste módulo.

2 – Técnica de Segmentação:

Os blocos são de tamanho variável. 3 – Técnica de Segmentação com Paginação:

Híbrido.

4. Memória Virtual por Paginação

A paginação é a técnica de gerência de memória em que: Processo é dividido em páginas.

As páginas estão no espaço virtual (páginas virtuais) e no espaço

real (páginas reais ou frames). O espaço de endereçamento virtual e real são divididos em blocos

(páginas) de mesmo tamanho.

Processo não precisa estar completamente na memória principal e não precisa ocupar área contígua em memória.

4. Memória Virtual por Paginação

Todo o mapeamento de endereço virtual em real é realizado por meio de tabelas de páginas, sendo que: Cada processo possui sua própria tabela de páginas.

4. Memória Virtual por Paginação

O endereço virtual é formado: 1. O NPV identifica unicamente a página

virtual que contém o endereço virtual, funcionando como um índice na tabela de páginas.

2. O deslocamento indica a posição do endereço virtual em relação ao início da página na qual ele se encontra.

O endereço físico é obtido combinando-se o

endereço do frame (página real), com o deslocamento, contido no endereço virtual.

Página virtual

Deslocamento

Endereço virtual

Desloc.NPV

End. do frame

ETP

Tabela de páginas

End. do frame Desloc.

Frame

Deslocamento

Endereço físico

4. Memória Virtual por Paginação

• Cenário: Um computador capaz de gerar endereços virtuais de 16 bits (0 até 64k) e memória física de apenas 32k.

• Problema: Programas não podem ser carregados por completo na memória física.

• Solução: dividir o programa em páginas virtuais.

4. Memória Virtual por Paginação

Instrução: MOV 20500, REG.

Qual é a página virtual?

Página 5 que contém os endereços de 20k (20480) até 24k-1 (24575).

Esta página está em qual frame?

No frame 3, que contém endereços físicos de 12k (12288) a 16k-1 (16384).

4. Memória Virtual por Paginação

Qual é o deslocamento do endereço 20500 dentro da página virtual?

Deslocamento = Endereço virtual – Endereço virtual do primeiro byte da página = 20500 – 20480 = 20.

Qual é o endereço físico correspondente ao endereço virtual 20500?

Endereço real do primeiro byte do frame + deslocamento = 12308.

4. Memória Virtual por Paginação

A ETP também possui o bit de validade (valid bit). Bit=0: a página virtual não

está na memória principal. Bit=1: a página está na

memória principal.

Se a página não está na memória ocorre o page fault.

Paginação: transferência da página da memória secundária para a principal.

4. Memória Virtual por Paginação

O número de page faults gerado por cada processo em um determinado intervalo de tempo é definido como taxa de paginação do processo. Se a taxa de paginação dos processos atingir valores elevados, o

excesso de operações de E/S poderá comprometer o desempenho.

No page fault, o processo em questão passa do estado de execução para o estado de espera - até a página ser transferida do disco para a memória.

Na troca de contexto, as informações sobre a tabela de mapeamento são salvas e as informações do novo processo escalonado são restauradas.

Após a transferência da página para a memória principal, o processo é recolocado na fila de processos no estado de pronto, e quando for escalonado novamente poderá continuar sua execução.

4.1. Política de Busca de Páginas

Basicamente existem duas estratégias para a busca de páginas:

1 – Paginação por Demanda (demand paging) As páginas dos processos são transferidas da memória secundária para a

principal apenas quando são referenciadas.

2 – Paginação Antecipada (antecipatory paging ou prepaging) O sistema operacional 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.

4.2. Política de Alocação de Páginas

A política de alocação de páginas determina quantos frames (páginas reais) cada processo pode manter na memória principal, conforme duas políticas: 1 – Alocação Fixa

Cada processo tem um número máximo de frames que podem ser mantidos na memória principal durante toda a execução do programa. Essa informação faz parte do contexto de software do processo.

2 – Alocação Variável

O número máximo de páginas alocadas ao processo pode variar durante a execução em função da taxa de paginação e da ocupação da memória principal. Esse mecanismo, apesar de mais flexível, possui maior overhead.

4.3. Política de Substituição de Páginas

Qual página deve ser substituída?

Quando um processo atinge o seu limite de alocação de frames e necessita alocar novas páginas na memória principal.

O sistema operacional deve selecionar, dentre as diversas páginas alocadas, qual deverá ser liberada (retirada da memória principal). Mecanismo chamado de política de substituição de páginas.

4.3. Política de Substituição de Páginas

Implementação de page out: o sistema mantém um arquivo de paginação (page file).

Page file: onde todas as páginas modificadas e descartadas são armazenadas.

Sempre que uma página modificada for novamente referenciada ocorrerá um page in, carregando-a para a memória principal a partir do arquivo de paginação.

4.3. Política de Substituição de Páginas

Basicamente existem duas políticas para substituição de páginas: 1 – Substituição Local

Apenas as páginas do processo que gerou o page fault são

candidatas a realocação.

2 – Substituição Global Todas as páginas alocadas na memória principal são candidatas à

substituição, independentemente do processo que gerou o page fault.

Obs: as páginas do núcleo do sistema operacional são marcadas como bloqueadas e não podem ser substituídas.

5. Swapping em Memória Virtual

A técnica de swapping, apresentada em módulo anterior, também pode ser aplicada em sistemas com memória virtual.

Quando existem novos processos para serem executados e não há memória principal livre suficiente para alocação.

O sistema utiliza o swapping, selecionando um ou mais processos para saírem da memória e oferecer espaço para novos processos.

O sistema retira os processos da memória principal para a memória secundária (swap out), onde as páginas ou segmentos são gravados em um arquivo de swap (swap file).

5. Swapping em Memória Virtual

Com os processos salvos na memória secundária, os frames ou segmentos alocados são liberados para novos processos.

Posteriormente, os processos que foram retirados da memória devem retornar para a memória principal (swap in) para serem novamente executados.

5. Swapping em Memória Virtual

Swapping (IN e OUT) refere-se ao processo como um todo.

Paging (IN e OUT) refere-se a páginas de um processo.

5. Swapping em Memória Virtual

Há várias políticas que podem ser aplicadas na escolha dos processos que devem ser retirados da memória principal.

Independente do algoritmo utilizado, o sistema tenta selecionar os processos com as menores chances de serem executados em um futuro próximo.

Na maioria das políticas, o critério de escolha considera:

Estado do processo

Prioridade

5. Swapping em Memória Virtual

O swapping com base no estado dos processos seleciona (para serem retirados) inicialmente, os processos que estão no estado de espera.

Essa seleção pode ser refinada em função do tipo de espera de cada processo.

É possível ainda que não existam processos suficientes no estado de espera para atender as necessidades de memória do sistema.

Nesse caso, os processos no estado de pronto com menor prioridade deverão ser selecionados.

5. Swapping em Memória Virtual

O arquivo de swap, localizado na memória secundária, é compartilhado por todos os processos que estão sendo executados no ambiente.

Quando um processo é criado:

O sistema reserva um espaço no arquivo de swap para o processo.

Quando um processo é eliminado:

O sistema libera a área alocada.

6. Thrashing

Thrashing pode ser definido como sendo a excessiva transferência de páginas/segmentos entre a memória principal e a memória secundária.

Na memória virtual por paginação, o thrashing ocorre em dois níveis.

1. No nível do próprio processo

Excessiva paginação ocorre devido ao elevado número de page faults gerado pelo programa em execução.

2. No nível do sistema

Mais processos competindo por memória principal que espaço disponível.

6. Thrashing

Para tentar solucionar o thrashing no nível do sistema, as seguintes medidas devem ser adotadas:

A primeiro medida é a redução do número de páginas de cada processo na memória.

Porém esse mecanismo pode levar ao thrashing no nível do processo.

A segunda medida é iniciar o swapping, retirando processos da memória principal para a memória secundária.

Se essa medida for levada ao extremo, o sistema passará mais tempo realizando swapping do que atendendo aos processos.

6. Thrashing

Na memória virtual por segmentação, o thrashing também ocorre em dois níveis.

1 – No nível do próprio processo

A transferência excessiva de segmentos é devido à modularização extrema do programa.

2 – No nível do sistema

É semelhante ao da paginação, com a ocorrência de swapping de processos para liberar memória para os demais processos.

6. Thrashing

Independentemente das soluções apresentadas, se existirem mais processos para serem executados que memória real disponível:

A única solução contundente é a expansão da memória principal (física).

É importante ressaltar que esse problema não ocorre apenas em sistemas que implementam memória virtual.

Mas também em sistemas com outros mecanismos de gerência de memória.

[Fim] Gerência de Memória Virtual

“O valor das coisas não está no tempo que elas duram, mas na intensidade com que acontecem. Por isso existem momentos inesquecíveis, coisas inexplicáveis e pessoas incomparáveis.”

Fernando Sabino

Próximo Módulo: Sistema de Arquivos