390 likes | 535 Views
Arquitetura de Sistemas Operacionais Francis Berenger Machado Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 10 Gerência de Memória Virtual. Memória Virtual.
E N D
Arquitetura de Sistemas Operacionais Francis Berenger Machado Luiz Paulo Maia Complementadopor Sidney Lucena (Prof. UNIRIO) Capítulo 10 Gerência de Memória Virtual
Memória Virtual • A técnica de memória virtual fundamenta-se em desvincular o espaço de endereçamento físico (RAM) do espaço de endereçamento usado pelo programa. • Para tal é criado um espaço de endereçamentovirtual, linear e contínuo (semelhante a um vetor), para atender os requisitos de memória de um dado programa abstraindo-se questões de implementação física. • Os objetivos principais desta técnica são o de maximizar o número de processos em memória, reduzir a fragmentação e permitir estruturas de dados maiores que a memória física.
Espaço de Endereçamento Virtual • Vetor de 100 posições
Espaço de Endereçamento Virtual • O espaço de endereços virtuais, arranjados na forma de vetor, corresponde à memória virtual e pode ser maior que o espaço de memória real. ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO)
Espaço de Endereçamento Virtual • A porção de memória virtual ativa do programa fica situada na memória principal, o restante fica armazenado em disco. ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO)
Mapeamento • A unidade de gerenciamento de memória (Memory Management Unit – MMU) mapeia os endereços virtuais em endereços físicos. • OBS: um programa não precisa estar em endereços contíguos da memória principal para ser executado.
Mapeamento • O mecanismo de tradução se encarrega de manter tabelas de mapeamento exclusivas para cada processo. • Quando ocorre troca de processo, registrador contendo posição inicial da tabela de mapeamento é atualizado.
Mapeamento • Problema: se cada entrada na tabela de mapeamento representar uma célula da memória virtual, o espaço ocupado pela tabela seria da ordem de tamanho da memória virtual, inviabilizando sua implementação. • Solução: particiona-se a memória virtual em blocos. • Cada bloco da memória virtual estará representado por uma entrada na tabela de mapeamento. • Tamanho do bloco determina o número de entradas na tabela de mapeamento. • 3 técnicas são usadas para o particionamento em blocos: paginação, segmentação e segmentação com paginação. • Abordagens também se apoiam no princípio da localidade.
Memória Virtual por Paginação • A técnica mais comum utilizada para implementar memória virtual é a paginação. • Nesta técnica, tanto memória virtual como memória principal são divididas em blocos de igual tamanho chamados páginas. • Tamanho do bloco determina o nível de fragmentação. • Quando uma página referenciada não é encontrada na RAM, diz-se que houve um page fault. • Na ocorrência de um page fault, realiza-se uma operação de paginação, ou seja, de troca de páginas entre a memória principal e a memória virtual em disco.
Memória Virtual por Paginação • Cada processo possui sua própria tabela de páginas. • Uma página virtual contém um bloco de endereços virtuais. • ETP: Entrada da Tabela de Páginas, associada a cada página virtual de um processo. • Os blocos da memória principal que abrigam as páginas reais são chamados frames.
Memória Virtual por Paginação • O endereço virtual é composto pelo número da página virtual (NPV) mais seu deslocamento na página. • O NPV serve para indexar a tabela de páginas e obter o endereço do frame. • O endereço físico correspondente ao endereço virtual é obtido a partir do endereço físico do frame encontrado na tabela de páginas mais o deslocamento.
Memória Virtual por Paginação • O bit de validade numa ETP indica se a página em questão encontra-se na memória principal ou não. • Se a ETP da página que contém o endereço virtual desejado tem bit de validade 0, ou seja, não está na memória principal, ocorre um page fault.
Políticas de Substituição de Páginas • Quando ocorre um page fault, a página referenciada é carregada para a memória principal (page in) no local de uma página que já se encontrava na RAM (page out, supondo memória RAM cheia). Esta página a ser substituída é escolhida segundo algum algoritmo de substituição.
Políticas de Substituição de Páginas • Políticas de Substituição de Página: • Política de Substituição Local: apenas páginas referentes ao processo corrente podem ser substituídas. • Política de Substituição Global: páginas de qualquer processo podem ser substituídas. • Políticas de Busca de Páginas: • Paginação por Demanda: páginas são transferidas para a memória principal apenas quando referenciadas. • Paginação Antecipada: além da página referenciada, o sistema carrega um conjunto de outras páginas para a memória esperando que elas venham a ser referenciadas mais tarde.
Políticas de Substituição de Páginas • Políticas de Alocação de Página: determina quantos frames cada processo pode manter na memória principal. • Política de Alocação Fixa: cada processo tem um número máximo de frames que podem ser usados durante sua execução. • Definido no momento da criação do processo de acordo com o tipo de aplicação que será executada. • Política de Alocação Variável: número máximo de frames pode variar durante sua execução de acordo com a taxa de paginação e a ocupação da memória principal. • Mais flexível, mas exige overhead para o monitoramento dos processos.
Working Set • Número elevado de page faults causa problema de desempenho ao sistema. • Conceito de working set visa reduzir este problema e está associado ao princípio da localidade (temporal e espacial).
Working Set • Conjunto de páginas referenciadas por um mesmo processo durante determinado intervalo de tempo. • Working Set de um processo é função do tempo e do tamanho da janela do working set.
Working Set • Tamanho do working set corresponde ao número de páginas distintas referenciadas dentro da janela do working set.
Working Set • Working Set permite prever quais páginas serão necessárias a execução do programa. • Reflete a localidade do programa, reduz a taxa de paginação. • Aumento do limite de páginas reais de um programa reduz paginação pelo custo de ocupar mais memória, porém até certo limite.
Algoritmos de Substituição de Páginas • Procuram manter o working set dos processos na memória principal sem comprometer o desempenho do sistema. • O algoritmo ótimo seria (utopicamente) aquele que selecionasse uma página que não será mais referenciada ou que será a menos referenciada. • Exemplos de algoritmos: • Aleatório; • FIFO (escolhe a página mais antiga); • LFU (Least Frequetly Used), LRU (Least Recently Used) e NRU (Not Recently Used, similar ao LRU, usa bit de referência - BR); • FIFO c/ buffer de páginas (combina lista de frames alocados e lista de frames livres na MP); • FIFO circular (se a página mais antiga foi referenciada recentemente, ela vai para o final da fila).
Algoritmos de Substituição de Páginas • FIFO com Buffer de Páginas: • LPA e LPL ordenadas por antiguidade dos frames; • (a) Na alocação de nova página, usa primeiro frame da LPL; • (b) Na liberação de uma página para substituição, usa primeira da LPA, correspondente ao frame a mais tempo na memória, e o coloca no final da LPL; • (c) Caso seja novamente referenciada, retira-a da LPL e vai p/fim da LPA.
Algoritmos de Substituição de Páginas • FIFO Circular (Clock): • Ponteiro guarda posição da página mais antiga na lista; • BR indica se página foi recentemente referenciada; • Na substituição, sistema verifica se frame tem BR = 0 (não referenciada) e a seleciona; • Se BR = 1, faz BR = 0 e incrementa ponteiro.
Tamanho de Página • Depende da arquitetura do hardware, normalmente situa-se entre 512 e 16M endereços. • Fator importante no projeto de sistemas c/ paginação, tem impacto no tamanho das tabelas na MP. • Páginas pequenas, maiores tabelas de mapeamento, maior taxa de paginação, maiores operações de E/S; • Páginas grandes, menores tabelas de mapeamento, maior fragmentação interna. • Tendência dos SOs atuais é por páginas cada vez maiores.
Paginação em Múltiplos Níveis • Paginação em um nível:
Paginação em Múltiplos Níveis • Problema: tamanho das tabelas de páginas de um nível continuam grandes para dados realistas (ex: páginas de 4K endereços em arquitetura de 32 bits ocupam cerca de 4MB). • Solução: usar tabelas de páginas em múltiplos níveis (princípio da localidade é aplicado às tabelas de mapeamento). • Apenas as informações sobre páginas realmente necessárias aos processos ficam residentes na memória principal. • Em outras palavras: a tabela de páginas também passa a ser paginada.
Paginação em Múltiplos Níveis • Endereço virtual em dois níveis:
Paginação em Múltiplos Níveis • Paginação em dois níveis:
Translation Lookaside Buffer • Translation Lookaside Buffer (TLB): • Se vale do princípio da localidade e mapea endereços virtuais em endereços físicos para evitar o acesso à tabela de páginas. • Funciona como uma memória cache, mantendo a tradução dos endereços virtuais das páginas mais referenciadas recentemente. • Campos da TLB:
Translation Lookaside Buffer • Translation Lookaside Buffer (TLB)
Proteção de Memória • Proteção: cada página conta com dois bits de proteção nas ETPs, um permitindo ou não acesso de leitura, outro permitindo ou não acesso de escrita. • SO deve impedir que um processo acesse uma página do sistema, que não a dele, sem autorização explicitada nos bits de proteção.
Compartilhamento de Memória • Em sistemas que implementam memória virtual, é muito simples implementar reentrância, bastando que as entradas das tabelas de mapeamento dos processos apontem p/ os mesmos frames.
Memória Virtual por Segmentação • Espaço de endereços é dividido em blocos de diferentes tamanhos chamados segmentos. • Mantém uma relação lógica com a estrutura do programa e sua alocação na memória principal. • A definição dos segmentos costuma ser realizada pelo compilador e cada segmento pode representar um procedimento, uma função, um vetor ou uma pilha. • É atribuído a cada processo um número máximo de segmentos e um tamanho máximo para cada segmento. • Pode ter problema de fragmentação externa.
Memória Virtual por Segmentação • Segmentação
Memória Virtual por Segmentação • O mecanismo de mapeamento é semelhante ao da paginação. • Campos da ETS:
Memória Virtual por Segmentação • Paginação x Segmentação:
Memória Virtual por Segmentação com Paginação • Segmentação com paginação: realiza paginação para cada segmento. • Procura oferecer as vantagens de ambas as técnicas.
Swapping em Memória Virtual • Exatamente a mesma técnica de swapping, porém aplicada às páginas ou segmentos referentes aos processos swapped out e, posteriormente, swapped in.
Thrashing • Ocorre quando há uma taxa elevada de faults, sejam de segmentos ou de páginas, seja a nível de sistema ou de processo. • Acarreta uma degradação no desempenho da máquina: uma página ou segmento swapped out em breve será requisitada para fazer swap in, causando um efeito cascata. • CPU perde muito tempo com swapping de páginas/segmentos. • Se houver uma demanda de memória, pelos processos a serem executados, maior que a capacidade da memória principal, a única solução é aumentar esta capacidade.