Memória virtual 2

3,312 views
3,235 views

Published on

Published in: Technology, Sports
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,312
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
82
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Memória virtual 2

  1. 1. Memória Virtual<br />GeovanePazine Filho<br />Guilherme Augusto S. G. Loiola<br />Inael Rodrigues de Oliveira Neto<br />Jackeline Neves de Almeida<br />Wilker de Jesus Machado<br />
  2. 2. ALOCAÇÃO DE QUADROS<br />THRASHING<br />ARQUIVOS MAPEADOS NA MEMÓRIA<br />ALOCANDO MEMÓRIA DO KERNEL<br />OUTRAS CONSIDERAÇÕES<br />EXEMPLOS DE SISTEMA OPERACIONAL<br />PERGUNTAS E RESPOSTAS<br />Memória virtual<br />
  3. 3. Igual:<br />Todosrecebem o mesmonúmero de quadros.<br />Proporcional:<br />Funçãoemrelaçãoaotamanho do processo define o número de quadros.<br />Alocação - Fixa<br />
  4. 4. Igual:<br />93 quadros com tamanho de 1k cada<br />2 processos com tamanho 5k<br />Cadaprocessoficaria com 46 quadros e 1 quadroficariacomoquadrolivre.<br />Casoruim:<br />2 processos: 1 com tamanho de 10k e outro de 127k.<br />Alocação - Fixa (Exemplo)<br />
  5. 5. Proporcional:<br />Sendo Q o número de quadros para cada processo:<br />Q = (Si / Σ Si) x m<br />Si é o tamanho do processo<br />m é a quantidade total de quadros<br />93 quadros com tamanho de 1k cada.<br />2 processos: 1 de 10k e outro de 127k.<br />Processo de 10k fica com 6 quadros<br />Processo de 127k fica com 86 quadros<br />Alocação - Fixa (Exemplo)<br />
  6. 6. Processos com maiorprioridaderecebemmaisquadros.<br />Alocação - Prioridade<br />
  7. 7. Global:<br />Substituição de um quadro do conjunto de todososquadros.<br />Local:<br />Substituição de um quadro do seupróprioconjunto de quadros.<br />Alocação - Global Vs Local<br />
  8. 8. Se quantidade de quadros alocados a um processo de baixa prioridade ficar abaixo da quantidade mínima exigida pela arquitetura do computador, precisamos suspender a execução desse processo.<br />Quantidade de quadros resulta em: processo<br />-Retiramos páginas restantes e liberamos quadros.<br />Thashing<br />X<br />
  9. 9. Quando não há quadros suficientes para dar<br />suporte às páginas em uso ativo:<br />FALHA DE PÁGINA!!!<br />Então ele terá que:<br />SUBSTITUIR ALGUMA PÁGINA<br />Mas...<br />Thrashing<br />
  10. 10. Todas as suas páginas estão em uso ativo!!! Então...<br />Ele precisa substituir uma página que será necessária novamente em seguida!<br />NOVA FALHA!!!<br />LOOP: SUBSTITUI & FALHA!!! = ALTA ATIVIDADE DE PÁGINA, que é o:<br />Thrashing<br />
  11. 11. Thrashing<br />Definição:<br />O thrashing resulta em graves problemas de desempenho!<br />Paginação<br />Execução<br />
  12. 12. Observemos o exemplo baseado nos primeiros sistemas de paginação:<br />Utilização da CPU então grau de multiprogramação com um novo processo no sistema. Um algoritmo de substituição de página global é utilizado; ele substitui as páginas sem considerar o processo ao qual pertencem.<br />Quando o processo entra em nova fase de execução e precisa de mais quadros. Então começa as falhas e a remoção de quadros de outros processos. Mas esses outros processos também precisam dessas páginas, logo, novas falhas e novas remoções de quadros de outros processos.<br />Thashing – O motivo<br />
  13. 13. Exemplo [cont]<br />Processos com falhas precisam usar o dispositivo de paginação para enviar e receber páginas. E a medida que são enfileirados para o dispositivo de paginação, a fila de prontos se esvazia.<br /> Processos Paginação e CPU <br />Thrashing – O motivo<br />esperam<br />
  14. 14. Thrashing – O motivo<br />Exemplo [cont]<br />O escalonador de CPU vê CPU e multiprogramação.<br />O novo processo requisita mais quadros causando mais falhas de página e uma fila maior para o dispositivo de paginação.<br />CPU ainda mais e o escalonador tenta multiprogramação.<br />Acontecendo o THRASHING!<br />Falha de página e acesso à memória<br />Não realiza trabalho, pois os processos estão todos paginando.<br />
  15. 15. Multiprogramação e a CPU ,até ser alcançado o máximo.<br />Multiprogramação ainda mais, thrashing entra em cena e a CPU bruscamente.<br /> Para aumentar a utilização de CPU e acabar com o thrashing temos que o grau de multiprogramação.<br />Thrashing – O motivo<br />
  16. 16. Podemos limitar os efeitos do thrashing usando um algoritmo de substituição local.<br />Assim um processo que iniciou thrashing não poderá roubar quadros de outro.<br />Thrashing – O motivo<br />
  17. 17. Fornecer a um processo quantos quadros ele precisar é uma forma de impedir o thrashing.<br />Modelo de localidade – quanto quadros um processo está usando?<br />Thrashing – o motivo<br />
  18. 18. Baseado na suposição de localidade;<br />examina   referências mais recentes;<br />evita thrashing e mantém o alto grau de multiprogramação;<br />O conjunto de trabalho (WS) é formado pelas páginas nas   referências de páginas mais recentes;<br />A propriedade mais importante em WS é o seu tamanho. <br />Podemos calcular o tamanho de WS de cada processo (WSSi). Se o total da demanda de quadros (D = ∑WSSi) for maior que o total de quadros, ocorrerá thrashing, porque alguns quadros não terão quadros suficientes (processo i precisa de WSSi quadros);<br /> O SO pode monitorar o conjunto de páginas de cada processo e alocar o número suficiente de quadros para o seu conjunto de trabalho. Se D > quadros disponíveis, um processo deverá ser suspenso e suas páginas são descarregadas e alocadas a outros processos.<br />ThashingModelo de conjunto de trabalho<br />
  19. 19. ajuda no controle de thrashing;<br />alta taxa de falta de página - processo precisa de mais quadros;<br />baixa taxa de falta de página - talvez processo com número excessivo de quadros.<br />ThashingFrequência de falha de página<br />
  20. 20.
  21. 21. Arquivos mapeados na memória<br />E/S de arquivos mapeados na memória permite que acessos sejam tratados como acesso a rotinas de memória pelo mapeamento de blocos do disco em páginas na memória<br />Um arquivo é lido inicialmente usando paginação sob demanda. Uma porção do arquivo é lida do sistema de arquivos em páginas físicas. Leituras e escritas subseqüentes de/para o arquivo são tratados como acessos a memória comuns.<br />Simplifica o acesso a arquivos tratando E/S através da memória ao invés do uso de chamadas de sistemas read() write()<br />Também permite que vários processos mapeiem o mesmo arquivo através do compartilhamento de páginas na memória<br />
  22. 22. Arquivos mapeados na memória<br />
  23. 23. E/S mapeada na memória<br />Intervalos de endereços de memórias são separados e mapeados para registradores de dispositivos.<br />As leituras e escritas nesses endereços de memória fazem com que os dados sejam transferidos de e para os registradores de dispositivo.<br />Esse método é apropriado para dispositivos que possuem tempos de resposta curtos, como controladores de vídeo.<br />Arquivos mapeados na memória<br />
  24. 24. Buddy System<br />• Alocação da memória a partir de<br />segmentos de tamanho fixo<br />• Memória alocada de tamanho 2n<br />– Uma requisição é arredondada para um tamanho 2n<br />– Quando um tamanho menor deve ser alocado, um segmento maior é dividido na metade.<br />• Continua até que o tamanho adequado seja obtido Buddy<br />Sistema Buddy<br />
  25. 25. Alocação do Sistema Buddy<br />
  26. 26. • Estratégia alternativa:<br />• Slab: uma ou mais páginas físicamente contíguas<br />• Cache: um ou mais Slabs<br />• Cache única para cada estrutura de dados do kernel<br /> – Cada cache é preenchida com dados do kernel – instâncias das estruturas de dados<br />• Quando uma cache é criada, os objetos preenchidos são marcados como livres<br />• Quando as estruturas são utilizadas, os objetos são marcados como usados<br />• Se uma slab está cheio, um novo slab é utilizado<br /> – Se nenhum slab está disponível, criar um novo slab<br />• Benéficios: sem fragmentação, requisição de memória é satisfeita rapidamente<br />Alocação de Slab<br />
  27. 27. Alocação de Slab<br />
  28. 28. As principais decisões tomadas para um sistema de página são as seleções de um algoritmo de substituição e uma política de alocação, discutidas anteriormente. Existem também muitas outras considerações, e discutiremos algumas delas.<br />Outras Considerações<br />
  29. 29. Para reduzir o alto nível de paginas ausentes que ocorrem na inicialização do processo.<br /> Pré-paginar todas ou algumas páginas que o processo irá precisar, antes de serem referenciadas.<br /> Mas se páginas pré-paginadas não são usadas, E/S e memória foram desperdiçados.<br /> Assuma que s páginas são pré-paginadas e x delas são usadas<br /><ul><li> Se o custo de s * x falta páginas evitados > ou < que o custo da pré-paginação
  30. 30. s * (1- x) páginas desnecessárias?
  31. 31. x próximo de zero ⇒ perdas na pré-paginação</li></ul>Outras Considerações:Pré-paginação<br />
  32. 32. Escolha do tamanho da página deve levar em consideração:<br /><ul><li> fragmentação
  33. 33. tamanho da tabela
  34. 34. sobrecarga de E/S
  35. 35. localidade</li></ul>Outras Considerações: Tamanho da Página<br />
  36. 36. Alcance da TLB – A quantidade de memória acessível a partir da TLB.<br /> Alcance da TLB = (Tamanho da TLB) X (Tamanho da Página).<br /> Idealmente, o conjunto-de-trabalho de cada processo é armazenado na TLB. Em caso contrário existirá um alto grau de páginas ausentes.<br /> Aumentar o tamanho da página. Isso pode causar um aumento na fragmentação uma vez que nem todas as aplicações necessitam de páginas de tamanho grande.<br /> Fornecer vários tamanhos de página. Isso possibilita aos aplicativos que necessitam de páginas maiores a oportunidade de usá-las sem aumentar a fragmentação. a maneira de aumento<br />Outras Considerações: Alcance da TLB<br />
  37. 37. Esquema tabela de páginas invertida<br />Problema com tabela de páginas é o seu tamanho<br />Tabela de páginas invertida surge como uma solução<br /><ul><li>Uma tabela de páginas para todo o sistema (não mais por processo)
  38. 38. Uma entrada para cada frame
  39. 39. Endereço lógico da página e a qual processo pertence</li></ul>Endereço lógico é formado por <process_id, página, deslocamento><br />Cada entrada da tabela possui <process_id; página><br />Tabela é pesquisada e retorna, se presente, o índice i associado a entrada<br /><ul><li>Cada índice corresponde a um frame</li></li></ul><li>
  40. 40. Estrutura de programa<br /><ul><li>Int[128,128] data;
  41. 41. Cada linha é armazenada em uma página
  42. 42. Programa 1</li></ul>for (j = 0; j <128; j++)<br />for (i = 0; i < 128; i++)<br />data[i,j] = 0;<br />128 x 128 = 16,384 páginas ausentes<br /><ul><li> Programa 2</li></ul>for (i = 0; i < 128; i++)<br />for (j = 0; j < 128; j++)<br />data[i,j] = 0;<br />128 páginas ausentes<br />Outras Considerações: Estrutura de Programas<br />
  43. 43. E/S Interlock – Páginas algumas vezes devem ser travadas (lock) na memória.<br /> Considere E/S. Páginas que são usadas para copiar um arquivo de um dispositivo devem ser travadas para não serem selecionadas para despejo por um algoritmo de substituição de página<br />Outras Considerações: Interlock de E/S<br />
  44. 44. Razão porque blocos usados para E/S devem estar na memória<br />
  45. 45. Paginação com demanda com clustering;<br />O clustering trata de falhas trazendo a página que falta com várias outras páginas após a página que falta;<br />Quando um processo é criado ele recebe um mínimo e um máximo de conjunto de trabalho;<br />Windows XP<br />
  46. 46. O conjunto mínimo de trabalho é quantidade mínima de página que o processo tem garantias de ter na memória(50);<br />Se houver memória disponível, o processo pode receber tantas páginas quanto seu conjunto máximo de trabalho (345);<br />O gerenciador de memória virtual mantém um lista de quadro de páginas livres;<br />Windows XP<br />
  47. 47. Thread incorre em uma falha de página, <br />o kernel atribui uma página à thread; <br />É imperativo que o kernel mantenha uma quantidade suficiente de memória livre à disposição.<br />Solaris<br />
  48. 48. Versões recentes do kernel do Solaris fornecem melhorias do algoritmo de paginação.<br />Uma melhoria é a paginação por prioridade.<br />Solaris<br />
  49. 49. Se tivermos 85 quadros com tamanho 1k cada e 2 processostrabalhando, 1 com tamanho 5k e outro de tamanho 10k.<br />Quantosquadroscadaprocessoficaria com o metodoFixoIgual? E no método Fixo Proporcional?<br />Alocação - Pergunta<br />
  50. 50. FixoIgual:<br />85/2 = 2*42 + 1<br />Portantocadaprocessoficaria com 42 quadros e 1 quadroficarialivre.<br />FixoProporcional:<br />(5/15)*85 = 28<br />(10/15)*85 = 56<br />Portanto, o processo de tamanho 5k ficaria com 28 quadros e o de 10k com 56 e 1 quadroficarialivre.<br />Alocação - Resposta<br />
  51. 51. O que causa thrashing?<br />Thrashing – Pergunta <br />
  52. 52. Ocorrência de paginação excessiva (realocação de quadros) e baixa execução.<br /> Resultando em graves problemas de desempenho!<br />Thrashing - Resposta<br />
  53. 53. Sistema buddy permite alocação de memória de tamanho variável?<br />Sistema Buddy - Pergunta<br />
  54. 54. Não<br />Sistema Buddy – Resposta<br />
  55. 55. Quanto a E/S mapeada na memória, este método é apropriado para quais tipos de dispositivos?<br />Arquivos mapeados na memória<br />
  56. 56. R: Dispositivos que possuem tempos de resposta curtos, como controladores de vídeo.<br />Arquivos mapeados na memória<br />
  57. 57. Se a memória estiver abaixo do limite é utilizado CORTE AUTOMÁTICO DO CONJUNTO DE TRABALHO para restaurar o valor do limite; Como funciona o corte automático?<br />Windows XP - Pergunta<br />
  58. 58. R: Se um processo recebeu mais páginas do que o seu mínimo o GMV removerá as páginas até atingir seu mínimo. Se o processo está no seu mínimo, pode receber páginas da lista de quadros livres se tiver memória livre.<br />Windows XP - resposta<br />

×