Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* Memória Virtual: paginação e segmentação André Leon S. Gradvohl, Dr. andre_gradvohl@yahoo.com * Plano de Aula Memória virtual Sistemas de memória virtual com paginação Paginação em múltiplos níveis Algoritmos de substituição de páginas Sistemas de memória virtual com segmentação * Princípio da memória virtual Imagem de memória de pi Memória Secundária Memória Primária * Sistemas de Paginação O sistema mais simples de memória virtual é a paginação. Esse sistema consiste na divisão do processo em páginas de tamanho fixo. Cada página contém um trecho do processo e, a medida que cada trecho precisa ser executado, ele é carregado na memória. Por questões de desempenho, normalmente mais de uma página do processo está presente na memória. * Nomes, Endereços Virtuais e Endereços Reais Programa Fonte Módulo Absoluto Espaço de nomes Espaço de Endereçamento Virtual de Pi Imagem Executável Espaço de endereçamento físico * Memória Virtual Como a ligação entre um endereço real e um endereço virtual varia de acordo com o tempo, é importante ter um mapeamento dinâmico entre endereços. Esse mapeamento é feito através da tabela de páginas. O endereço virtual contém um índice para a tabela de páginas que, por sua vez, contém o endereço real e uma indicação se a página está ou não presente na memória. Há um circuito auxiliar no processador para agilizar esse processamento. Chama-se MMU (Memory Management Unit) * Exemplo de sistema de paginação 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 Endereço virtual Endereço real Deslocamento Tabela de páginas Índice na Tabela Quadro (frame) * Sistema de paginação Algumas informações complementares no exemplo anterior: O endereço virtual possui 20 bits. Logo, pode endereçar até 220 posições de memória (1 Mbyte). O endereço real possui apenas 19 bits. Logo, pode endereçar até 219 posições de memória (512 Kbytes). O deslocamento indica o tamanho da página ou o tamanho do quadro. No caso, cada página ocupa 216 bytes (64 kbytes). O índice na tabela de páginas informa o tamanho da tabela. No exemplo, a tabela possui 24 linhas (16 linhas). * Exemplo de sistema de paginação multinível 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 Endereço virtual Endereço real Deslocamento Tabela de páginas Índice na Tabela Quadro (frame) ... * Sistema de paginação multinível Algumas informações complementares no exemplo anterior: O sistema multinível não traz nenhum aumento na capacidade do sistema. No entanto, permite uma melhor organização do sistema e uma otimização no uso de memória já que nem todas as tabelas precisam necessariamente estar na memória. * Tratamento de falta de páginas Quando ocorre uma falta de página, o seguinte tratamento ocorre: Interrompe-se o processo corrente; O gerenciador de memória localiza a página faltante; Libera-se um quadro, de acordo com a política e o algoritmo de substituição de páginas; Carrega-se a página necessária; Atualiza-se a tabela de páginas; Restaura o processo. * Algoritmos de substituição de páginas O algoritmo ótimo de substituição de páginas seria implementado para substituir a página que não seria referenciada nas próximas instruções. Assim, garante-se que não haverão faltas de páginas até que última página carregada tenha sido completamente utilizada. Infelizmente não há meios de prever quais são as instruções executadas antes de haver uma falta de página. * Algoritmos de substituição de páginas Algoritmo NRU (Not Recently Used): Neste algoritmo são criadas 4 classes de páginas: As páginas da classe 0 são as primeiras a serem removidas aleatoriamente. * Algoritmos de substituição de páginas Algoritmo Fifo (First in first out): Neste algoritmo, as páginas mais antigas são removidas primeiro. Algoritmo Segunda chance: No algoritmo Fifo, considera-se apenas o tempo em que a página está na memória e não a quantidade de referências. Assim, o algoritmo da segunda chance, volta a colocar a página no fim da fila, se ela tiver sido referenciada ultimamente (bit R). * Algoritmos de substituição de páginas Algoritmo LRU (Least Recently Used): Neste algoritmo, as páginas menos usadas recentemente são removidas primeiro. Políticas de substituição de páginas: Política Local: apenas as páginas pertencentes ao processo que gerou a falta de página são consideradas para remoção. Política Global: todas as páginas alocadas na memória são passíveis de remoção. * Segmentação Uma outra estratégia para memória virtual é a segmentação. Nesse caso, o programa é dividido em segmentos, onde cada um deles pode ser: Estruturas de dados; Funções; Bibliotecas. O importante é que cada segmento seja autocontido. * Segmentação Por ser autocontido, cada segmento tem seu próprio espaço de endereçamento e pode crescer independente dos demais segmentos. A estratégia de segmentação também pode facilitar o compartilhamento de bibliotecas. Exemplo: DLLs. O compartilhamento possível na segmentação exige que os segmentos tenham um esquema de proteção contra leitura e escrita. * Referências Intersegmentos using segmentA … call lab1 … call [segmentC, lab20] … lab1: … … using segmentB … using segmentC … lab20: … … * Tradução de endereços na Segmentação S <NomeSegmento, NomeOffset> N # Segmento offset Bt Segmento ausente Limite Base P Limite Relocação + + P/ Registrador de Endereços de Memória * Implementação Segmentação requer hardware especial: Suporte para o descritor de Segmentos Suporte para registradores básicos de Segmento (segmento, código, pilha) Hardware de tradução * Segmentação x Paginação Externa Interna Que tipo de fragmentação existe? Sim Não Os procedimentos e dados podem ser distintos e protegidos separadamente? n 1 Quantos espaços de endereçamento? Sim Não O programador precisa estar ciente da técnica utilizada? Segmentação Paginação Consideração Sim Não O compartilhamento de bibliotecas ou funções é facilitado? * Segmentação paginada A melhor estratégia é, portanto, a combinação entre paginação e segmentação. Em outras palavras, cada segmento é dividido em páginas. Para isso, é importante que hajam circuitos específicos para dar suporte à conversão de endereços virtuais em endereços reais.