Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Memória Virtual - Aspectos Básicos

5,235 views

Published on

Aspectos básicos da memória virtual.

Published in: Education, Technology

Memória Virtual - Aspectos Básicos

  1. 1. Universidade Federal de Goiás Goiânia 27/05/2010 Participantes: Achiles Camilo Soares Neto Bruno Blumenschein Cézar Augusto Ferreira Maxwel Satoshi Duarte Otsuka Tiago Borges Pereira
  2. 2. Índice <ul><li>Aspectos básicos </li></ul><ul><li>Paginação por demanda </li></ul><ul><li>Cópia na escrita </li></ul><ul><li>Substituição de página </li></ul><ul><li>Perguntas / Respostas </li></ul>
  3. 3. Aspectos Básicos <ul><li>A memória virtual é uma técnica que permite a execução de processos que não estão completamente na memória. Uma vantagem desse esquema é que os programas podem ser maiores do que a memória física. </li></ul><ul><li>A memória virtual também extrai a memória principal para um conjunto de armazenamento extremamente grande e uniforme, separando a memória lógica, vista pelo usuário, da memória física. Essa técnica livra os programadores dos problemas de limitação do armazenamento de memória. </li></ul>
  4. 4. Aspectos Básicos <ul><li>A memória virtual permite que processos compartilhem arquivos com facilidade e implementem a memória compartilhada. </li></ul><ul><li>Ela ainda provê um mecanismo eficientes para a criação de processos. </li></ul><ul><li>Contudo a memória virtual não é fácil de implementar e pode diminuir bastante o desempenho, se usada de forma descuidada. </li></ul>
  5. 5. Aspectos Básicos <ul><li>Os algoritmos de gerência de memória que serão aqui esboçados são necessários por causa de um requisito básico: as instruções executadas precisam estar na memória física. </li></ul><ul><li>A primeira técnica para atender a esse requisito é colocar o espaço de endereços lógicos inteiro na memória física. </li></ul><ul><li>O carregamento dinâmico pode ajudar a aliviar essa restrição, mas exige precauções especiais e trabalho extra pelo programador. </li></ul>
  6. 6. Aspectos Básicos <ul><li>O requisito de que as instruções precisam estar na memória física para serem executadas é necessário e razoável, mas também é lamentável, porque limita o tamanho de um programa ao tamanho da memória física. </li></ul><ul><li>Como certas opções e recursos de um programa podem ser usados raramente, na verdade, o programa inteiro não precisa ser necessariamente carregado. </li></ul><ul><li>E nos casos onde o programa é inteiro necessário, ele pode não ser necessário ao mesmo tempo. </li></ul>
  7. 7. Aspectos Básicos <ul><li>A capacidade de executar um programa que esteja apenas parcialmente na memória teria muitos benefícios: </li></ul><ul><li>O programa não seria mais restrito pela quantidade de memória física disponível. Os usuários poderiam escrever programas para um espaço de endereços virtuais extremamente grande, simplificado a tarefa de programação. </li></ul><ul><li>Como cada programa do usuário poderia exigir menos memória física, mais programas poderiam ser executados ao mesmo tempo. </li></ul>
  8. 8. Aspectos Básicos <ul><li>Menos E/S seria necessária para carregar ou trocar cada programa do usuário para a memória, de modo que cada programa do usuário seria executado mais rapidamente. </li></ul><ul><li>Assim, a execução de um programa que não esteja inteiramente na memória beneficiaria tanto o sistema quanto o usuário. </li></ul>
  9. 10. Aspectos Básicos <ul><li>A memória virtual envolve a separação entre a memória lógica e a memória física. Essa separação permite que uma memória virtual extremamente grande seja oferecida para os programadores quando somente uma memória física menor estiver disponível. </li></ul><ul><li>A memória virtual torna a tarefa de programação muito mais fácil, pois o programador não precisa mais se preocupar com a quantidade de memória física disponível. </li></ul>
  10. 12. Aspectos Básicos <ul><li>Analisando a figura a seguir percebemos que : permitimos que a heap cresça pra baixo da memória por meio de chamadas de função sucessivas. O grande espaço vazio entre a heap e a fila faz parte do espaço de endereços virtuais, mas só exigirá páginas físicas reais se a heap ou a pilha crescer. Os espaços de endereço virtual que incluem os espaços vazios são conhecidos como espaços de endereços esparsos . </li></ul>
  11. 13. Aspectos Básicos <ul><li>O uso de um espaço de endereço esparso é benéfico porque os buracos pode ser preenchidos enquanto os segmentos de pilha ou heap crescem, ou se quisermos vincular bibliotecas (ou possivelmente outros objetos compartilhados) de forma dinâmica durante a execução do programa. </li></ul>
  12. 14. Aspectos Básicos <ul><li>Além de separar a memória lógica da memória física, a memória virtual também permite que arquivos e memória sejam compartilhados por dois ou mais processos diferentes, o que ocasiona os seguintes benefícios: </li></ul><ul><li>As bibliotecas do sistema podem ser compartilhadas por vários processos diferentes, por meio do mapeamento do objeto compartilhado para um espaço de endereços virtuais. </li></ul>
  13. 15. Aspectos Básicos <ul><li>De modo semelhante, a memória virtual permite aos processos compartilharem memória. A memória virtual permite a um processo criar uma região da memória que pode compartilhar com outro processo. Os processos que compartilham essa região a consideram parte do seu espaço de endereços virtuais, embora as páginas físicas da memória sejam compartilhadas. </li></ul>
  14. 16. Aspectos Básicos <ul><li>A memória virtual pode permitir que as páginas sejam compartilhadas durante a criação do processo, por meio da chamada do sistema fork(), agilizando assim a criação do processo. </li></ul>
  15. 17. Paginação por demanda <ul><li>Carrega inicialmente apenas as páginas de um processo à medida que forem necessárias. </li></ul><ul><li>Comum serem usadas em sistemas de memória virtual. </li></ul><ul><li>Páginas são carregadas quando forem exigidas durante a execução do programa. </li></ul><ul><li>Páginas que não serão acessadas, então são carregadas para memória física. </li></ul>
  16. 18. Paginação por demanda <ul><li>Semelhante a paginação com SWAP </li></ul><ul><li>Processos residem na memória secundária (disco); quando são executados, passam para memória virtual. </li></ul><ul><li>Lazzy Swapper: Nunca troca uma página para a memória a menos que seja necessária. </li></ul><ul><li>Swapper x Paginador: </li></ul><ul><li>Swapper trata processos inteiros. </li></ul><ul><li>Paginador se preocupa com as páginas individuais de um processo. </li></ul>
  17. 19. Paginação por demanda <ul><li>Distinção: Páginas na Memória x Páginas do Disco </li></ul><ul><li>Utiliza-se do esquema de bit válido/inválido </li></ul><ul><li>bit válido = página está na memória. </li></ul><ul><li>bit inválido = ou válida mas está no disco. </li></ul>
  18. 20. Paginação por demanda page fault trap: Hardware de paginação nota o bit marcado como inválido, e causa uma interceptação para o S.O. Ocorrendo a falha, deve-se tratá-la conforme exemplo ao lado. E se o processo tentar acessar uma página não trazida para memória ?
  19. 21. Paginação por demanda Hardware O mesmo de swap e paginação: Tabela de página: marcar como inválido/inválido Memória secundária: Mantém as páginas que não estão na memória principal . Ex: swap space
  20. 22. Paginação por demanda Desempenho Baseando-se no tempo de acesso efetivo, no melhor caso, este tempo é igual ao tempo de acesso à memória. Nos piores casos, deve-se levar em conta a ocorrência de interceptação e quando ela ocorre.
  21. 23. CÓPIA NA ESCRITA <ul><li>A técnica conhecida como cópia na escrita (copy on write) funciona permitindo que os processos pai e filho compartilhem as mesmas páginas. </li></ul><ul><li>A proteção de página por cópia na escrita é uma otimização que o gerenciador de memória usa para economizar a memória física e preciosos ciclos de CPU no caso de regiões que nunca são acessadas. </li></ul>
  22. 24. CÓPIA NA ESCRITA <ul><li>As páginas compartilhadas são marcadas como páginas de cópia na escrita, significando que, se um processo escrever em uma página compartilhada, uma cópia da página compartilhada será criada. </li></ul><ul><li>A cópia na escrita permite a criação de processos mais eficientes, pois somente páginas modificadas são copiadas. </li></ul>
  23. 25. CÓPIA NA ESCRITA <ul><li>O processo de cópia na escrita acontece da seguinte forma: </li></ul><ul><ul><li>Quando um processo mapeia uma visão de cópia na escrita de um objeto de seção que contém páginas de leitura/escrita , em vez de criar um processo de cópia privada, o gerenciador de memória adia a criação de uma cópia das páginas até que a página seja modificada. </li></ul></ul>
  24. 26. CÓPIA NA ESCRITA Dois processos estão compartilhando três páginas, cada uma marcada como cópia-na-escrita.
  25. 27. CÓPIA NA ESCRITA <ul><ul><li>Se um thread em qualquer processo escreve na página, uma falta de gerenciamento de memória é gerada. </li></ul></ul><ul><ul><li>O gerenciador de memória vê que a escrita é para uma página de cópia na escrita e, em vez de informar a falta como uma violação de acesso, ele reserva uma nova página de leitura/escrita na memória física. </li></ul></ul><ul><ul><li>Copia o conteúdo da página original para a nova página, atualiza a informação de mapeamento de página e dispensa a exceção </li></ul></ul>
  26. 28. CÓPIA NA ESCRITA <ul><ul><li>Faz com que a instrução que gerou a falta seja novamente executada. Dessa vez, a operação de escrita terá sucesso. </li></ul></ul><ul><ul><li>A página recém copiada agora é privada ao processo que fez a escrita, e não é visível aos outros processos que ainda compartilham a página de cópia na escrita. </li></ul></ul><ul><ul><li>Cada novo processo que escreve nessa mesma página compartilhada também receberá sua própria cópia privada. </li></ul></ul>
  27. 29. CÓPIA NA ESCRITA
  28. 30. CÓPIA NA ESCRITA <ul><li>Somente as páginas que podem ser modificadas precisam ser marcadas como cópia na escrita. </li></ul><ul><li>As páginas que não podem ser modificadas (páginas contendo código executável) podem ser compartilhadas pelo pai e pelo filho. </li></ul>
  29. 31. CÓPIA NA ESCRITA <ul><li>A cópia na escrita é uma técnica comum utilizada por vários sistemas operacionais, inclusive Windows XP, Linux e Solaris. </li></ul>
  30. 32. Substituição de páginas <ul><li>Considere a seguinte situação: </li></ul><ul><ul><li>Enquanto um processo do usuário está sendo executado, ocorre uma falha de página. </li></ul></ul><ul><ul><li>O sistema operacional determina onde a página desejada está residindo no disco, mas descobre que não existe quadros livres na lista de quadros livres: TODA A MEMÓRIA ESTÁ SENDO UTILIZADA. </li></ul></ul><ul><li>Mediante a esta situação a solução mais comum é a substituição de páginas . </li></ul>
  31. 33. Substituição de páginas <ul><li>A substituição de páginas consistem em encontrar um quadro que não esteja sendo usado e o liberá-lo . </li></ul><ul><li>Como? </li></ul><ul><ul><li>Liberando o quadro, escrevendo seu conteúdo no swap space e alterando a tabela de páginas (e todas as outras tabelas) para indicar que a página não está mais em memória. </li></ul></ul><ul><ul><li>Pode-se usar o espaço liberado para manter a página no qual o processo notou a falha. </li></ul></ul><ul><ul><li>Modificamos a rotina se serviços de falha de páginas para incluir a substituição de página: </li></ul></ul>
  32. 34. Substituição de páginas <ul><li>Encontrar o local da página desejada no disco; </li></ul><ul><li>Encontrar um quadro livre: </li></ul><ul><ul><li>Se houver um quadro livre, use-o; </li></ul></ul><ul><ul><li>Se não houver um quadro livre, use um algoritmo de substituição de página para selecionar um quadro vítima; </li></ul></ul><ul><ul><li>Envie o quadro vítima para o disco; mude as tabelas de página e quadro de acordo; </li></ul></ul><ul><li>Ler a página desejada para o quadro recém-liberado; mudar as tabelas de página e quadro; </li></ul><ul><li>Reiniciar o processo do usuário. </li></ul>
  33. 35. Substituição de páginas
  34. 36. Substituição de páginas <ul><li>Observe que, se nenhum quadro estiver livre, duas transferências de página são exigidas (Uma para fora e outra para dentro). </li></ul><ul><li>Para reduzir este custo pode-se ser usado um bit de modificação . Cada página ou quadro pode ter um bit de modificação associado a ela no hardware. </li></ul><ul><ul><li>Quando selecionarmos uma página para substituição, examinamos seu bit de modificação: </li></ul></ul><ul><ul><ul><li>Se o bit estiver marcado, sabemos que a página foi modificada desde que foi lida no disco e neste caso precisamos escrever esta página no disco; </li></ul></ul></ul><ul><ul><ul><li>Se o bit não estiver marcado, sabemos que a página não foi modificada e, consequentemente, não precisamos movimentar essa página para o disco. </li></ul></ul></ul>
  35. 37. Substituição de páginas <ul><li>A substituição de página é algo básico na paginação por demanda. Ela completa a separação de memória lógica e memória física. </li></ul><ul><li>Se tivermos um processo do usuário com 20 páginas, poderemos executá-lo em 10 quadros usando a paginação por demanda e um algoritmo de substituição para encontrar um quadro livre sempre que necessário. </li></ul>
  36. 38. Substituição de páginas <ul><li>Substituição de páginas FIFO </li></ul><ul><li>O algoritmo de substituição de páginas mais simples é o First In First Out (FIFO). </li></ul><ul><li>Um algoritmo de substituição FIFO associa a cada página a hora em que essa página foi trazida da memória. </li></ul><ul><li>Quando uma página tiver de ser substituída, a página mais antiga será a escolhida. </li></ul><ul><li>O algoritmo de substituição FIFO é fácil de entender e programar. Contudo, seu desempenho nem sempre é bom. </li></ul>
  37. 39. Substituição de páginas
  38. 40. Substituição de páginas <ul><li>Substituição de páginas FIFO </li></ul><ul><li>Para ilustrar os problemas que são possíveis com ASFIFO considere o gráfico do próximo slide. </li></ul><ul><li>Observe que a quantidade de falhas para quatro quadros (dez) é maior do que a quantidade de falhas para três quadros (nove). </li></ul><ul><li>Este resultado inesperado é conhecido como anomalia de Belady: para alguns algoritmos de substituição de página, a taxa de falha de página pode aumentar enquanto a quantidade de quadros alocados aumenta. Poderíamos esperar que, dado mais memória a um processo, seu desempenho melhorasse. </li></ul>
  39. 41. Substituição de páginas
  40. 42. Substituição de páginas <ul><li>Substituição de página ótima </li></ul><ul><li>Um resultado da descoberta da anomalia de Belady foi a busca de um algoritmo de substituição de página ótima . </li></ul><ul><li>Um algoritmo de substituição de página ótima possui a menor taxa de falhas de páginas de todos os algoritmos, e nunca sofrerá com a anomalia Belady. Esse algoritmo é chamado de OPT ou MIN. Ele é simples: </li></ul><ul><ul><li>Substitua a página que não será usada pelo maior período. </li></ul></ul>
  41. 43. Substituição de páginas
  42. 44. Substituição de páginas <ul><li>Substituição de página ótima </li></ul><ul><li>Infelizmente, o algoritmo de substituição de página ótima é difícil de implementar, pois exige o conhecimento futuro da string de referência. Como resultado, o algoritmo ótimo é usado para estudos de comparação. Por exemplo, pode ser útil saber que, embora um novo algoritmo não seja ideal, está dentro dos 12,3% do ideal, no máximo, de dentro dos 4,7% da média. </li></ul>
  43. 45. Substituição de páginas <ul><li>Substituição de página LRU </li></ul><ul><li>Se o algoritmo ótimo não é viável, talvez uma aproximação do algoritmo ótimo seja possível. </li></ul><ul><li>A distinção principal entre FIFO e OPT é: </li></ul><ul><ul><li>FIFO usa a hora em que uma página foi trazida da memória; </li></ul></ul><ul><ul><li>OPT usa a hora em que uma página deverá ser usada. </li></ul></ul><ul><li>Se usarmos o passado recente como uma aproximadamente para o futuro próximo, então poderemos substituir a página que não foi usada pelo maior período. </li></ul>
  44. 46. Substituição de páginas <ul><li>Substituição de página LRU </li></ul><ul><li>Esta técnica é o algoritmo Lest Recently Used (LRU – menos recentemente usado); </li></ul><ul><li>A substituição LRU associa a cada página a hora do último uso desta página. Quando uma página tiver de ser substituída, a LRU escolhe a página que não foi usada pelo maior período; </li></ul>
  45. 47. Substituição de páginas
  46. 48. Substituição de páginas <ul><li>Substituição de página LRU </li></ul><ul><li>O maior problema é como implementar a substituição LRU. Um algoritmo de substituição de página LRU pode exigir assistência substancial do hardware. O problema é determinar a ordem dos quadros definidos pelo horário da última utilização. Duas implementações são viáveis: </li></ul><ul><ul><li>Contadores: no caso mais simples associamos a cada entrada da tabela de página um campo de tempo de uso e acrescentamos a CPU um relógio e um contador lógico. Sempre que é feita uma referência a página, o conteúdo do registrador de relógio é copiado para o campo de horário de uso na tabela de página para esta página. </li></ul></ul>
  47. 49. Substituição de páginas <ul><li>Substituição de página LRU </li></ul><ul><ul><li>Pilha: outra técnica para implementar a substituição LRU é manter uma pilha de números de página. Sempre que uma página é referenciada, ela é removida da pilha e colocada no topo. </li></ul></ul><ul><ul><li>Deste modo, o topo da pilha sempre é a página usada mais recentemente, e a pagina inferior é a página LRU. </li></ul></ul><ul><ul><li>Como as entradas precisam ser removidas do meio da pilha, é melhor implementar essa técnica usando uma lista duplamente encadeada com um ponteiro para a cabeça e outro para o final. </li></ul></ul>
  48. 50. Substituição de páginas <ul><li>Substituição de página por aproximação LRU </li></ul><ul><li>Poucos sistemas computadorizados proveêm suporte de hardware suficiente para a verdadeira substituição de página LRU e outros algoritmos de substituição precisam ser utilizados. </li></ul><ul><li>Muitos sistemas proveêm alguma ajuda na forma de bits de referência . O bit de referência é definido pelo hardware sempre que a página é referenciada. Os bits de referência estão associados a cada entrada na tabela de páginas. </li></ul>
  49. 51. Substituição de páginas <ul><li>Substituição de página por aproximação LRU </li></ul><ul><li>Inicialmente, todos os bits são apagados (com 0) pelo sistema operacional. </li></ul><ul><li>A medida que um processo é executado, o bit associado a cada página referenciada é marcada (com 1) pelo hardware. </li></ul><ul><li>Depois de um algum tempo podemos determinar quais páginas não foram usadas verificando o bit de referência embora não saibamos a ordem do uso. </li></ul><ul><li>Essa informação é a base para muitos algoritmos de substituição de página que se aproximam da substituição LRU. </li></ul>
  50. 52. Substituição de páginas <ul><li>Algoritmo de bits de referência adicionais </li></ul><ul><li>É mantido um byte (8 bits) para cada página em uma tabela de memória; </li></ul><ul><li>Em intervalos regulares uma interrupção de temporizador transfere o controle para o SO. </li></ul><ul><li>O sistema operacional desloca o bit de referência de cada página para o bit para o bit de alta ordem de seu byte de 8 bits deslocando os outros bits para a direita em 1 bit e descartando o bit de baixa ordem; </li></ul><ul><li>Esses registradores de deslocamento de 8 bits comtêm o histórico do uso da página para os oito últimos períodos; </li></ul>
  51. 53. Substituição de páginas <ul><li>Algoritmo de bits de referência adicionais </li></ul><ul><li>Se o registrador de deslocamento tiver 00000000 a página não foi usada por oito períodos; </li></ul><ul><li>Uma página utilizada pelo menos uma vez a cada período teria um registrador de deslocamento igual a 11111111; </li></ul><ul><li>Uma página com o registrador de deslocamento igual a 11000100 foi usada mais recentemente do que uma com 01110111; </li></ul><ul><li>Se interpretarmos esses bytes de 8 bits como inteiros sem sinal, a página com o menor número é a página LRU e poderá ser substituída; </li></ul><ul><li>Esse algoritmo é chamado algoritmo de substituição de página da segunda chance; </li></ul>
  52. 54. Substituição de páginas <ul><li>Algoritmo da segunda chance </li></ul><ul><li>O algoritmo básico da segunda chance é um algoritmo de substituição FIFO; </li></ul><ul><li>O que muda é que quando uma página tiver sido selecionada inspecionamos seu bit de referência: </li></ul><ul><ul><li>Se o valor for 0, prosseguimos com a substituição; </li></ul></ul><ul><ul><li>Se o valor for 1, damos uma segunda chance a página e selecionamos a próxima página FIFO; </li></ul></ul><ul><li>Quando uma página recebe uma segunda chance, seu bit de referência é apagado e sua hora de chegada é reiniciada para a hora atual; </li></ul>
  53. 55. Substituição de páginas <ul><li>Algoritmo da segunda chance melhorado </li></ul><ul><li>Pode-se melhorar o algoritmo da segunda chance considerando o bit de referência e o bit de modificação como um par ordenado: </li></ul><ul><ul><li>(0,0) – nem usada recentemente nem modificada, melhor página a ser substituída; </li></ul></ul><ul><ul><li>(0,1) – não usada recentemente mas modificada – não tão bom pois a página precisará ser escrita antes de ser substituída; </li></ul></ul><ul><ul><li>(1,0) – usada recentemente mas limpa – é provável que seja usada novamente; </li></ul></ul><ul><ul><li>(1,1) – usada recentemente e modificada – é provável que logo seja usada novamente e a página terá que ser escrita no disco antes de poder ser substituída; </li></ul></ul>
  54. 56. Substituição de páginas <ul><li>Substituição de página baseada em contagem </li></ul><ul><li>Pode-se manter um contador do número de referências feitas a cada página e desenvolver os dois esquemas a seguir: </li></ul><ul><ul><li>O algoritmo Lest Frequently Used – LFU (menos freqüentemente usada) exige que a página com a menor contagem seja substituída: </li></ul></ul><ul><ul><ul><li>O motivo para essa seleção é que uma página usada de maneira ativa deve ter um contador de referência grande, porém, um problema surgirá uma página for bastante usada durante a fase inicial de um processo mas nunca mais for usada novamente; </li></ul></ul></ul><ul><ul><li>O algoritmo Most Frequently Used – MFU (mais freqüentemente usada) é baseada no argumento de que a página com a menor contagem provavelmente acabou de ser trazida da memória e ainda está para ser usada. </li></ul></ul>
  55. 57. Substituição de páginas <ul><li>Algoritmo com buffer de página </li></ul><ul><li>Outros procedimentos são usados em conjunto com o algoritmo de substituição de página: </li></ul><ul><ul><li>Os sistemas mantêm um banco de quadros livres; </li></ul></ul><ul><ul><li>Quando ocorre uma falha, um quadro livre é escolhido como antes; </li></ul></ul><ul><ul><li>A página desejada é lida para um quadro livre do banco antes de a vítima ser retirada; </li></ul></ul><ul><li>Este procedimento permite ao processo reiniciar assim que possível, sem esperar a página vítima ser retirada; </li></ul><ul><li>Quando a vítima mais tarde for retirada, seu quadro será acrescentado ao banco de quadros livres </li></ul>
  56. 58. Substituição de páginas <ul><li>Algoritmo com buffer de página </li></ul><ul><li>Uma expansão desta idéia é: </li></ul><ul><ul><li>Manter uma lista de páginas modificadas; </li></ul></ul><ul><ul><li>Quando o dispositivo de páginas tiver ocioso uma página modificada será selecionada e escrita no disco e seu bit de modificação é zerado; </li></ul></ul><ul><li>Esse esquema aumenta a probabilidade de uma página estiver limpa quando for selecionada para substituição e não precisará ser escrita no disco; </li></ul>
  57. 59. Perguntas 1- Porque é interessante a utilização de memória virtual do ponto de vista da programação? 2- Quais as semelhanças e diferenças entre Paginação por demanda e SWAP? 3- Qual o principal benefício do uso da técnica da Cópia na escrita ? 4- Qual algoritmo de substituição de páginas mais simples? Comente-o. 5- Quais fatores afetam o desempenho de uma paginação por demanda?
  58. 60. Respostas <ul><li>1- Porque é interessante a utilização de memória virtual do ponto de vista da programação? </li></ul><ul><li>A memória virtual é interessante para o programador porque o programa não teria que ser mais restrito pela quantidade de memória física disponível. O programador poderia assim escrever programas para um espaço de endereços virtuais extremamente grande, deixando a programação mais simples. </li></ul>
  59. 61. Respostas <ul><li>2- Quais as semelhanças e diferenças entre Paginação por demanda e SWAP? </li></ul><ul><li>Em ambos os processos residem na memória secundária e quando são executados passam pra memória virtual; uma troca só é realizada quando é necessário. Na Paginação preocupa-se com as páginas individuais de cada processo, no swap trata-se de processos inteiros </li></ul>
  60. 62. Respostas <ul><li>3- Quais os benefícios da proteção de página por cópia na escrita? </li></ul><ul><li>Otimização para economizar a memória física e preciosos ciclos de CPU no caso de regiões que nunca são acessadas. Além de permitir a criação de processos mais eficientes, pois somente páginas modificadas são copiadas. </li></ul>
  61. 63. Respostas <ul><li>4- Qual algoritmo de substituição de páginas mais simples? Comente-o. </li></ul><ul><li>O algoritmo de First In First Out (FIFO), onde um algoritmo de substituição FIFO associa a cada página a hora em que essa página foi trazida da memória. Quando uma página tiver de ser substituída, a página mais antiga será a escolhida. </li></ul>
  62. 64. Respostas <ul><li>5- Quais fatores afetam o desempenho de uma paginação por demanda? </li></ul><ul><li>O desempenho de uma paginação por demanda depende da ocorrência de interceptação e quando e como ela ocorre. </li></ul>
  63. 65. Referências <ul><li>Sistemas operacionais com JAVA. - Abraham Silberchatz </li></ul>

×