Memória virtual

Propaganda
Sistemas Operacionais
Gerência de Memória
Memória virtual
Edson Moreno
[email protected]
http://www.inf.pucrs.br/~emoreno
Slides baseados nas apresentações dos prof. Tiago Ferreto e Alexandra Aguiar
Introdução
 Problema
 Memória principal pode não comportar todos os processos ativos
 Solução
 Emprego de memória virtual
 Memória virtual
 Esquema de armazenamento no qual a memória secundária é
endereçado como parte da memória principal
Gerência de Memória Virtual
Mapeamento
Gerência de Memória Virtual
Mapeamento
 Processador
 Apenas executa/opera no espaço de endereçamento virtual
 Deve existir mecanismo que transforme os endereços virtuais em reais.
 Mapeamento
 Permite tradução um endereço do espaço virtual para espaço real.
 Sistemas modernos
 Tarefa de tradução de endereços virtuais é realizada por
 Hardware + sistema operacional
 Não deve comprometer desempenho
 Deve ser transparente a usuários e suas aplicações.
Gerência de Memória Virtual
Mapeamento
 Tradução
 Unidade de gerência de memória (Memory Management Unit - MMU) em HW
 Acionado sempre que se faz referência a um endereço virtual
 Depois de traduzido
 Endereço real pode ser utilizado para o acesso à memória principal.
 Cada processo tem o seu espaço de endereçamento
 Responsabilidade do mecanismo de tradução
 Manter tabelas de mapeamento exclusivas para cada processo
 Relacionar os endereços virtuais do processo às posições na memória real
Gerência de Memória Virtual
Mapeamento
Gerência de Memória Virtual
Mapeamento
 A tabela de mapeamento
 Estrutura de dados existente para cada processo.
 Quando um determinado processo está sendo executado
 Tradução dos endereços baseado na tabela de mapeamento do processo
 Se um outro processo vai ser executado
 Sistema deve passar a referenciar a tabela do novo processo.
 A troca de tabelas de mapeamento é realizada através de um registrador
 Indica a posição inicial da tabela corrente
 Da mudança de contexto
 Registrador é atualizado com o endereço da nova tabela
Gerência de Memória Virtual
Mapeamento
 Tabelas mapeiam blocos de dados
 Tamanho determina o número de entradas existentes nas tabelas de
mapeamento.
 Quanto maior o bloco
 Menos entradas existem nas tabelas de mapeamento
 Menor o tamanho das tabelas de mapeamento
 Técnicas empregadas pelos sistemas operacionais
 Paginação
 Segmentação
 Segmentação com paginação
Gerência de Memória Virtual
Memória Virtual por Paginação
 A memória virtual por paginação
 Blocos de mesmo tamanho nos espaços de endereçamento
 Virtual (memória secundária)
 Páginas virtuais
 Real (memória principal)
 Páginas reais / quadros
 Tabela de página
 Individual a cada processo possui
 Cada página virtual do processo
 Presente na tabela (entrada na tabela de páginas - ETP)
 Contém informações de mapeamento
 Permitem ao sistema localizar a página real correspondente
Gerência de Memória Virtual
Memória Virtual por Paginação
Gerência de Memória Virtual
Memória Virtual por Paginação
 Além da informação sobre a localização da página virtual
 Bit de validade (valid bit)
 Indica se uma página está ou não na memória principal.
 Zero indica página virtual não presente na memória principal
 Um indica a página está localizada na memória.
 Bit verificado sempre quando de uma requisição
 Ausência de um página na MP acarreta uma falha (page fault)
 Sistema transfere a página da memória secundária para a principal
 Realizando uma operação de E/S conhecida como paginação.
Gerência de Memória Virtual
Memória Virtual por Paginação
 Número de page faults gerado por um processo depende de:
 Como o programa foi desenvolvido
 Qual a política de gerência de memória implementada
 O overhead (sobrecarga) gerado pelo mecanismo de paginação
 Inerente à gerência de memória virtual
 Excesso de operações de E/S pode comprometer o desempenho
Gerência de Memória Virtual
Memória Virtual por Paginação
 Quando ocorre um page fault
 Processo em questão passa do estado de execução para espera
 Aguarda até que a página seja transferida para a memória principal.
 Na troca de contexto
 Tabela de mapeamento é salva
 Informações do novo processo escalonado são restauradas.
 Após a transferência da página para a memória principal
 Processo é recolocado na fIla de processos no estado de pronto
 Quando reescalonado poderá continuar sua execução.
Gerência de Memória Virtual
Memória Virtual por Paginação
Gerência de Memória Virtual
Políticas de Busca de Páginas
 MMU
 Permite a execução de um programa sem que seu código esteja completamente
residente na memória principal
 Política de busca determina quando uma página deve ser carregada.
 Estratégias para este propósito
 Paginação por demanda
 Paginação antecipada.
 Paginação por demanda
 Páginas transferidas da memória secundária para a principal quando referenciadas.
 É possível que partes não executadas do programa nunca sejam carregadas
 Paginação antecipada
 Além da página referenciada, carrega páginas que podem ou não ser necessárias
 Permite economia de tempo, mas pode causar perda de tempo e desperdiçar
