Memória Virtual - Aspectos Básicos

65
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

description

Aspectos básicos da memória virtual.

Transcript of Memória Virtual - Aspectos Básicos

Page 1: Memória Virtual - Aspectos Básicos

Universidade Federal de GoiásGoiânia 27/05/2010

Participantes:Achiles Camilo Soares Neto

Bruno BlumenscheinCézar Augusto Ferreira

Maxwel Satoshi Duarte OtsukaTiago Borges Pereira

Page 2: Memória Virtual - Aspectos Básicos

ÍndiceAspectos básicosPaginação por demandaCópia na escritaSubstituição de páginaPerguntas / Respostas

Page 3: Memória Virtual - Aspectos Básicos

Aspectos BásicosA 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.

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.

Page 4: Memória Virtual - Aspectos Básicos

Aspectos BásicosA memória virtual permite que processos

compartilhem arquivos com facilidade e implementem a memória compartilhada.

Ela ainda provê um mecanismo eficientes para a criação de processos.

Contudo a memória virtual não é fácil de implementar e pode diminuir bastante o desempenho, se usada de forma descuidada.

Page 5: Memória Virtual - Aspectos Básicos

Aspectos BásicosOs 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.

A primeira técnica para atender a esse requisito é colocar o espaço de endereços lógicos inteiro na memória física.

O carregamento dinâmico pode ajudar a aliviar essa restrição, mas exige precauções especiais e trabalho extra pelo programador.

Page 6: Memória Virtual - Aspectos Básicos

Aspectos BásicosO 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.

Como certas opções e recursos de um programa podem ser usados raramente, na verdade, o programa inteiro não precisa ser necessariamente carregado.

E nos casos onde o programa é inteiro necessário, ele pode não ser necessário ao mesmo tempo.

Page 7: Memória Virtual - Aspectos Básicos

Aspectos BásicosA capacidade de executar um programa que

esteja apenas parcialmente na memória teria muitos benefícios:

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.

Como cada programa do usuário poderia exigir menos memória física, mais programas poderiam ser executados ao mesmo tempo.

Page 8: Memória Virtual - Aspectos Básicos

Aspectos BásicosMenos 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.

Assim, a execução de um programa que não esteja inteiramente na memória beneficiaria tanto o sistema quanto o usuário.

Page 9: Memória Virtual - Aspectos Básicos
Page 10: Memória Virtual - Aspectos Básicos

Aspectos BásicosA 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.

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.

Page 11: Memória Virtual - Aspectos Básicos
Page 12: Memória Virtual - Aspectos Básicos

Aspectos BásicosAnalisando 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.

Page 13: Memória Virtual - Aspectos Básicos

Aspectos BásicosO 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.

Page 14: Memória Virtual - Aspectos Básicos

Aspectos BásicosAlé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:

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.

Page 15: Memória Virtual - Aspectos Básicos

Aspectos BásicosDe 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.

Page 16: Memória Virtual - Aspectos Básicos

Aspectos BásicosA 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.

Page 17: Memória Virtual - Aspectos Básicos

Paginação por demandaCarrega inicialmente apenas as páginas de

um processo à medida que forem necessárias.Comum serem usadas em sistemas de

memória virtual.Páginas são carregadas quando forem

exigidas durante a execução do programa.Páginas que não serão acessadas, então são

carregadas para memória física.

Page 18: Memória Virtual - Aspectos Básicos

Paginação por demanda Semelhante a paginação com SWAPProcessos residem na memória secundária

(disco); quando são executados, passam para memória virtual.

Lazzy Swapper: Nunca troca uma página para a memória a menos que seja necessária.

Swapper x Paginador: Swapper trata processos inteiros.Paginador se preocupa com as páginas

individuais de um processo.

Page 19: Memória Virtual - Aspectos Básicos

Paginação por demandaDistinção: Páginas na Memória x Páginas do

Disco

Utiliza-se do esquema de bit válido/inválido bit válido = página está na memória.bit inválido = ou válida mas está no disco.

Page 20: Memória Virtual - Aspectos Básicos

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 ?

Page 21: Memória Virtual - Aspectos Básicos

Paginação por demandaHardwareO 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

Page 22: Memória Virtual - Aspectos Básicos

Paginação por demandaDesempenho

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.

Page 23: Memória Virtual - Aspectos Básicos

CÓPIA NA ESCRITA 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.

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.

Page 24: Memória Virtual - Aspectos Básicos

CÓPIA NA ESCRITA 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.

A cópia na escrita permite a criação de processos mais eficientes, pois somente páginas modificadas são copiadas.

Page 25: Memória Virtual - Aspectos Básicos

CÓPIA NA ESCRITA O processo de cópia na escrita acontece da

seguinte forma:

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.

Page 26: Memória Virtual - Aspectos Básicos

CÓPIA NA ESCRITA

