Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Memória Virtual: Funcionamento, Concepção e Desempenho, Trabalhos de Cultura

Este documento aborda o conceito de memória virtual, sua história, funcionamento e concepção. A memória virtual é um recurso de hardware e software que assegura a cada processo seu próprio espaço de endereçamento, protege a memória e permite que uma aplicação utilize mais memória do que fisicamente existente. O texto explica como o sistema operacional gerencia a memória virtual, dividindo-a em blocos contíguos chamados de páginas e utilizando tabelas de páginas para gerenciar a conversão de endereços virtuais em físicos.

Tipologia: Trabalhos

Antes de 2010

Compartilhado em 14/05/2010

kadu-velasco-5
kadu-velasco-5 🇧🇷

9 documentos

1 / 11

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
CES
Centro de Ensino Superior de Juiz de Fora
Bacharelado em Sistemas de Informação
1
Arquitetura e Organização de computadores
Memória Virtual
Carlos Eduardo O. Velasco
1º Semestre / 2009
pf3
pf4
pf5
pf8
pf9
pfa

Pré-visualização parcial do texto

Baixe Memória Virtual: Funcionamento, Concepção e Desempenho e outras Trabalhos em PDF para Cultura, somente na Docsity!

Bacharelado em Sistemas de Informação

Arquitetura e Organização de computadores

Memória Virtual

Carlos Eduardo O. Velasco 1º Semestre / 2009

Bacharelado em Sistemas de Informação

1 - Introdução

A memória virtual consiste num conjunto de recursos de hardware e software que possui três funções básicas -- v. Tanenbaum (1999) e Hennessy & Patterson (2003): (i) assegurar que cada processo (aplicação) tenha seu próprio espaço de endereçamento, começando em zero (problema de relocação ou recolocação); (ii) proteção de memória, para impedir que um processo utilize um endereço de memória que não lhe pertença; (iii) possibilitar que uma aplicação utilize mais memória do que a fisicamente existente (essa é a função mais conhecida).

1.1 – História

Foi inicialmente criada para possibilitar a um programa ser executado em um computador com uma quantidade de memória principal (física) menor que o tamanho de todo o espaço do utilizado pelo próprio programa. Ou seja, o espaço ocupado pelas instruções, dados e pilha de execução de um programa pode ser maior que o espaço em memória principal disponível. Por exemplo, um programa que ocupa um total de 64 MiB pode ser executado em um computador com apenas 32 MiB disponíveis para o programa, bastando que o sistema operacional encarregue-se de manter sempre na memória principal as partes adequadas à execução naquele momento (Tanenbaum & Woodhull, 1999).

A idéia é atribuída a John Fotheringham ("Dynamic storage allocation in the Atlas computer, including an automatic use of a backing store", Communications of the ACM, vol. 4, issue 10, pp. 435-436 -- outubro de 1961).

1.2 – Funcionamento

Nos sistemas modernos, a memória física é dividida em blocos de bytes contíguos, em geral com 4 KiB ou 8 KiB de tamanho, denominados molduras de páginas (page frames). Por sua vez, o espaço de memória de um processo é dividido em páginas (contendo as instruções e dados do programa), que são fisicamente armazenadas nas molduras e possuem o mesmo tamanho.

Um endereço virtual é gerado durante o processamento da aplicação e encaminhado para a unidade de gerenciamento de memória (MMU -- memory management unit), um dispositivo do processador cuja função é transformar o endereço virtual em físico e solicitar este último endereço ao controlador de memória. A conversão de endereços virtuais em físicos baseia-se em tabelas de páginas, que são estruturas de dados mantidas pelo sistema operacional.

As tabelas de páginas descrevem cada página da aplicação (num sistema em execução, existe pelo menos uma tabela de páginas por processo). Cada tabela é indexada pelo endereço virtual e contém o endereço físico da moldura correspondente ou a indicação que a página está em um dispositivo de armazenamento secundário (normalmente um disco rígido).

Como o acesso à tabela de páginas é muito lento, pois está em memória, a MMU possui uma cache associativa chamada TLB (Translation Lookaside Buffer -- buffer de tradução de endereços), que consiste em uma pequena tabela contendo os últimos endereços virtuais solicitados e seus correspondentes endereços físicos.

Bacharelado em Sistemas de Informação

do computador. O mapeamento de endereço virtual para endereço físico requer a manutenção da informação sobre quais dados estão em memória.

2.1 - Conceitos básicos (revisão)