memória
Gerência de Memória Virtual
Políticas de Alocação de Páginas
 A política de alocação de páginas
 Determina quantos frames cada processo pode manter na memória principal.
 Alternativas de alocação
 Fixa
 Processo tem um número máximo de frames que pode ser utilizado
 Caso o número de páginas reais seja insuficiente

Página do processo deve ser descartada
 Variável
 Número máximo de páginas pode variar durante sua execução

Emprega sua taxa de paginação e da ocupação da memória principal
Gerência de Memória Virtual
Translate Lookaside Buffer (TLB)
 Gerência de memória virtual
 Mapeamento implica em pelo menos dois acessos à memória principal
 à tabela de páginas
 à própria página.
 Maioria das aplicações
 Referencia um número reduzido de frames na memória principal
 Princípio da localidade

Temporal e espacial
 Uma pequena fração da tabela de mapeamento é realmente necessária.
Gerência de Memória Virtual
Translate Lookaside Buffer (TLB)
 Translation Lookaside Buffer (TLB)
 Permite mapear endereços virtuais em endereços físicos
 Pode não requer acesso à tabela de páginas
 Traduções prévias podem estar armazenadas na TLB
 Funciona como uma memória cache
 Foco está na resposta a endereços virtuais previamente buscados e traduzidos
 Mantendo apenas as traduções dos endereços virtuais das páginas mais
recentemente referenciadas
 Utiliza o esquema de mapeamento associativo
Gerência de Memória Virtual
Translate Lookaside Buffer (TLB)
 Tradução de um endereço virtual
 Verifica primeiro o TLB
 Caso o endereço virtual (tag) esteja na cache
 Endereço físico é utilizado
 Eliminando o acesso à tabela de mapeamento (TLB hit).
 Caso o endereço não esteja na cache
 Tabela de mapeamento deve ser consultada (TLB miss).
 Se a página estiver na memória principal
 Tradução do endereço virtual é colocada no TLB
 Endereço é traduzido.
 Caso contrário
 Ocorre um page fault
 A página é carregada para a memória
 A tabela de mapeamento é atualizada
 Informação é carregada para a TLB.
Gerência de Memória Virtual
Translate Lookaside Buffer (TLB)
ENDEREÇO LÓGICO
TABELA
DE
PÁGINAS
PAGE
FAULT
Disco
TLB MISS
PAGE
HIT
MISS
Envia dado
para a CPU
TLB
TLB HIT
MEMÓRIA CACHE HIT
CACHE
CACHE MISS
MEMÓRIA
PRINCIPAL
HIT
CPU
Gerência de Memória Virtual
Swapping em Memória Virtual
 A técnica de swapping
 Pode ser aplicada em sistemas com memória virtual
 Permite aumentar o número de processos que compartilham a memória principal
 Aumenta o grau de multiprogramação do sistema.
 Empregando quando
 Existem novos processos para serem executados
 Não há memória principal livre suficiente para alocação
 Sistema utiliza o swapping
 Selecionando um ou mais processos para saírem da memória
 Oferecer espaço para novos processos.
 Depois de escolhidos
 Sistema retira os processos da memória principal para a secundária (swap out)
 Páginas ou segmentos gravados em um arquivo de swap (swap file)
Gerência de Memória Virtual
Swapping em Memória Virtual
Gerência de Memória Virtual
Swapping em Memória Virtual
 Políticas que podem ser aplicadas na escolha dos processos
 Principalmente escolhe considerando o estado do processo e sua prioridade.
 Com base no estado dos processos
 Seleciona, inicialmente, os processos que estão no estado de espera.
 Seleção pode ser refinada em função do tipo de espera de cada processo.
 Com base na prioridade
 É possível que não existam processos suficientes no estado de espera
para atender as necessidades de memória do sistema.
 Escolhe os processos no estado de pronto com menor prioridade
Gerência de Memória Virtual
Swapping em Memória Virtual
 O arquivo de swap
 Compartilhado por todos os processos que estão sendo executados no
ambiente.
 Quando um processo é criado
 Sistema reserva um espaço no arquivo de swap para o processo.
 Quando um processo é eliminado
 Sistema libera a área alocada.
Gerência de Memória Virtual
Thrashing
 Thrashing
 Excessiva transferência blocos entre a memória principal e a secundária.
 Na memória virtual por paginação
 Thrashing ocorre em dois níveis
 No próprio processo

Excessiva paginação ocorre devido ao elevado número de page faults

Processo passa mais tempo esperando por páginas do que executado
 No sistema

Processos competindo por memória principal que espaço disponível

Solução
o Reduzir o número de páginas de cada processo na memória
Gerência de Memória Virtual
Thrashing
 Desempenho da máquina
 Começa a diminuir a partir de um determinado número de
processos ativos
 Característica dinâmica que depende:
 Da arquitetura da máquina
 Do tamanho da MP
 Do número de processos ativos
 Do tipo de processos que estão ativos (io-bound, cpu-bound)
 Taxa de utilização do processador
cai exponencialmente quando
em trashing
Download