Dois processos estão compartilhando três páginas, cada uma marcada como cópia-na-escrita.

Page 27: Memória Virtual - Aspectos Básicos

CÓPIA NA ESCRITA Se um thread em qualquer processo escreve

na página, uma falta de gerenciamento de memória é gerada.

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.

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

Page 28: Memória Virtual - Aspectos Básicos

CÓPIA NA ESCRITA Faz com que a instrução que gerou a falta

seja novamente executada. Dessa vez, a operação de escrita terá sucesso.

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.

Cada novo processo que escreve nessa mesma página compartilhada também receberá sua própria cópia privada.

Page 29: Memória Virtual - Aspectos Básicos

CÓPIA NA ESCRITA

Page 30: Memória Virtual - Aspectos Básicos

CÓPIA NA ESCRITA Somente as páginas que podem ser

modificadas precisam ser marcadas como cópia na escrita.

As páginas que não podem ser modificadas (páginas contendo código executável) podem ser compartilhadas pelo pai e pelo filho.

Page 31: Memória Virtual - Aspectos Básicos

CÓPIA NA ESCRITA A cópia na escrita é uma técnica comum

utilizada por vários sistemas operacionais, inclusive Windows XP, Linux e Solaris.

Page 32: Memória Virtual - Aspectos Básicos

Substituição de páginasConsidere a seguinte situação:

Enquanto um processo do usuário está sendo executado, ocorre uma falha de página.

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.

Mediante a esta situação a solução mais comum é a substituição de páginas.

Page 33: Memória Virtual - Aspectos Básicos

Substituição de páginasA substituição de páginas consistem em encontrar

um quadro que não esteja sendo usado e o liberá-lo.

Como?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.

Pode-se usar o espaço liberado para manter a página no qual o processo notou a falha.

Modificamos a rotina se serviços de falha de páginas para incluir a substituição de página:

Page 34: Memória Virtual - Aspectos Básicos

Substituição de páginas• Encontrar o local da página desejada no disco;• Encontrar um quadro livre:– Se houver um quadro livre, use-o;– Se não houver um quadro livre, use um algoritmo

de substituição de página para selecionar um quadro vítima;

– Envie o quadro vítima para o disco; mude as tabelas de página e quadro de acordo;

• Ler a página desejada para o quadro recém-liberado; mudar as tabelas de página e quadro;

• Reiniciar o processo do usuário.

Page 35: Memória Virtual - Aspectos Básicos

Substituição de páginas

Page 36: Memória Virtual - Aspectos Básicos

Substituição de páginas Observe que, se nenhum quadro estiver livre,

duas transferências de página são exigidas (Uma para fora e outra para dentro).

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.

Quando selecionarmos uma página para substituição, examinamos seu bit de modificação:

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;

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.

Page 37: Memória Virtual - Aspectos Básicos

Substituição de páginas

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.

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.

Page 38: Memória Virtual - Aspectos Básicos

Substituição de páginasSubstituição de páginas FIFO

O algoritmo de substituição de páginas mais simples é o First In First Out (FIFO).

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.

O algoritmo de substituição FIFO é fácil de entender e programar. Contudo, seu desempenho nem sempre é bom.

Page 39: Memória Virtual - Aspectos Básicos

Substituição de páginas

Page 40: Memória Virtual - Aspectos Básicos

Substituição de páginasSubstituição de páginas FIFO

Para ilustrar os problemas que são possíveis com ASFIFO considere o gráfico do próximo slide.

Observe que a quantidade de falhas para quatro quadros (dez) é maior do que a quantidade de falhas para três quadros (nove).

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.

Page 41: Memória Virtual - Aspectos Básicos

Substituição de páginas

Page 42: Memória Virtual - Aspectos Básicos

Substituição de páginasSubstituição de página ótima

Um resultado da descoberta da anomalia de Belady foi a busca de um algoritmo de substituição de página ótima.

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:

Substitua a página que não será usada pelo maior período.

Page 43: Memória Virtual - Aspectos Básicos

Substituição de páginas

Page 44: Memória Virtual - Aspectos Básicos

Substituição de páginasSubstituição de página ótima

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.

Page 45: Memória Virtual - Aspectos Básicos

Substituição de páginasSubstituição de página LRU

Se o algoritmo ótimo não é viável, talvez uma aproximação do algoritmo ótimo seja possível.

A distinção principal entre FIFO e OPT é: FIFO usa a hora em que uma página foi trazida da

memória; OPT usa a hora em que uma página deverá ser

usada. 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.

Page 46: Memória Virtual - Aspectos Básicos

Substituição de páginas

Substituição de página LRU Esta técnica é o algoritmo Lest Recently Used

(LRU – menos recentemente usado); 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;

Page 47: Memória Virtual - Aspectos Básicos

Substituição de páginas

Page 48: Memória Virtual - Aspectos Básicos

Substituição de páginasSubstituição de página LRU

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:

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.

