Administração de Memória 4.1 Administração básica de memória 4.2 Swapping 4.3 Memória Virtual 4.4 Algoritmos de substituição de páginas 4.5 Modelando algoritmos de substituição de páginas 4.6 Tópicos de projeto para sistemas de paginação 4.7 Tópicos de implementação 4.8 Segmentação 1 Administração de Memória { Idealmente, programadores querem memória que seja z z z { Hierarquia z z z z { Grande Rápida Não volátil Cache Memória principla Disco Fita O administrador de memória cuida da hierarquia! 2 1 Administração Básica de Memória Monoprogramação sem Swapping ou Paginação - SO com um processo de usuário 3 Multiprogramação com Partições Fixas 4 2 Modelando Multiprogamação Degree of multiprogramming Utilização da CPU = 1 – pn Utilização da CPU em função do número de processos na memória 5 Análise da porformance de sistemas Multiprogramados 6 3 Relocação e Proteção { Não se pode saber com certeza onde o programa será carregado na memória z z { Endereços de locação de variáveis e rotinas de código não podem ser absolutos Deve manter um programa fora das partições de outros programas Usar valores de “base” e “limite” z z Posições de endereços adicionadas ao valor base para mapear para o endereço físico Posições maiores que o valor limite são erradas 7 Swapping (1) Alocação de memória muda quando processos: z z Entram na memória Saem da memória Regiões sombreadas são memória não usadas 8 4 Swapping (2) { { Alocando espaço para um segmento de dados crescente Alocando espaço para segmentos de pilha e dados crescentes 9 Administração de Memória com Bit Maps { Parte de memória com 5 processos, 3 buracos z z { { Tmarcas indicam unidades de alocação Regiões sombreadas estão livres bit map Mesma informação em uma lista 10 5 Administração de Memória com Listas ligadas Quatro situações para o fim do processo X 11 Memoria Virtual Paginação (1) Posição e Função da MMU 12 6 Paginação (2) Relação entre endereços virtuais e endereços físicos dados pela tabela de páginas 13 Tabelas de Páginas (1) Operação interna da MMU com 16 - 4 KB paginas 14 7 Tabelas de Páginas (2) Second-level page tables Top-level page table { { Endereço de 32 bits co 2 campos de tabelas de páginas Tabela de páginas em 2 níveis 15 Tabelas de Páginas(3) Estranda Típica de tabela de páginas 16 8 TLBs – Translation Lookaside Buffers (Memória associativa) Uma TLB para acelerar a paginação 17 Tabelas de Páginas Invertidas Comparaçao entra uma tabela de páginas tradicional com uma tabela de páginas invertida 18 9 Algoritmos de Substituição de Páginas { Page fault força escolha z { Páginas modificadas devem ser salvas z { Qual página deve ser removida para ceder espaço para a página que chega Não modificadas apenas sobrescritas Melhor não usar uma página usada frequentemente 19 Algoritmo Ótimo { Trocar a página que será necessária no futuro mais distante z { Ótima mas impossível… Estimativa por … z z logging das páginas usadas em rexecuções anteriores do processo … não é prático… 20 10 Algorítmo Not Recently Used { Cada página tem um bit de referência (R) e um de modificado (M) z { Classificação Das páginas 1. 2. 3. 4. { Os bis são setados quando a página é modificada ou referenciada não referenciada, não modified não referenciada, modificada referenciada, não modificada referenciada, modificada NRU remove páginas aleatoriamente z A partir das classes mais baixas numerações 21 FIFO { Mantém uma lista ligada de todas as páginas z Na ordem em que foram carregadas { A página no início da lista é substituida { Desvantagem z Uma página carregada a muito tempo pode ser usada frequentemente 22 11 Segunda Chance { Operação da segunda chance z z As páginas são classificas por FIFO Lista de págins se falta ocorre no tempo 20, A tem R bit ligado (números acima das páginas são tempos de carga) 23 Relógio 24 12 Least Recently Used (LRU) { Assume que páginas usadas recentemente serão uadas novamente em breve z { Deve manter uma lista ligada de todas as páginas z z { Discarta a página não usda por mais tempo Usadas maia recentemente na frente, menos usdas no fundo Atualiza esta lista a cada referência à memória !! Alternativamente, mantem um contador em cada entrada de página z z Escolhe a página com o menor contgador Periodicamente zera o contador 25 Simulando LRU em Software (1) LRU usando uma matriz – referências às 26 páginas na ordem 0,1,2,3,2,1,0,3,2,3 13 Simulando LRU em Software (2) { { O algoritmo do envelhecimento simula LRU em software Note 6 páginas para 5 ticks do relógio, (a) 27 – (e) Algoritmo do conjunto de trabalho (Working Set) (1) { { O Conjunto de Trabalho é o conjunto de páginas usadas pelas k mais recentes referências à memória w(k,t) é o tamanho do conjunto de trabalho no instante, t 28 14 Algoritmo do conjunto de trabalho (Working Set)(2) 29 Relógio do Conjunto de Trabalho (WSClock) 30 15 Revisão dos Algoritmos de Substituição de Páginas 31 Modelando Algoritmos de susbtituição de Páginas – Anomalia de Belady { { FIFO com 3 molduras de páginas P's mostram qual referência de página provoca uma falta de página 32 16 Modelando Algoritmos de susbtituição de Páginas – Anomalia de Belady { { FIFO com 4 molduras de páginas P's mostram qual referência de página provoca uma falta de página 33 Modelando Algoritmos de susbtituição de Páginas – Anomalia de Belady { { { FIFO com 3 molduras de páginas FIFO com 4 molduras de páginas P's mostram qual referência de página provoca uma falta de página 34 17 Algoritmos de Pilha 7 4 6 5 Estado da Memória (M), após cada item da string de referência ser processado 35 A String de Distância Funções de Densidade de Probabilidade para duas Strings de Distância Hipotéticas 36 18 A String de Distância { Computação da taxa de falte de páginas pela string de distância z z vetor C vetor F 37 Tópicos de Projeto para Sistemas de Paginação Políticas de Alocação Global vs Alocação Local (1) { { { Configuração Original Substituição de página Local Substituição de página Global 38 19 Políticas de Alocação Global vs Alocação Local (2) Taxa de Faltas de Páginas como uma função do número de molduras atribuidas 39 Fim { Apresentar a definição do trabalho de OSP do módulo memória 40 20 Próxima aula 41 Tabelas de Páginas Invertidas Comparaçao entra uma tabela de páginas tradicional com uma tabela de páginas invertida --- Usasdas em arquiteturas de 64 bits 42 21 Controle de Carga { { { Apesar de bons projetos, os sistemas ainda podem entrar em thrashing Quando a Frequência de Faltas de Página indica: z Alguns processos precisam de mais memória z Nenhum processo precisa de menos memória Solução? 43 Tamanho de Página (1) Pequeno { Vantagens { Desvantagem 44 22 Tamanho de Página(2) { Overhead devido à fragmentação interna e tabela de página page table space overhead = { Onde z z z s ⋅e p + p 2 internal fragmentation s = tamanho médio do processo em bytes p = tamanho da página em bytes Optimized e = entrada de página when p = 2 se 45 Separar espaços de instruções e Dados { { Um espaço de endereçamento Espaços separados para I e D 46 23 Páginas Compartilhadas 47 Política de Limpeza { Requerida para um processo em background process, daemon de paginação z { Quando poucas molduras estão livres z { Periodicamente inspeciona a memória Seleciona uma página para ser descartada Pode usar mesmo algoritmo(clock) z Como o algoritmos regular de troca de páginas mas com parâmetros diferentes 48 24 Tópicos de Implementação Envolvimento do So com Paginação 1. Criação do processo − − Determina tamanho do programa Cria a tabela de páginas Execução do processo 2. MMU iniciada para o novo processo − TLB flushed Momento da falta de página 3. − − Determina endereço virtual causando a falta swap página alvo fora e requerida para dentro 4. Termino do processo − Libera tabela de páginas e páginas 49 Administração de Falta de páginas (1) 1. 2. 3. 4. 5. Hardware traps para kernel Registradores gerasi salvos SO determina qual página virtual é requerida SO checa validade do endereço, busca a moldura de página Se moldura selecionada estiver suja, escreve-a em disco 50 25 Administração de Falta de páginas (2) SO traz página nova do disco As tabelas de páginas são atualizadas 6. 7. z Instrução que provocou a falta volta para seu início Processo de falta restaurado Registradores restaurados 8. 9. z Programa continua 51 Backup de Instrução Uma instrução provocando uma falta de página 52 26 Travando páginas em memória { { Memória virtual e ES interagem ocasionalmente Processo faz uma chamada para uma leitura de um dispositivo em um buffer z z z { Enquanto espera por ES, outro processo inicia Ocorre uma falta de página O buffer do primeiro processo pode ser escolhido para page-out É necessário especificar algumas páginas “travadas”(locked) 53 Backing Store (a) Paginação para área de swap estática (b) Backing up páginas dinamicamente 54 27 Separação de Política e Mecanismo Administração de falta de página com um paginador externo 55 Segmentação (1) { { Espaço de endereçamnto uni-dimensional com tabelas crescentes Uma tabela pode invadir a outra 56 28 Segmentação (2) Permite cada tabela crescer/encolher independentemente 57 Segmentação (3) Comparação entre paginação e segmentação 58 29 Implementação de segmentação pura (a)-(d) desenvolvimento de “xadrez” (e) Remoção por compactação 59 Segmentação com paginação: MULTICS (1) { { Segmento descritor aponta para tabelas de páginas Segmento descritor – números são comprimentos dos campos 60 30 Segmentação com paginação : MULTICS (2) Um endereço virtual MULTICS de 34bit 61 Segmentação com paginação : MULTICS (3) Conversão de um endereço de duas partes em um endereço de memória 62 31 Segmentação com paginação: MULTICS (4) { { Versão simplificada da MULTICS TLB Existencia de 2 tamanhos de páginas faz a TLB mais complicada 63 Segmentação com paginação: Pentium (1) Um seletor Pentium 64 32 Segmentação com paginação: Pentium (2) { { Descritor de segmento de código do Pentium Segmentos de dados diferentes (ligeiramente) 65 Segmentação com paginação: Pentium (3) Conversão de (selector, offset) para endereço linear 66 33 Segmentação com paginação: Pentium (4) Mapeamento do endereço linear em endereço físico 67 Segmentação com paginação: Pentium (5) Level Proteção no Pentium 68 34