Fundamentos de Sistemas
Operacionais
Aula 19: Memória Virtual:
Introdução
Diego Passos
Última Aula
Paginação
● Método de gerenciamento de memória mais usado hoje.
● Espaço de endereçamento de um processo é dividido em
páginas.
○ Pequenos blocos de tamanho fixo.
● Páginas são mapeadas em quadros da memória principal.
○ Quadros alocados para um processo não precisam ser
contíguos.
● Não há fragmentação externa.
● Alocação dos processos é simples.
Memória Virtual: Introdução
Motivação
● Sistemas monoprogramados são ineficientes.
○ Apenas um processo ativo por vez.
○ Alta probabilidade dos recursos ficarem ociosos.
■ Processador, por exemplo.
● Sistemas multiprogramados são mais eficientes.
○ Vários processos ativos simultaneamente.
○ Alta probabilidade de ao menos um processo utilizar
cada recurso a cada momento.
● Quanto maior o número de processos em memória, maior a
eficiencia.
○ Maior o grau de multiprogramação.
Motivação (mais)
● O SO procura permitir o uso do maior número possível de
processos simultaneos.
○ Limitado pelo tamanho da memória principal.
○ Processos devem estar carregados na memória.
● Tamanho da memória principal limita também o tamanho
dos processos que podem ser executados.
○ Espaço de endereçamento deve ser menor ou igual ao
tamanho da memória.
○ Problema comum em computadores antigos.
■ Mesmo hoje, ocorre em aplicações científicas.
Memória Virtual
● Solução para as limitações da memória principal.
● SO aumenta a capacidade de armazenamento da memória
principal usando a memória secundária.
○ Simula que a máquina tem mais memória principal do
que realmente possui.
● Processo ainda precisa ter seu espaço de endereçamento
em memória principal para executar.
○ Mas temporariamente pode ser levado para memória
secundária para liberar espaço.
○ Operação de swap.
○ Escalonador de médio prazo decide quando e em que
processos aplicar o swap.
Memória Virtual (mais)
● Implementada pela grande maioria dos SOs modernos.
● No Linux, usuário é instruído a criar uma partição de swap.
○ Espaço em disco reservado especificamente para uso
como memória virtual.
● No Windows, SO cria um arquivo comum no disco.
○ Muitas vezes chamado Arquivo de Paginação.
● A memória virtual pode ser usada com qualquer esquema
de gerenciamento de memória.
○ No entanto, maiores vantagens são obtidas em conjunto
com a paginação.
■ Esquema denominado de paginação por demanda.
○ Permite que processos estejam parcialmente em
memória principal.
Paginação sob Demanda
Ideia
● Combinação da paginação com a memória virtual.
● Algumas páginas de um processo podem não estar em
quadros da memória principal.
○ Ao invés, eles são colocados na área de swap na
memória secundária.
● Quando processo tenta acessar memória, MMU consulta a
tabela de páginas.
○ Se o bit de validade é 1, página está em memória
principal.
■ Acesso é feito normalmente.
○ Caso contrário, interrupção é gerada.
■ SO vai buscar a página na área de swap.
■ Página é copiada para a memória principal.
Falta de Página
● Evento no qual a MMU não encontra uma página
necessária em memória principal.
● Após a interrupção gerada:
○ SO faz requisição de leitura do disco.
■ Operação de E/S (portanto, lenta).
○ Processo não pode executar.
■ SO o coloca no estado suspenso.
○ Quando E/S termina, processo é colocado novamente
na fila de aptos.
■ Sua tabela de páginas é atualizada.
○ Eventualmente, escalonador recoloca o processo em
execução.
Falta de Página (mais)
● Se a memória está completamente ocupada, SO precisa
mover uma página para memória secundária.
○ Operação de swap.
● Registrador IP do processo pode ter que ser consertado.
○ Instrução que gerou falta de página não foi executada
com sucesso.
○ Ela precisa ser repetida.
Política de Alocação de Páginas
● O nome "Paginação sob Demanda" vem do fato das
páginas serem alocadas conforme necessário.
● Inicialmente, apenas a página "inicial" do processo é
necessária.
○ Página que contém as primeiras instruções.
● Ao longo da execução, faltas de página ocorrem.
○ Novas páginas são trazidas para memória principal.
● No início, falta de páginas acontece com frequência.
○ Espera-se que após um tempo a situação se estabilize.
○ Quando houver um número razoável de páginas
carregadas.
Política de Alocação de Páginas (mais)
● Nem sempre esta é uma boa estratégia.
○ Pode ser mais interessante proativamente trazer mais
páginas.
○ Tentar prever quais serão necessárias em um futuro
próximo.
■ Princípio da localidade referencial.
○ Se as previsões forem boas, haverá poucas faltas de
página.
■ Menos necessidade de acesso a disco.
Princípio da Localidade Referencial
● Prega que dados manipulados em um programa tendem a
ser próximos.
○ Em termos temporais.
■ Variável acessada agora tem grande probabilidade
de ser acessada novamente em breve.
○ Em termos espaciais.
■ Variáveis próximas a variável sendo acessada agora,
têm grande probabilidade de serem acessadas em
breve.
● SO pode usar este princípio para trazer páginas antes que
elas sejam necessárias.
○ Exemplo: trazer as duas páginas subsequentes à
atualmente requisitada.
Quantas Páginas Alocar?
● Quando há memória disponível, SO pode alocar quantas
páginas forem necessárias para um processo.
○ Processo pode ter todas as suas páginas carregadas.
● Mas quando há muitos processos ativos, pode não ser
possível manter todos os processos completos em
memória.
● Neste caso, quantas páginas devem ser dadas a cada
processo?
● Três abordagens:
○ Divisão igualitária: número de páginas é igual para todos
os processos.
○ Divisão proporcional: número de páginas é proporcional
ao tamanho do processo.
○ Não levar número de páginas em consideração.
Desempenho da Paginação
sob Demanda
Dois Tempos de Acesso
● Tempo de acesso à memória dependeda localização da
página.
● Se a página está em memória, acesso é rápido.
● Se acontece falta de página, o tempo é muito longo.
○ E também variável.
■ Depende do tempo de acesso à disco.
■ Depende de se há ou não espaço em memória
principal.
■ Depende do tempo que o processo demora para ser
escalonado novamente.
● A pergunta é: qual o tempo médio de acesso à memória?
Tempo Médio de Acesso
● Também conhecido como tempo efetivo de acesso à
memória.
● Tempo médio depende de três fatores:
○ t_am: tempo de acesso à memória quando não há falta
de página.
○ t_tf: tempo de acesso quando há falta de página.
○ p: probabilidade de ocorrência de falta de página.
● Neste caso, o tempo médio é dado por:
t_e = (1-p)*t_am + p*t_tf
Reduzindo o Tempo de Acesso
● O tempo de acesso a memória quando a página está
disponível pode ser considerado uma constante.
○ Depende das características do hardware.
● Tempo de tratamento de falta de página depende do tempo
de acesso a área de swap.
○ Velocidade do disco.
○ Overhead do SO.
○ Alguns sistemas tentam melhorar este tempo.
■ Exemplo: UNIX, com uso de partições de swap
dedicadas.
○ No entanto, em geral o efeito é relativamente baixo.
■ Disco é muito lento.
Reduzindo o Tempo de Acesso (mais)
● Maior potencial de redução está na probabilidade de
ocorrência de falta de páginas.
● Idealmente, SO deseja manter p = 0.
○ Só é possível se há memória física suficiente para
acomodar todos os processos.
● É possível reduzir p através de métodos inteligentes de
substituição de páginas.
○ Quando uma página é trazida para memória, outra tem
que ser retirada.
○ Se retirarmos a página errada, ela logo será necessária.
■ Causando outra falta de página.
Algoritmo de Substituição de Página
● Usado sempre que uma página deve ser escolhida para
sair da memória principal.
○ Ou seja, falta de página com todos os quadros
ocupados.
● Objetivo: escolher a Página Vítima.
○ Página a ser removida em favor da página necessária.
● Página vítima deve ser uma não necessária em um futuro
próximo.
● Fatores relevantes na escolha:
○ Modificação ou não da página.
■ Páginas modificadas são piores candidatos.
○ Histórico de acessos.
■ Páginas recentemente acessadas tem mais chance
de próximos acessos.
Bits de Controle de Página
● SOs mantém na tabela de páginas bits de controle
associados com cada página.
● Indicam características da página que auxiliam no processo
de substituição.
● Há três bits comumente encontrados:
○ Bit de sujeira.
○ Bit de referência.
○ Bit de tranca.
Bit de Sujeira
● Também chamado de dirty bit.
● Indica se uma página sofreu alterações.
○ Em relação ao momento em que ela foi trazida para
memória principal.
● Caso a página tenha sido alterada, SO terá que copiá-la
novamente para a área de swap ao removê-la da memória
principal.
● A cada requisição de escrita à página, seu bit de sujeira é
alterado para 1 pela MMU.
● Quando uma página é trazida para memória, o SO inicializa
este bit com 0.
Bit de Referência
● Também chamado de reference bit.
● Permite ao SO estimar a quanto tempo uma página não é
acessada.
● Quando SO traz uma página para a memória, bit de
referência é setado para 1.
● A cada acesso à página, MMU altera este bit para 1.
● De tempos em tempos, SO zera todos os bits de referência.
● Se uma página tem bit de referência em 0, SO tem uma
ideia do tempo desde o último acesso.
Bit de Tranca
● Também chamado de lock bit.
● Indica que uma página não pode ser removida da memória
principal.
● Exemplo de utilização: operação de E/S.
○ Processo requisita leitura de arquivo.
○ Buffer para recepção da leitura pertence a página P,
alocada no quadro Q.
○ DMA recebe endereço físico, e não lógico.
○ Se o SO remove a página P, DMA continua escrevendo
o resultado no quadro Q.
■ Possivelmente sobrescrevendo dados de outro
processo.
Revisão
Para Lembrar
● Memória virtual:
○ Método que aumenta a capacidade da memória
principal.
○ Utiliza a memória secundária.
● Paginação sob Demanda:
○ Une paginação e memória virtual.
○ Processos podem estar parcialmente em memória.
○ Páginas trazidas conforme a necessidade.
■ Falta de página.
● Substituição de Páginas:
○ Objetivo.
○ Critérios.
Download

Slides