Page 49: Memória Virtual - Aspectos Básicos

Substituição de páginasSubstituição de página LRU

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.

Deste modo, o topo da pilha sempre é a página usada mais recentemente, e a pagina inferior é a página LRU.

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.

Page 50: Memória Virtual - Aspectos Básicos

Substituição de páginasSubstituição de página por aproximação LRU

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.

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.

Page 51: Memória Virtual - Aspectos Básicos

Substituição de páginasSubstituição de página por aproximação LRU

Inicialmente, todos os bits são apagados (com 0) pelo sistema operacional.

A medida que um processo é executado, o bit associado a cada página referenciada é marcada (com 1) pelo hardware.

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.

Essa informação é a base para muitos algoritmos de substituição de página que se aproximam da substituição LRU.

Page 52: Memória Virtual - Aspectos Básicos

Substituição de páginasAlgoritmo de bits de referência adicionais

É mantido um byte (8 bits) para cada página em uma tabela de memória;

Em intervalos regulares uma interrupção de temporizador transfere o controle para o SO.

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;

Esses registradores de deslocamento de 8 bits comtêm o histórico do uso da página para os oito últimos períodos;

Page 53: Memória Virtual - Aspectos Básicos

Substituição de páginasAlgoritmo de bits de referência adicionais

Se o registrador de deslocamento tiver 00000000 a página não foi usada por oito períodos;

Uma página utilizada pelo menos uma vez a cada período teria um registrador de deslocamento igual a 11111111;

Uma página com o registrador de deslocamento igual a 11000100 foi usada mais recentemente do que uma com 01110111;

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;

Esse algoritmo é chamado algoritmo de substituição de página da segunda chance;

Page 54: Memória Virtual - Aspectos Básicos

Substituição de páginasAlgoritmo da segunda chance

O algoritmo básico da segunda chance é um algoritmo de substituição FIFO;

O que muda é que quando uma página tiver sido selecionada inspecionamos seu bit de referência:

Se o valor for 0, prosseguimos com a substituição; Se o valor for 1, damos uma segunda chance a

página e selecionamos a próxima página FIFO; Quando uma página recebe uma segunda

chance, seu bit de referência é apagado e sua hora de chegada é reiniciada para a hora atual;

Page 55: Memória Virtual - Aspectos Básicos

Substituição de páginasAlgoritmo da segunda chance melhorado

Pode-se melhorar o algoritmo da segunda chance considerando o bit de referência e o bit de modificação como um par ordenado:

(0,0) – nem usada recentemente nem modificada, melhor página a ser substituída;

(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;

(1,0) – usada recentemente mas limpa – é provável que seja usada novamente;

(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;

Page 56: Memória Virtual - Aspectos Básicos

Substituição de páginasSubstituição de página baseada em contagem

Pode-se manter um contador do número de referências feitas a cada página e desenvolver os dois esquemas a seguir:

O algoritmo Lest Frequently Used – LFU (menos freqüentemente usada) exige que a página com a menor contagem seja substituída:

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;

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.

Page 57: Memória Virtual - Aspectos Básicos

Substituição de páginasAlgoritmo com buffer de página

Outros procedimentos são usados em conjunto com o algoritmo de substituição de página:

Os sistemas mantêm um banco de quadros livres; Quando ocorre uma falha, um quadro livre é

escolhido como antes; A página desejada é lida para um quadro livre do

banco antes de a vítima ser retirada; Este procedimento permite ao processo reiniciar

assim que possível, sem esperar a página vítima ser retirada;

Quando a vítima mais tarde for retirada, seu quadro será acrescentado ao banco de quadros livres

Page 58: Memória Virtual - Aspectos Básicos

Substituição de páginasAlgoritmo com buffer de página

Uma expansão desta idéia é: Manter uma lista de páginas modificadas; 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;

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;

Page 59: Memória Virtual - Aspectos Básicos

Perguntas1- 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?

Page 60: Memória Virtual - Aspectos Básicos

Respostas1- Porque é interessante a utilização de

memória virtual do ponto de vista da programação?

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.

Page 61: Memória Virtual - Aspectos Básicos

Respostas2- Quais as semelhanças e diferenças entre

Paginação por demanda e SWAP?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

Page 62: Memória Virtual - Aspectos Básicos

Respostas3- Quais os benefícios da proteção de página

por cópia na escrita?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.

Page 63: Memória Virtual - Aspectos Básicos

Respostas4- Qual algoritmo de substituição de páginas

mais simples? Comente-o.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.

Page 64: Memória Virtual - Aspectos Básicos

Respostas5- Quais fatores afetam o desempenho de uma

paginação por demanda?

O desempenho de uma paginação por demanda depende da ocorrência de interceptação e quando e como ela ocorre.

Page 65: Memória Virtual - Aspectos Básicos

Referências Sistemas operacionais com JAVA. -

Abraham Silberchatz