Baixe o app para aproveitar ainda mais
Prévia do material em texto
MEMÓRIA VIRTUAL �A cada ano que passa, as tecnologias utilizadas no mundo da computação se desenvolvem cada vez mais, fazendo com que os aplicativos exijam cada vez mais recursos do sistema. mais recursos do sistema. �Conseqüentemente, a quantidade de memória requisitada também aumenta na mesma proporção � Em grande parte dos computadores, a quantidade de memória RAM instalada por padrão não dá conta de rodar sozinha os mais importantes aplicativos ( navegador, suíte de criação, comunicadores instantâneos) ao mesmo tempo. tempo. � Por esse e outros motivos, o mecanismo de Memória Virtual foi desenvolvido, visando compartilhar a RAM de maneira eficiente entre os programas. Logo, sua importância para a computação é inegável, principalmente por aproveitar ao máximo o uso da RAM. MODO COMO OS PROGRAMAS SÃO ARMAZENADOS NA MEMÓRIA FISICA? � Ao contrário do que muitas pessoas pensam, os programas ficam divididos em vários pequenos pedaços na memória física e não de forma contínua. � Por exemplo, a tabela abaixo demonstra um � Por exemplo, a tabela abaixo demonstra um exemplo de como os aplicativos Firefox, Skype e Photoshop poderiam estar presentes em uma memória RAM de 8 posições: � Como é possível observar, as posições são ocupadas da seguinte forma: � Apesar da memória ser dividida em pequenos pedaços, cada programa é enganado pelo sistema operacional, pensando que a memória é contínua e exclusiva só para ele. Isso acontece por causa do mecanismo de Memória Virtual, que consiste em mecanismo de Memória Virtual, que consiste em criar tabelas que relacionam posições virtuais e reais da RAM para um mesmo aplicativo. � Por exemplo, o layout de memória(muito simplificado) que o Firefox enxerga seria algo como o mostrado a seguir: � Olhando a tabela acima, o Firefox enxerga a memória de forma contínua (posições de 0 a 2) , enquanto a RAM trabalha de forma dividida em pequenos pedaços. � Como é possível notar, a ordem dos dados não � Como é possível notar, a ordem dos dados não precisa ser a mesma, visto que a posição virtual 1 corresponde à real 4, e a posição virtual 2 corresponde à real 2. MEMÓRIA VIRTUAL E PAGINAÇÃO � A memória virtual foi um dos mecanismos mais interessantes criados até hoje no mundo da computação, fazendo com que programas compartilhem a RAM do sistema, pensando que possuem toda a memória disponível para uso possuem toda a memória disponível para uso próprio. � Esse conceito engloba e utiliza vários outros menores, como cache de disco, paginação e tabela de páginas. � Técnica de Memória Virtual: separação da memória lógica de usuário e memória física � Somente parte dos programas precisam estar carregados na memória para execução � Espaço de endereçamento lógico pode, portanto, � Espaço de endereçamento lógico pode, portanto, ser muito maior que o espaço de endereçamento físico � Permite que espaços de endereçamento serem compartilhados por vários processos � Possibilita criação de processos de forma mais eficiente LIMITAÇÃO DAMEMÓRIA FÍSICA E O USO DE CACHE DE DISCO � Sem o uso da memória virtual e da cache de disco, seria comum o fato da RAM acabar muito rápido, pois os aplicativos necessitariam mais espaço do que o disponível. � Por exemplo, suponha um computador com 512 de � Por exemplo, suponha um computador com 512 de RAM rodando o Windows Vista e o Firefox. Por padrão, o Vista sozinho já ocupa aproximadamente 500 MB e o Firefox 100 MB. � Fazendo os cálculos, é possível perceber que os dois aplicativos juntos já estouram a quantidade de RAM total (600 > 512). � A solução mais natural é o uso da cache de disco, deixando armazenado na memória principal deixando armazenado na memória principal somente os trechos mais importantes do programa, enquanto que o resto do aplicativo fica no próprio disco HD( também chamado de memória secundária ). � Por exemplo, suponha que dois arquivos do Microsoft Word (aa.doc e bb.doc) estejam abertos ao mesmo tempo, mas que somente o aa.doc esteja sendo editado no momento. � Se você pensar um pouco, poderá observar que o � Se você pensar um pouco, poderá observar que o documento que não está sendo editado (bb.doc) não precisa estar na memória principal a todo momento � Simplificando bastante, é mais ou menos isso que acontece, o documento editado (aa.doc) fica armazenado na RAM e o não editado (bb.doc) na cache do disco. � Para tornar mais eficiente seu gerenciamento, os dados são armazenados na memória em blocos, os quais são chamados Páginas de Memória. Logo, continuando com o mesmo exemplo, a página de memória que contem os dados do documento memória que contem os dados do documento aa.doc ficaria na RAM, enquanto que a página do bb.doc estaria somente no disco. Cada documento pode ter uma ou mais páginas de memória, o que implica no fato de que um mesmo aplicativo possui muitas delas ao mesmo tempo. � No exemplo abaixo, com a página do bb.doc somente no disco, a RAM fica livre para armazenar dados mais importantes de outros programas no espaço 3. Este é o conceito de cache de disco, utilizado na implementação da memória virtual.utilizado na implementação da memória virtual. SISTEMA DE PAGINAÇÃO DE MEMÓRIA � Até o exato momento, vimos os principais conceitos sobre memória virtual: � A memória física é compartilhada por vários aplicativos ao mesmo tempo; � Cada programa enxerga uma versão virtual própria da memória, não correspondendo ao modo real; � Os programas não podem ser carregados de maneira completa na RAM, portanto, é necessário armazenar parte deles na memória primária e outra parte na secundária, através do mecanismo de páginas. � A paginação de memória é nada mais que a junção de todos eles � Neste mecanismo, cada programa possui uma tabela de páginas, a qual informa a posição exata de um página de memória qualquer ( na exata de um página de memória qualquer ( na RAM ou no Disco). � Em outras palavras, a tabela de páginas é a memória virtual que o programa enxerga. Para entender esses conceitos de forma mais palpável, vamos elaborar um exemplo bastante simplificado de sua organização. � Suponha que 8 arquivos estejam abertos no Word, possuindo os seguintes nomes: aa.doc, bb.doc, cc.doc, dd.doc, ee.doc, ff.doc, gg.doc e hh.doc. � Além disso, suponha também que cada um dos documentos possui uma página de memória documentos possui uma página de memória específica, com o mesmo nome do arquivos. Por motivos de simplificação, vamos usar uma RAM que armazena 8 páginas. � Continuando, as páginas aa.doc, ee.doc e gg.doc estão na memória, enquanto que as demais estão no disco. Logo, o mecanismo de paginação e Memória Virtual pode ser organizado da seguinte maneira:maneira: PAGINAÇÃO SOB DEMANDA: HARDWARE � Na tabela acima, podemos observar que as páginas do Word estão dividindo espaço na RAM com outras pertencentes a aplicativos como o Skype e o Firefox. � A maioria dos sistemas operacionais reserva � A maioria dos sistemas operacionais reserva espaço no disco para efetuar a cache de disco durante a sua própria inicialização. Normalmente esta é uma região especial, não compartilhada com os demais arquivos armazenados no HD. � No Windows, é possível reservar este espaço em qualquer partição já existente. Já no Linux, é necessário criar uma partição especial, chamada de Swap. SUBSTITUIÇÃO DE PÁGINAS NA MEMÓRIA � Quando um programa necessita trabalhar com uma página que não está na RAM, acontece o que chamamos de Falta de Página. (page fault) � Deste modo, ele procura um espaço livre e passa a utilizá-loutilizá-lo Caso toda a RAM esteja lotada, é necessárioefetuar a famosa troca de páginas, que faz com que a nova página saia do disco e vá para memória, do mesmo modo que alguma outra presente lá saia da memória e volte para o disco. � Existem vários métodos de escolher qual página será expurgada de lá, entre os mais usados, está o que determina que o conjunto de dados que está há mais tempo sem ser acessado deve dar lugar. � Conseqüentemente, as tabelas de ambos os programas envolvidos na operação ( uma única programas envolvidos na operação ( uma única tabela se as páginas forem do mesmo aplicativo), devem ser atualizadas coma as novas posições de memória das páginas. Este processo é realizado milhares de vezes por segundo, por vários programas ao mesmo tempo. � Solução: Substituição de página � Encontrar um página pouco utilizada para trocar � Utiliza um algoritmo de seleção de vítima ALGORITMOS DE SUBSTITUIÇÃO DE PÁGINAS � Algoritmo FIFO (First-In, First-Out) ou PCPS (Primeiro a Chegar, Primeiro a Sair) � Algoritmo Ótimo � Algoritmo NRU (Not Recently Used) Algoritmo LRU (Least Recently Used)� Algoritmo LRU (Least Recently Used) � Algoritmo da Segunda Chance � Algoritmo MFU FIFO � Página que foi primeiro utilizada (first-in) será a primeira a ser retirada (first-out) � Fila (lista encadeada) de páginas � Início: Página mais velha � Fim: Página mais nova � Falta de página� Falta de página � Retira página do início � Insere página nova no fim � Simples � A princípio: razoável que a página há mais tempo no working set deva ser retirada , mas isto nem sempre é verdade... � Esta escolha não leva em consideração se a página está sendo muito utilizada ou não, o que não é muito adequado pois pode prejudicar o desempenho do sistema. � Por este motivo, o FIFO apresenta uma deficiência denominada anomalia de Belady: a quantidade de falta denominada anomalia de Belady: a quantidade de falta de páginas pode aumentar quando o tamanho da memória também aumenta. � Por estas razões, o algoritmo FIFO puro é muito pouco utilizado. Contudo, sua principal vantagem é a facilidade de implementação: uma lista de páginas ordenada pela “idade”. Dessa forma, na ocorrência de uma falta de página a primeira página da lista será substituída e a nova será acrescentada ao final da lista. ALGORITMO ÓTIMO � Trocar a página que não será usada no período mais longo � Desempenho – deseja-se um algoritmo que resulte em um número mínimo de faltas de páginas (page faults).faults). � Problema: saber quando cada página será referenciada É Impossível de se implementar � Utilidade: Comparação com relação aos demais algoritmos � Por estes motivos, o algoritmo ótimo só é utilizado em simulações para se estabelecer o valor ótimo e analisar a eficiência de outras propostas elaboradas. � Seleciona uma página que não vai mais ser usada ou a que mais vai demorar a ser usada � Impossível na prática: o SO ainda não tem bola de cristal ou joga tarô para saber o futuro das aplicaçõesaplicações � Usado como parâmetro de desempenho � NRU (Not Recently Used) Página não usada recentemente � Escolhe a página que não foi recentemente utilizada Algoritmo � As páginas são separadas em quatro categorias quando há page fault: � Classe 0: não referenciada, não modificada � Classe 1: não referenciada, modificada � Classe 2: referenciada, não modificada; � Classe 3: referenciada, modificada � Uma página da classe mais baixa não vazia é escolhida aleatoriamente para ser substituída. � Fácil de entender e implementar e tem desempenho adequado � LRU (Least Recently Used) Menos usada recentemente � Seleciona a página usada há mais tempo, isto é, o objetivo é retirar aquela que está há mais tempo sem ser referenciadasem ser referenciada � Realizável : alto custo � Manter lista: � Início: Página usada mais recentemente � Fim: Página usada menos recentemente � NFU (Não Freqüentemente Usada) ou LFU (Least Frequently Used) � Aging (Envelhecimento) Algoritmo Aging (Envelhecimento): modificação do � Algoritmo Aging (Envelhecimento): modificação do NFU � Algoritmo da Segunda Chance � É um algoritmo FIFO modificado � MFU (Most Frequently Used) � Escolhe a página mais freqüentemente usada � Argumento: uma página com contador de valor baixo, foi, provavelmente, trazida para a memória baixo, foi, provavelmente, trazida para a memória recentemente e ainda será usada PEQUENOS TRAVAMENTOS EM APLICATIVOS � Sabe quando você está rodando algum aplicativo ou jogo pesado e pequenos travamentos ocorrem constantemente? � Existem muitas possibilidades que o problema seja ocasionado por “Thrashing”, ou seja, muitas ocasionado por “Thrashing”, ou seja, muitas páginas de memória precisam ser substituídas na mesma hora, confundindo o sistema e travando momentaneamente o aplicativo. Uma das principais maneiras de resolver este problema é adicionar mais memória RAM ao computador. � Frequencia de Falta de páginas � Estipula um limite para a taxa de falta de páginas � Se a taxa do processo passa do limite superior � O processo ganha mais quadros � Se a taxa do processo cai do limite inferior MEMÓRIA VIRTUAL THRASHING Siste m a s O p e ra cio n ais � O processo perde quadros 41 Siste m a s O p e ra cio n ais � 1) Diferencie página virtual de uma página real. � Página virtual é um conjunto de endereços virtuais que faz parte do espaço de endereçamento virtual de um processo.Página real é um conjunto de de um processo.Página real é um conjunto de endereços reais localizado na memória principal. A página real está sempre associada a uma página virtual � 2) Quais os benefícios oferecidos pela técnica de memória virtual? Como este conceito permite que um programa e seus dados ultrapassem os limites da memória principal? � Os principais benefícios da técnica de memória virtual são possibilitar que programas e dados sejam do são possibilitar que programas e dados sejam do tamanho da memória principal, permitir um número maior de processos compartilhando a memória principal e minimizar o problema da fragmentação. O que possibilita que um programa e seus dados ultrapassem os limites da memória principal é a técnica de gerência de memória virtual que combina as memórias principal e secundária, estendendo o espaço de endereçamento dos processos.
Compartilhar