Apresentação do PowerPoint - Cloud Object Storage · Sumário 1. Introdução 2. Endereçamento...
Transcript of Apresentação do PowerPoint - Cloud Object Storage · Sumário 1. Introdução 2. Endereçamento...
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
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.