Algumas questões básicas envolvidas no projeto de sistemas de memória virtual são:

  1. o tamanho e a natureza dos blocos de informação que são transferidos entre as memórias primária e secundária

 uso de blocos devido a características de acesso à memória secundária

  • blocos de tamanho fixo: paginação
  • blocos de tamanho variável: segmentação
  1. política de alocação de espaço e de troca de blocos entre memórias primária e secundária
  2. política de busca de blocos da memória secundária
  • por demanda
  • antecipada

3 - Paginação

A informação é mantida para segmentos de tamanho fixo da memória primária e secundária. As páginas da memória secundária são transferidas para os frames de páginas da memória principal.

Mapas de tradução de endereços são mantidos em memória pelo sistema, sendo que a informação associada a cada entrada é essencialmente um par (página virtual, página física):

Bacharelado em Sistemas de Informação

Um problema potencial é que esses mapas podem ocupar muito espaço de memória. Em um sistema com endereços de 32 bits, páginas de 4 Kbytes, são necessários 12 bits para manter informaçãodo deslocamento na página, 20 bits para identificar página. Portanto, são necessárias 1M entradas natabela.

Para lidar com este problema sem ocupar grande parte da memória principal, diversos níveis depaginação podem ser utilizados; em outras palavras, a própria tabela é paginada. Entretanto, neste caso aumenta-se número de acessos à memória secundária que podem ser necessários para acessarum endereço.

A solução para reduzir a quantidade de acessos em sistemas de diversos níveis de paginação émanter um cache privativo da tabela de páginas para as entradas referenciadas mais recentemente, usualmente denominado TLB (Translation Lookaside Buffer):

Neste exemplo de mapeamento em dois níveis, o endereço da página virtual dividido em duaspartes, uma correspondente a cada nível. O primeiro nível é um índice para a tabela de páginas; o segundo, um índice para memória primária.

No exemplo de endereço de 32 bits com 12 bits de deslocamento (páginas de 4 Kbytes), dividindo-se o número da página em duas partes de 10 bits cada, a tabela de cada nível tem 1K entradas — oprimeiro nível sempre mantido em memória, o segundo nível pelo menos uma página da tabela em memória.

Outras informações que podem estar contidas na tabela de páginas, tais como se a entrada é válida (página ainda está presente em memória) e a proteção de acesso à página (leitura apenas, leitura eescrita, apenas execução).

4 - Segmentação

Um dos objetivos na utilização de segmentação é melhorar o aspecto de localidade de referência em sistemas de memória virtual. Em um sistema paginado, os itens que são transferidos dentro de uma unidade de acesso (página) não estão necessariamente relacionados de forma lógica. Assim,

Bacharelado em Sistemas de Informação

Para reduzir a fragmentação, deve-se considerar o relacionamento entre a dimensão de segmentos e a dimensão de páginas. Sejamz es os tamanhos de uma página e de um segmento em palavras, respectivamente. O número de páginas em um segmento é dado por

O espaço desperdiçado por fragmentação interna (não utilizado na última página) é

e o espaço ocupado pela tabela de páginas do segmento é

ondec é uma constante expressando o número de palavras usado por entrada na tabela de páginas. O espaço gasto em memória por segmento é

O valor médio para esta função é dado por

Onde š é o tamanho médio de segmento. Deseja-se minimizar este espaço gasto, portanto

de onde o tamanho ideal de página

Por exemplo, para c = 2

Bacharelado em Sistemas de Informação

7 - Exemplo: Paginação e segmentação no i

O Intel i486 oferece dois modos de operação, real e protegido. No modo real, o espaço de endereçamento está limitado até tamanho máximo de 1 Mbyte. No modo protegido, suporta- se memória virtual com paginação pura, segmentação pura, paginação segmentada, ou endereçamento físico.

A dimensão do número de segmento é 16 bits, com o tamanho do segmento podendo variar de 1 byte a 4 Gbytes. O tamanho máximo da memória física é 4 Gbytes, e o espaço total de endereçamento é 64 Tbytes. O endereço base de um segmento é adicionado ao deslocamento de 32 bits para gerar um endereço linear.

A utilização do mecanismo de paginação é opcional, podendo ser ativado ou desativado por software. A paginação opera sobre o endereço linear. A TLB oferece espaço para 32 entradas. O tamanho da página é fixo em 4 Kbytes. O diretório de tabela de páginas (primeiro nível) tem 1024 entradas (4 Kbytes), e a tabela de páginas (segundo nível) também tem 1024 entradas ( Kbytes).

Se o mecanismo de paginação for desabilitado, trabalha-se então com um mecanismo de segmentação pura. O mecanismo de segmentação não pode ser desabilitado da mesma maneira, mas a paginação pura pode ser emulada ao se trabalhar com um único segmento de tamanho 4 Gbytes.

