Introdução Memória virtual Trabalho sob a Licença Atribuição-SemDerivações-SemDerivados 3.0 Brasil Creative Commons. Para visualizar uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-nd/3.0/br/ Aula 22 Modelos de gerência de memória vistos até agora mapeiam todo o espaço lógico do processo no espaço físico (RAM) Consequências Tamanho do processo é limitado pela capacidade da memória real do sistema Limitação do grau de multiprogramação Desperdício de memória por alocação desnecessária Área de heap prevista, rotinas de tratamento de exceção (erros), rotinas pouco usadas ou usadas apenas em algumas fases, etc Se não há memória disponível, não se pode criar processos Swapping e memória virtual surgem como soluções 2 Swapping Memória virtual Abordagem para aliviar a limitação do grau de multiprogramação Consiste em fazer um rodízio de processos entre memória e disco Área de swap : área de disco onde processos são mantidos para liberar espaço em RAM para outros processos P i swap-out swap-in P k Escalonador de médio prazo é quem decide sobre os processos vítimas para irem ao disco: apto-suspenso bloqueado-suspenso Expande a memória através de uma área de espaço em disco Área de swap (arquivo ou partição) Memória total disponível = capacidade da RAM + tamanho da área de swa Objetivo é utilizar memória física de forma eficiente Carrega para a memória apenas os trechos do processo que são necessários para sua execução em determinado momento Permite executar um processo sem que ele esteja completamente na memória Possibilita a execução de processos maiores que a capacidade de RAM Aumenta grau de multiprogramação Princípio básico Localidade de referência Memória total disponível = capacidade da RAM + tamanho da área de swap 3 4
Localidade de referência Implementação de memória virtual Base de funcionamento da memória virtual Processo possui um subconjunto de páginas que são usados simultaneamente Localidade de referência Temporal: regiões de código e dados tendem a ser acessados novamente dentro de um período de tempo próximo Espacial: regiões de código e dados acessados tendem a ser próximas Exemplos: execução da instrução i+1 segue a execução da instrução i; laços for, while, do-while; acessos a elementos de vetores, etc Consequência: NÃO é necessário ter o processo inteiro carregado em memória, apenas os trechos necessários em um dado intervalo de tempo Possível estimar esses pedaços Emprega mecanismos de alocação de memória não contíguo Necessário suporte por hardware para a paginação, segmentação ou segmentação com paginação Necessário: Controlar o fluxo de páginas (ou segmentos) entre a RAM e a área de swap (memória secundária disco) Gerenciar áreas livres e ocupadas na RAM e no disco Mapeamento da memória lógica em memória física Substituição de páginas/segmentos ( rodízio ) Área de swap Dimensionamento Formatação específica ou mesma do sistema de arquivos 5 6 Vantagens e desvantagens de memória virtual Paginação por demanda Vantagens: Capacidade de executar programas maiores que o tamanho da RAM Reduz quantidade de operações de E/S por não carregar todo o processo em memória (carrega apenas páginas ou segmentos necessários) Aumenta grau de multiprogramação por reduzir a quantidade de memória necessária para um processo executar (só carrega o que realmente usa!!) Desvantagens: Desempenho: acesso a área de swap é mais lenta que acesso a RAM Aumento da memória física é sempre a melhor solução!! Implementação da memória virtual baseada em paginação Princípio básico Carregar e manter em memória apenas as páginas necessárias em determinado momento localidade de referência Processo fica parcialmente em memória Alocação de memória por demanda Em caso de falta de memória, executa um rodízio entre os trechos em memória e em disco n Processo RAM Apesar de usar a área de swap, osistema está paginando (page-in epage-out). Conceitualmente, swap é a movimentação do 0 processo inteiro... Page-out Área de swap Page-in... 8 7
Questões para implementação Localização das páginas Gerenciamento de páginas e quadros Manutenção da informação de quadros livres (bit map) Localização das páginas (memória, área de swap ou ainda não foi criada)? Quando (e de onde) carregar uma página? Desempenho da paginação por demanda Algoritmos para alocação de memória Quanto de memória é necessário alocar na criação de um processo? Quanto de memória é usado durante a execução do processo? Algoritmos de substituição Qual página ou processo deve deixar a RAM para liberar espaço? Uma referência de memória está sempre associada a uma página Páginas válidas e páginas inválidas Situações possíveis Página está carregada na memória (página válida) Página está na área de swap (página inválida) Página não está na memória, nem no swap (página inválida não alocada) Comportamento típico das áreas dinâmicas (pilha e heap) Modificações na tabela de página Inclusão de novos bits de gerenciamento Endereço do quadro ou do local de armazenamento no disco 9 10 Entrada da tabela de página e memória virtual Carregamento de páginas Informações necessárias para localizar a página na memória, se ela estiver carregada na RAM (quadro q) área de swap, se ela não está carregada na RAM (endereço bloco de disco) Bits de gerência Compartilhamento: se a página é compartilhada com outros processos Proteção: se a página é de leitura ou leitura e escrita Validade: se mapeia (ou não) para um endereço válido para o processo Presença: se a página está carregada na memória Modificação (dirty bit): se a página em memória foi modificada Referência: se a página em memória foi referenciada em passado recente Necessários à implementação da paginação por demanda (memória virtual) Quando carregar uma página? Na inicialização de processos Mínimo teórico: página da função main() e página para pilha Por demanda A medida que o processo executa e precisa páginas que não estão na memória De onde carregar a página? Área de swap (código, dados, heap e pilha) Do próprio executável (áreas read-only como o código) 11 12
Falta de páginas (page fault) Esquema geral da paginação por demanda Ocorre quando a página necessária a execução não está na memória Necessário buscar página no disco OU mapear no espaço de endereçamento (se ainda não existe nova alocação) p é a probabilidade de acontecer um page fault (0 p 1) p=0, todas as referências NÃO provocam faltas de página p=1, todas as referências resultam faltas de página Tratador de faltas de páginas Acionado por uma interrupção de hardware de falta de páginas Executa a leitura de página faltante (swap ou executável) ou cria nova página Reinicia a execução do processo Sequência de eventos mov ax,m Sisop 1 2 i RAM 6 F n Área de swap ou imagem executável Tabela de página 4 5 F 0 3 Páginas associadas ao núcleo do sistema operacional são pinadas na memória, isso é, NUNCA vão provocar falta de página. 13 14 Ordem de grandeza da duração de tarefas Tempo de acesso efetivo à memória Acionamento do sistema operacional (trap) 1 a 100 us Determinar se a interrupção foi por falta de página 1 a 100 us Tempo de acesso (leitura) de uma página para memória Cerca de 8 ms (melhor caso) Depende do disco e da fila de requisição de E/S Tempo de acesso à memória percebido por um processo Tempo consumido pela MMU para a tradução Inclui o hit/miss ratio na TLB e eventuais tempo de acesso tabela de página em memória) Tempo consumido pela gerência de memória virtual Considera as operações page-in, page-out, substituição de página e tempo de bloqueio) Valor médio Baseado na probabilidade da entrada estar na TLB e a página estar na memória 15 16
Tempo efetivo de acesso considerando TLB Desempenho da paginação por demanda (aproximação) Mais precisamente: Depende da taxa de falta de páginas (p) Pode ser aproximado por: Tempo médio de acesso a tabelas e dado Onde: pr 1 : probabilidade da página estar em memória pr 2 : probabilidade da entrada da página estar na TLB (hit ratio) t mem : tempo de acesso a memória t TLB : tempo de acesso a TLB t TPF : tempo de tratamento de page fault onde: t acesso é tempo médio para acessar página na memória t page_fault é o tempo médio para o tratamento da falta de páginas e acessar a posição de memória que a provocou p é a probabilidade de taxa de falta de páginas (0 p 1.0) 17 18 Exemplo: desempenho da paginação por demanda Desempenho da paginação por demanda Exemplo 1: tempo acesso: 200 ns tempo page fault: 8 ms t e =(1-p) * 200 ns + p * 8000000ns t e = (200 + 7999800 x p) ns Se p=1/1000 t e 8,2 us (40 vezes t acesso ) Exemplo 2: degradação inferior a 10% no tempo de acesso (< 220ns) 220 (1-p)*200 + p*8000000 20 = 7999800p p 0.00000025 (1 page fault a cerca de cada 400.000 acessos) Depende de dois fatores De apresentar baixa taxa de faltas de páginas Número de vezes que há cargas de páginas Manter em memória um conjunto adequado de páginas Diminuir o tempo de acesso ao disco Tempo gasto para carregar as páginas 19 20
Otimizações para o swap Copy-on-write Procedimentos de swap-in e swap-out Páginas não modificadas podem ser sobrescritas (economiza swap-out) Selecionar páginas menos útil para swap-out Algoritmos de substituição Partição de swap com formatação específica Partição = divisão de um disco físico em discos lógicos diferentes Organiza os dados no disco de forma diferente do sistema de arquivos convencional possibilitando um acesso mais rápido Na criação (fork) não é necessário criar a cópia do pai, basta criar uma tabela de páginas para o filho idêntica a do pai Ação copy-on-write Se um dos processos, pai ou filho, modificar a página, cria-se a cópia Páginas não modificadas podem ser compartilhadas Deve-se marcar essas páginas para não liberar elas em caso de término de um dos processos (pai ou filho) 21 Silberschatz, A.; Galvin, P; Gagne, G. Operating System Concepts, 9th ed. 2013 22 Leituras complementares A. Tanenbaum. Modernos (3 a edição), Pearson Brasil, 2010. Capítulo 3: (seções 3.4, 3.7) A. Silberchatz, P. Galvin;. (7 a edição). Campus, 2008. Capítulo 9 (seções 9.1 e 9.2) R. Oliveira, A. Carissimi, S. Toscani;. Editora Bookman 4 a edição, 2010 Capítulo 7 (seção 7.1) 23