Memoria Virtual

24,437 views

Published on

Memoria Virtual

Published in: Technology, Education

Memoria Virtual

  1. 1. Memória Virtual
  2. 2. Motivação <ul><li>Problemas de gerência de memória </li></ul><ul><ul><ul><li>Todo o espaço lógico é mapeado no espaço físico </li></ul></ul></ul><ul><ul><ul><li>O tamanho do programa é limitado pelo tamanho da memória </li></ul></ul></ul><ul><ul><ul><li>Desperdício de memória por manter armazenado código não utilizado freqüentemente </li></ul></ul></ul><ul><li>Um programa ocupando apenas o espaço de memória necessária permite uma economia substancial de espaço em memória </li></ul><ul><ul><ul><li>Espaço liberado pode ser usado para a carga e execução simultânea de mais programas </li></ul></ul></ul>
  3. 3. Memória Virtual <ul><li>Definição: </li></ul><ul><ul><li>Técnica que permite a execução de um processo sem que ele esteja completamente em memória </li></ul></ul><ul><ul><ul><li>separação do vínculo de endereço lógico do endereço físico </li></ul></ul></ul><ul><li>Princípios básicos </li></ul><ul><ul><li>Carregar uma página/segmento na memória principal apenas quando for necessário </li></ul></ul><ul><ul><ul><li>paginação por demanda </li></ul></ul></ul><ul><ul><ul><li>segmentação por demanda </li></ul></ul></ul><ul><ul><li>Manter em memória apenas as páginas/segmentos necessários </li></ul></ul>
  4. 4. Vantagens <ul><li>Aumenta o grau de multiprogramação </li></ul><ul><li>Reduz o número de operações de I/O para carga/swap do programa </li></ul><ul><li>Capacidade de executar programas maiores que a capacidade disponível de memória </li></ul>
  5. 5. Memória Virtual Memória Lógica (processo) p 0 p n f 0 f k Memória Física Número de páginas maior que o número de frames n > k
  6. 6. Princípio de Localidade <ul><li>Base de funcionamento da memória virtual </li></ul><ul><li>Na execução de um processo existe uma probabilidade de que acessos a instrução e dados sejam limitados a um trecho </li></ul><ul><ul><li>Exemplos </li></ul></ul><ul><ul><ul><li>laços for, while, do-while </li></ul></ul></ul><ul><ul><ul><li>acessos a elementos de vetores </li></ul></ul></ul><ul><li>Em um determinado instante de tempo apenas esses trechos do processo necessitam estar em memória </li></ul><ul><li>Possibilidade de “adivinhar” os trechos necessários na seqüência de execução </li></ul>
  7. 7. Necessidades para implementar memória virtual <ul><li>Hardware deve suportar paginação e/ou segmentação </li></ul><ul><li>Sistema operacional deve controlar o fluxo de páginas/segmentos entre a memória secundária (disco) e a memória principal </li></ul><ul><li>Necessidade de gerenciar </li></ul><ul><ul><li>Áreas livres e ocupadas </li></ul></ul><ul><ul><li>Mapeamento da memória lógica em memória física </li></ul></ul><ul><ul><li>Substituição de páginas/segmentos </li></ul></ul>
  8. 8. Paginação por demanda <ul><li>Forma mais comum de implementação de memória virtual </li></ul><ul><li>Similar a paginação com swapping </li></ul><ul><ul><ul><li>No lugar do swap-in/out de um processo, se realiza o swap-in/out de apenas uma página do processo </li></ul></ul></ul>f o f o f n f n swapper pager Swap-in Page-in
  9. 9. Paginação por demanda <ul><li>Carrega uma página para a memória principal somente quando ela é necessária </li></ul><ul><li>Vem de encontro com a filosofia de memória virtual </li></ul><ul><ul><li>Reduz operações de I/O </li></ul></ul><ul><ul><ul><li>carrega apenas as páginas necessárias </li></ul></ul></ul><ul><ul><li>Reduz quantidade de memória utilizada por processo </li></ul></ul><ul><ul><li>Aumenta o grau de multiprogramação </li></ul></ul>
  10. 10. Paginação por demanda <ul><li>Uma referência está sempre associada a uma página </li></ul><ul><ul><li>presente ou não na memória (page-fault) </li></ul></ul><ul><li>Para controlar estas páginas usa-se um bit para indicar se a página está na memória principal ou secundária </li></ul>a c d e f g b h 0 1 2 3 4 5 6 7 f 0 f n Tabela de Páginas Page-fault Page-in
  11. 11. Tratamento de page-fault SisOp i . . . mov ax, m . . . 1 2 3 4 5 6 f 0 f 1
  12. 12. Tratamento de page-fault <ul><li>1. Trap </li></ul><ul><li>2. Salva contexto </li></ul><ul><li> Detecta que interrupção é por page-fault </li></ul><ul><li> Verifica se referência é válida e determina localização da página no disco </li></ul><ul><li>3. Solicita operação de leitura de página faltante do disco para o frame </li></ul><ul><li> Passa processo da página faltante para estado bloqueado e escalona outro processo </li></ul><ul><li>4. Interrupção de disco (final de transferência de página) </li></ul><ul><li>5. Atualiza tabela de página </li></ul><ul><li>6. Passa processo do estado suspenso para pronto </li></ul>
  13. 13. Desempenho da paginação por demanda <ul><li>Taxa de page-faults  0  p  1.0 </li></ul><ul><ul><li>p=0, qualquer referência não gera page-fault </li></ul></ul><ul><ul><li>p=1, qualquer referência provoca page-fault </li></ul></ul><ul><li>Tempo efetivo de acesso </li></ul><ul><ul><ul><li>t efetivo = (1 - p) . t acesso + p . t page-fault </li></ul></ul></ul><ul><li>Ex: tempo de acesso = 100 ns </li></ul><ul><li>tempo de page fault = 25 ms </li></ul>
  14. 14. Desempenho da paginação por demanda <ul><li>Como melhorar o desempenho </li></ul><ul><ul><li>mantendo a taxa de page-faults pequena </li></ul></ul><ul><ul><li>acelerando procedimentos de leitura em disco </li></ul></ul><ul><ul><ul><li>procedimento de swap (pager) </li></ul></ul></ul>
  15. 15. Implementação de Memória Virtual <ul><li>A memória virtual pode ser implementada por: </li></ul><ul><ul><ul><li>paginação por demanda </li></ul></ul></ul><ul><ul><ul><li>segmentação por demanda </li></ul></ul></ul><ul><ul><ul><li>segmentação com paginação (recai em paginação) </li></ul></ul></ul><ul><li>O princípio de funcionamento é o mesmo, porém é mais simples de gerenciar paginação por demanda </li></ul>
  16. 16. Implementação de Memória Virtual <ul><li>Memória física é um recurso limitado, é necessário então: </li></ul><ul><ul><li>política de carga de página </li></ul></ul><ul><ul><li>política de localização de página </li></ul></ul><ul><ul><li>política de substituição de página </li></ul></ul><ul><li>Partição de swap </li></ul><ul><ul><li>área específica do disco destinada a armazenar páginas(segmentos) </li></ul></ul><ul><ul><li>organizado de forma diferente do sistema de arquivos para otimizar acesso </li></ul></ul>
  17. 17. Políticas do Gerenciador de Memória <ul><li>Política de busca (fetch) </li></ul><ul><li>Política de localização (placement) </li></ul><ul><li>Política de substituição (replacement) </li></ul><ul><li>Política de alocação (allocation) </li></ul><ul><ul><li>Fixa ou variável (Qtd de páginas/processo) </li></ul></ul><ul><li>Política de limpeza (cleaning) </li></ul><ul><ul><li>Páginas sujas (com escritas) </li></ul></ul><ul><li>Política de controle de carga (load-control) </li></ul><ul><ul><li>Grau de multiprogramação </li></ul></ul>
  18. 18. Política de busca de páginas (fetch policy) <ul><li>Determina quando uma página deve migrar da memória secundária para a principal </li></ul><ul><li>Duas alternativas: </li></ul><ul><ul><li>busca por demanda </li></ul></ul><ul><ul><ul><li>só carrega a página se der um page-fault </li></ul></ul></ul><ul><ul><li>pré-paginação </li></ul></ul><ul><ul><ul><li>carrega não só a página “faltante”, mas as seguintes </li></ul></ul></ul><ul><li>Otimizações </li></ul><ul><ul><li>Nem toda página necessita page-out </li></ul></ul><ul><ul><ul><li>página não modificada </li></ul></ul></ul><ul><ul><ul><li>páginas read-only (código) </li></ul></ul></ul>
  19. 19. Política de Localização (placement policy) <ul><li>Determinar onde uma página deve ficar na memória física é irrelevante num sistema de memória paginado porque o hardware de tradução de endereços usa qualquer elemento da tabela de páginas com igual eficiência </li></ul><ul><li>Importante em sistemas de memória com segmentação pura, onde as partes do programa têm tamanho variável e a minimização da fragmentação externa na memória principal é um requisito fundamental </li></ul><ul><li>Sistemas atuais suportam segmentação com paginação, de tal forma que os segmentos não precisam estar contíguos na memória, tornando esta política desnecessária (exceção: NUMA) </li></ul>
  20. 20. Política de Substituição de Páginas <ul><li>Determina qual página deve ser substituída para carregar uma nova página. </li></ul><ul><ul><ul><li>As páginas físicas (frames) podem ficar totalmente ocupadas a medida que páginas lógicas de processos são carregadas </li></ul></ul></ul><ul><ul><ul><li>Necessidade de liberar uma página física (frame) para atender à falta de página </li></ul></ul></ul><ul><ul><ul><li>O algoritmo de substituição de páginas é responsável pela escolha de uma página vítima </li></ul></ul></ul>
  21. 21. Política de substituição de páginas <ul><li>Utilizado quando não há mais frames livres </li></ul><ul><li>Seleciona na memória uma página a ser substituída quando outra página necessita ser carregada na memória </li></ul><ul><ul><li>problema é determinar a página menos necessária </li></ul></ul><ul><li>Certas páginas que não devem ser substituídas podem ser “grampeadas” a frames (frame locking) </li></ul><ul><ul><li>código e estrutura de dados do sistema operacional </li></ul></ul><ul><ul><li>buffers de I/O </li></ul></ul>
  22. 22. Política de substituição de páginas <ul><li>Algoritmo ótimo </li></ul><ul><ul><li>Seleciona para ser substituída a página que não será acessada por mais tempo </li></ul></ul><ul><ul><ul><li>impossível prever o futuro </li></ul></ul></ul><ul><ul><ul><li>emprego de aproximações </li></ul></ul></ul><ul><li>Algoritmos para substituição de páginas </li></ul><ul><ul><li>First-in-first-out (FIFO) </li></ul></ul><ul><ul><li>Least Recently Used (LRU) </li></ul></ul><ul><ul><li>baseado em contadores </li></ul></ul><ul><ul><ul><li>Least Frequently Used (LFU) </li></ul></ul></ul><ul><ul><ul><li>Most Frequently Used (MFU) </li></ul></ul></ul>
  23. 23. Bits auxiliares <ul><li>Objetivo </li></ul><ul><ul><li>Auxiliar a implementação do mecanismo de substituição de páginas </li></ul></ul><ul><ul><li>Não são absolutamente necessários, porém simplificam e tornam mais eficaz o mecanismo de substituição de páginas </li></ul></ul><ul><li>dirty bit </li></ul><ul><ul><li>indica alteração na página durante a execução de um processo </li></ul></ul><ul><ul><li>se página não foi alterada não é necessário salvar em disco </li></ul></ul><ul><li>reference bit </li></ul><ul><ul><li>indica acesso a uma página dentro de um intervalo de tempo </li></ul></ul><ul><li>lock bit </li></ul><ul><ul><li>evita que uma página seja selecionada como “vítima” </li></ul></ul>
  24. 24. String de referência <ul><li>O trace de memória para um processo em particular mostra a seguinte seqüência de endereçamento </li></ul><ul><ul><li>0100,0432,0101,0612,0102,0103,0194,0101,0611,0102,0103, </li></ul></ul><ul><ul><li>0104,0101,0610,0102,0103,0104,0101,0609,0102,0105 </li></ul></ul><ul><li>que para um sistema com páginas de 100 bytes irá gerar a seguinte string de referência </li></ul><ul><ul><li>1,4,1,6,1,6,1,6,1,6,1 </li></ul></ul>
  25. 25. String de referência <ul><li>Para determinar o número de page-faults para uma string de referência em particular é preciso saber o número de frames alocado para o processo </li></ul><ul><li>Por exemplo, para a string de referência da transparência anterior e com três frames teríamos 3 page-faults, uma falha na primeira vez em que cada página foi referenciada. </li></ul>
  26. 26. Exemplo a ser usado <ul><li>String de referência </li></ul><ul><li>7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 </li></ul><ul><li>para uma memória com 3 frames </li></ul>
  27. 27. Algoritmo FIFO 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 0 7 0 1 2 0 1 2 3 1 2 3 0 4 3 0 4 2 0 4 2 3 0 2 3 0 1 3 0 1 2 7 1 2 7 0 2 7 0 1
  28. 28. Algoritmo Ótimo 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 0 7 0 1 2 0 1 2 0 3 2 4 3 2 0 3 2 0 1 7 0 1
  29. 29. Algoritmo LRU 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 0 7 0 1 2 0 1 2 0 3 4 0 3 4 0 2 4 3 2 0 3 2 1 3 2 1 0 2 1 0 7 <ul><li>necessita suporte de hardware </li></ul><ul><li>manter na tabela de páginas o momento exato do último acesso </li></ul><ul><li>implica em manter um registrador adicional para cada página </li></ul>
  30. 30. Histórico <ul><li>Aproximação do LRU </li></ul><ul><li>Através de um histórico dos bits de referência </li></ul><ul><li>A MMU seta esse bit toda vez que ela é acessada </li></ul><ul><li>Gerência de memória periodicamente amostra esses bits </li></ul><ul><li>A cada amostragem, bits são copiados para o histórico e zerados na tabela de páginas </li></ul><ul><li>Como histórico têm capacidade limitada, a mostragem mais antiga é descartada antes de copiar a nova </li></ul><ul><li>Descartada página com menor valor de histórico </li></ul>
  31. 31. Histórico Páginas acessadas t P3 P1 P3 P1 P2 P0 P1 P2 P7 P2 P7 P0 P6 amostra P0 P1 P2 P3 P4 P5 P6 P7 P8 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 amostra P0 P1 P2 P3 P4 P5 P6 P7 P8 1 0 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 amostra P0 P1 P2 P3 P4 P5 P6 P7 P8 0 1 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 amostra P0 P1 P2 P3 P4 P5 P6 P7 P8 1 0 1 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0
  32. 32. Algoritmo do Relógio Último frame substituído Não substituível Não substituível Não substituível Não substituível Não substituível Não substituível Não substituível Substituível Main memory frames
  33. 33. Algoritmo do relógio <ul><li>Apontador indica a próxima vítima </li></ul><ul><li>Quando for necessário descartar, verifica bit de referência,e se estiver desligado, descarta </li></ul><ul><li>Senão, desliga bit de referência (dá uma segunda chance para a página) e avança uma posição </li></ul><ul><li>Repete passo 2 </li></ul>
  34. 34. Algoritmo do Relógio Advance CLOCK pointer Test and clear use-bit Use-bit Dirty-bit Schedule page for cleaning Replace page set clear set clear
  35. 35. Política de Limpeza <ul><li>Determina quando uma página modificada será escrita na memória auxiliar </li></ul><ul><ul><li>limpeza por demanda </li></ul></ul><ul><ul><ul><li>uma página suja (dirty) só será escrita quando for selecionada para ser substituída pela política de substituição de páginas </li></ul></ul></ul><ul><ul><li>pré-limpeza </li></ul></ul><ul><ul><ul><li>escreve as páginas sujas antes que os frames que eles ocupam sejam requisitados, convertendo-os em páginas limpas </li></ul></ul></ul>
  36. 36. Política de Alocação <ul><li>Determina a quantidade de páginas alocadas a cada processo </li></ul><ul><ul><ul><li>Como alocar frames na presença de n processos? </li></ul></ul></ul><ul><ul><ul><li>Qual o mínimo necessário por processo? </li></ul></ul></ul><ul><ul><ul><li>Quantas páginas físicas alocar para cada processo? </li></ul></ul></ul><ul><ul><ul><li>De onde alocar frames? </li></ul></ul></ul>
  37. 37. Número mínimo de frames <ul><li>Um processo necessita de um número mínimo de frames para executar </li></ul><ul><ul><li>definido pelo conjunto de instruções da máquina (modos de endereçamento) </li></ul></ul><ul><ul><ul><li>INC MEM - necessita 2 páginas (código e dados) </li></ul></ul></ul><ul><ul><ul><li>MOV MEM, POS - necessita três páginas (código, 2 de dados) </li></ul></ul></ul><ul><li>Quanto menor o número de frames alocado a um processo maior a taxa de falta de páginas (page fault) </li></ul><ul><ul><li>queda de desempenho do sistema </li></ul></ul><ul><ul><li>tentar manter o máximo de páginas na memória </li></ul></ul><ul><li>Número máximo de páginas em memória depende da capacidade física da máquina </li></ul>
  38. 38. Algoritmos de Alocação <ul><li>Alocação igualitária </li></ul><ul><ul><ul><li>cada processo recebe um número fixo de páginas para executar </li></ul></ul></ul><ul><li>Alocação variável </li></ul><ul><ul><ul><li>a quantidade de frames alocado ao processo varia ao longo de sua execução </li></ul></ul></ul>
  39. 39. Alocação igualitária <ul><li>Princípio é dividir os m frames da memória física entre os n processos aptos a executar </li></ul><ul><ul><li>cada processo recebe m/n frames </li></ul></ul><ul><ul><li>A sobra pode compor um poll de frames livres </li></ul></ul><ul><ul><li>número de frames é ajustado dinamicamente em função do grau de multiprogramação </li></ul></ul><ul><li>Desvantagem </li></ul><ul><ul><li>provoca distorções, uma vez que processos possuem diferentes necessidades de memória </li></ul></ul>
  40. 40. Alocação Proporcional <ul><li>Princípio é alocar frames (f) em função do tamanho do processo </li></ul><ul><ul><ul><li>f i = </li></ul></ul></ul><ul><li>A alocação deve ser reajustada dinamicamente em função do grau de multiprogramação </li></ul> n j=1 s j s i x m s i - memória virtual do processo p i n - número de processos em estado apto m - número de frames
  41. 41. Alocação Proporcional <ul><li>Ao invés do seu tamanho, usar a prioridade do processo como peso </li></ul><ul><li>Se um processo p i provoca uma falta de página </li></ul><ul><ul><li>Ao invés de selecionar como vítima um dos seus frames </li></ul></ul><ul><ul><li>Seleciona como vítima um frame de um processo com prioridade mais baixa </li></ul></ul>
  42. 42. De onde alocar frames <ul><li>Alocação local </li></ul><ul><ul><li>A gerência de memória define quantas páginas físicas cada processo deve dispor </li></ul></ul><ul><ul><li>Em caso de falta de página a substituição ocorre entre as próprias páginas do processo que gerou a falta </li></ul></ul><ul><ul><li>Desvantagens </li></ul></ul><ul><ul><ul><li>definição do número de páginas para cada processo </li></ul></ul></ul><ul><ul><ul><li>impede que um processo utilize páginas físicas disponíveis pertencentes a outros processos </li></ul></ul></ul><ul><li>Alocação global </li></ul>
  43. 43. De onde alocar frames <ul><li>Alocação Global </li></ul><ul><ul><li>Uma lista única de gerência de páginas físicas compartilhadas por todos os processos </li></ul></ul><ul><ul><li>Um processo pode receber uma página física de outro processo </li></ul></ul><ul><li>Desvantagens </li></ul><ul><ul><li>O conjunto de páginas físicas de um processo depende do comportamento de outros processos </li></ul></ul><ul><ul><li>Um processo de maior prioridade pode descartar as páginas físicas de um processo de menor prioridade </li></ul></ul><ul><li>Apesar das desvantagens é o método comumente empregado </li></ul><ul><ul><li>privilegia o uso inteligente da memória física disponível </li></ul></ul>
  44. 44. Política de Controle de Carga <ul><li>Sem um mecanismo que controle o número de processos ativos, é muito fácil “ estourar” o sistema de memória virtual </li></ul><ul><li>Cada processo tem um subconjunto de páginas que são ativamente acessadas </li></ul><ul><li>Se a soma dos subconjuntos de páginas que cada processo referencia é maior que o número de frames disponíveis </li></ul><ul><ul><li>trashing </li></ul></ul>
  45. 45. Trashing Throughput Grau de multiprogramação Intuição Comportamento real Page-fault
  46. 46. Trashing <ul><li>Tratamento de um page-fault é caro </li></ul><ul><li>A medida que o número de páginas físicas alocadas a um processo diminui a taxa de page-faults aumenta </li></ul><ul><li>Um processo está em trashing quando ele passa a maior parte do seu tempo de execução no processo de paginação </li></ul><ul><li>Efeito “congelamento” difere em função da política de alocação de páginas físicas </li></ul><ul><ul><li>Alocação local implica no congelamento do processo </li></ul></ul><ul><ul><li>Alocação global implica no congelamento do sistema </li></ul></ul>
  47. 47. Conseqüências do trashing <ul><li>Baixa taxa de uso da CPU para execução de processos de usuários </li></ul><ul><ul><li>S.O. pode “pensar” que está faltando processos aptos para execução e permite a criação/adição de novos processos </li></ul></ul><ul><ul><ul><li>escalonador de médio e longo prazo </li></ul></ul></ul><ul><li>Adição de processos implica em maior necessidade de frames </li></ul><ul><ul><li>Agrava a situação </li></ul></ul><ul><li>Conclusão </li></ul><ul><ul><li>Existe um grau de multiprogramação que compromete o desempenho do sistema </li></ul></ul>
  48. 48. Multiprogramação e trashing <ul><li>Para retirar um sistema do estado de trashing é necessário suspender alguns processos temporariamente </li></ul><ul><li>Mecanismo natural é o swapping </li></ul><ul><ul><li>não desejável por aumentar o tempo de resposta do processo </li></ul></ul><ul><li>Conclusão </li></ul><ul><ul><li>“ Mais vale a pena prevenir que remediar” </li></ul></ul>
  49. 49. Prevenção do trashing <ul><li>Memória virtual é baseada no princípio da localidade </li></ul><ul><li>Trashing sempre que: </li></ul><ul><ul><ul><li> da memória necessária a localidade > memória física disponível (frames) </li></ul></ul></ul><ul><li>Duas abordagens </li></ul><ul><ul><li>Método da freqüência da falta de página </li></ul></ul><ul><ul><li>Método do working-set </li></ul></ul><ul><ul><ul><li>baseado no histórico de bits de referência </li></ul></ul></ul>
  50. 50. Método freqüência de falta de página <ul><li>Objetivo </li></ul><ul><ul><li>controlar a taxa de falta de páginas para manter dentro de um limite razoável </li></ul></ul><ul><ul><ul><li>taxa maior que o máximo aceitável </li></ul></ul></ul><ul><ul><ul><ul><li>Há processos que estão necessitando de páginas físicas </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Realiza o swap-out de alguns processos </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Libera páginas físicas para processos que necessitam </li></ul></ul></ul></ul><ul><ul><ul><li>taxa menor que o valor mínimo </li></ul></ul></ul><ul><ul><ul><ul><li>Desligar o mecanismo de swapping </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Processos têm páginas físicas demais alocadas </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>pode liberar algumas </li></ul></ul></ul></ul></ul>
  51. 51. Método do working-set <ul><li>Definição </li></ul><ul><ul><li>O working-set com parâmetro  para um processo no tempo t, W(t,  ), é o conjunto de páginas que foram referenciadas nas últimas  unidades de tempo </li></ul></ul><ul><li> é o tamanho da janela e o seu parâmetro de ajuste </li></ul><ul><ul><li>como  é uma medida de tempo, e o sistema é multiprogramado,  mede o tempo do processo e não o tempo real </li></ul></ul><ul><ul><li>se  é grande o suficiente de forma que o working-set contenha as páginas freqüentemente acessadas e pequeno o suficiente para conter não mais do que isso, o working-set é uma maneira confiável para se obter a descrição das necessidades do processo. </li></ul></ul>
  52. 52. Método do working-set <ul><li>Observe que </li></ul><ul><ul><li>W(t,  ) varia com o tempo </li></ul></ul><ul><ul><li>se um processo executa por  unidades de tempo e só utiliza uma página: </li></ul></ul><ul><ul><ul><li>W(t,  ) = 1 </li></ul></ul></ul><ul><ul><li>W(t,  ) pode ser tão grande quanto o número n de páginas de um processo se diferentes páginas são endereçadas rapidamente </li></ul></ul>
  53. 53. Princípio do working-set <ul><li>Um processo pode executar somente se o seu working-set estiver em memória. Uma página não poderá ser removida da memória principal se ela estiver no working-set de um processo em execução </li></ul>
  54. 54. Outras questões <ul><li>Tamanho da página </li></ul><ul><li>Estrutura do programa </li></ul>
  55. 55. Tamanho da página <ul><li>Fatores a serem considerados </li></ul><ul><ul><li>fragmentação </li></ul></ul><ul><ul><li>tamanho das estruras internas do Sistema Operacional (tabela de páginas) </li></ul></ul><ul><ul><li>Overhead das operações de E/S </li></ul></ul><ul><ul><li>Localidade </li></ul></ul>
  56. 56. Tamanho da página <ul><li>Menor a página </li></ul><ul><ul><li>menor a quantidade de fragmentação interna </li></ul></ul><ul><ul><li>maior a quantidade de páginas por processo </li></ul></ul><ul><ul><li>mais páginas por processo, maior tabela de páginas </li></ul></ul><ul><ul><ul><li>maior tabela de páginas, maior a necessidade de uso da memória </li></ul></ul></ul><ul><ul><li>maior é o número de páginas que podem ser mantidas na memória principal </li></ul></ul><ul><ul><li>execução tende a deixar em memória apenas as páginas que são necessárias (localidade) </li></ul></ul><ul><ul><ul><li>com muitas páginas a tendência é reduzir a taxa de page-fault </li></ul></ul></ul><ul><li>Maior a página </li></ul><ul><ul><li>maior o desperdício de memória pois mantém além das referêmcias necessárias, outras não utilizadas </li></ul></ul><ul><ul><li>tendência a aumentar a taxa de page-fault </li></ul></ul>
  57. 57. Estrutura do Programa <ul><li>Exemplo </li></ul><ul><ul><li>matriz A[1024 x 1024] de inteiros </li></ul></ul><ul><ul><li>cada linha é armazenada em uma página </li></ul></ul><ul><ul><li>programa 1 (1024 x 1024 page-faults) </li></ul></ul><ul><ul><li>programa 2 (1024 page faults) </li></ul></ul>for ( j = 0; j < 1024; j++) for( i = 1; i < 1024; i++) A[i,j]=0; for ( i = 0; i < 1024; i++) for( j = 1; j < 1024; j++) A[i,j]=0;
  58. 58. Estrutura do programa <ul><li>Exemplo: </li></ul><ul><ul><li>ordenação de vetores maiores que a memória principal </li></ul></ul><ul><ul><li>compilador re-organiza o código para evitar page-faults </li></ul></ul><ul><ul><ul><li>estrutura de dados </li></ul></ul></ul><ul><ul><ul><li>heap </li></ul></ul></ul><ul><ul><ul><li>pilha </li></ul></ul></ul>

×