Bacharelado em Sistemas de Informação

  1. Quando ocorre uma ausência de página requisitada, acrescente a nova página ao conjunto de trabalho
  2. Do conjunto de páginas não referenciadas nost segundos imediatamente anteriores à requisição, selecione uma página por LRU e a descarte. Caso todas as páginas do conjunto de trabalho tenham sido referenciadas no período, mantenha-as todas — o conjunto de trabalho cresce
  3. Se duas ou mais páginas do conjunto de trabalho não foram referenciadas na janela referente ao conjunto de trabalho, selecione duas páginas por LRU e as descarte

A determinação do tamanho da janela Δt deve ocorrer experimentalmente.

9 - Política de busca de páginas

A questão a ser respondida neste ponto é: quando que uma página deve ser trazida da memória secundária para a memória principal?

Na paginação por demanda, a transferência ocorre apenas quando a página é referenciada por um processo. Na política de pré-paginação, a página é carregada antes dela ser referenciada, com base em estimativas de acessos futuros a páginas.

Em sistemas de propósito geral, onde é difícil prever acessos futuros a páginas, a paginação por demanda é usualmente adotada. No entanto, dependendo das características do processo, pré-paginação pode reduzir sensivelmente a sobrecarga de transferência de páginas.

10 - Interação entre cache e memória virtual

Cache pode operar com endereços físicos ou virtuais. Quando utilizando endereços físicos, o acesso ao cache é realizado apenas ao final da tradução do endereço (vrtual para físico) pela unidade gerenciadora de memória.

Com endereços virtuais, à custa de uma maior complexidade de projeto pode-se permitir a concorrência entre acesso ao cache e a tradução do endereço. Entretanto, introduz-se um problema potencial, conhecido como aliasing.Um alias caracteriza dados endereçados de forma lógica distinta (processos diferentes) que têm mesmo tag no diretório do cache.

A solução para evitar inconsistências de acesso ao cache por causa de aliases requer a inutilização de todo o todo o conteúdo do cache (flushing). Esta operação provoca queda sensível de desempe- nho. Por exemplo, implementações Unix em sistemas com caches virtuais realizam flushing a cada chaveamento de contexto ou operação de entrada ou saída.

Uma alternativa (adotada pela Sun a partir de seu modelo 3/200) é utilizar chaves de contexto, três bits que identificam a que contexto a linha do cache está associada. Isto permite flushing seletivo de um contexto. Dados compartilhados por diversos processos podem ser marcados como não passíveis de serem transferidos para o cache, evitando este problema.

11 - Comparação entre cache e memória virtual

Apesar de representar dois níveis consecutivos da hierarquia de memória, há diferenças

Bacharelado em Sistemas de Informação

fundamentais entre o uso de caches e de memória virtual causadas pela discrepância entre os tempos de acesso entre os níveis envolvidos, consecutivos na hierarquia de memória.

O módulo de cache é entre 4 e 20 vezes mais rápido que o módulo de memória primária (tipicamente 5 vezes), enquanto que a memória primária é entre 1000 e 10000 vezes mais rápida que a memória secundária — e não se prevê redução deste gap, pois avanços em tecnologias de discos magnéticos melhoram velocidade de acesso a uma taxa menor do que as melhorias obtidas em memórias semicondutoras.

Quando o item buscado não está presente na memória rápida, a ação tomada depende desta diferença de velocidade de acesso. Para o cache, o processador espera enquanto a linha contendo o itemé trazida da memória principal. No sistema de memória virtual, o tempo de busca ao próximo nívelé extremamente longo, pois requer acesso a uma página inteira no disco. Duas estratégias são entãopossíveis:

  1. Controle do processador passa a outras tarefas enquanto a ausência da página é tratada. Neste caso, o chaveamento de contexto necessário aumenta o tempo de espera para todas as tarefas.
  2. Processador espera página ser acessada. Esta solução é razoável quando ciclo de CPU é “barato”, e pode ser necessária em sistemas de tempo real, onde o tempo de chaveamento de contexto não é um atraso tolerável.

Bibliografia

  • Wikipedia: http://pt.wikipedia.org/wiki/Mem%C3%B3ria_virtual
  • DEPARTAMENTO DE ENGENHARIA DE COMPUTAÇÃO E AUTOMAÇÃO INDUSTRIAL; FACULDADE DE ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO; UNIVERSIDADE ESTADUAL DE CAMPINAS – Organização de Computadores