Memória virtual

Post on 06-Jun-2015

5.681 views 11 download

Transcript of Memória virtual

UFRPE/EADLicenciatura em Computação-6P

2011.1Tutor: Rodrigo Lins Rodrigues

Memória VirtualSemana 6

Memória virtual

É uma técnica sofisticada e poderosa de gerência de memória, onde as memórias principal e secundária são combinadas;

Dar ao usuário a ilusão de existir uma memória muito maior que a capacidade real da memória principal;

Desta forma, programas e suas estruturas deixam de estar limitados ao tamanho da memória física, pois possuem endereços associados à memória secundária;

Permitindo um maior número de processos na “memória”;

Endereçamento virtual

Um programa no ambiente de memória virtual não faz referência a endereços físicos de memória, mas apenas a endereços virtuais;

No momento da execução o endereço virtual é traduzido para um endereço físico, pois o processador manipula apenas posições de memória principal;

Endereçamento virtual

O mecanismo de tradução do endereço virtual para o endereço físico é chamado de mapeamento;

Um programa pode fazer referência a endereços virtuais que estejam fora dos limites da memória principal;

Os programas não estão mais limitados ao tamanho da memória principal;

O S.O utiiza memória secundária como extensão da memória principal;

Mapeamento

O processador apenas executa instruções e referencia dados residentes no espaço de endereçamento real;

Tabelas de Mapeamento

A tabela de mapeamento relaciona os endereços virtuais do processo às suas posições na memória real;

Cada processo tem o seu espaço de endereçamento virtual como se possuísse sua própria memória;

Existem S.Os que trabalham apenas com blocos de tamanho fixo (paginação), enquanto outro utilizam blocos de tamanho variável (segmentação), veremos a seguir.

Paginação

Permite espalhar processos por áreas não contíguas;

Divide espaço de endereçamento virtual conjunto de páginas,de mesmo tamanho, em potência de 2;

Espaço de endereçamento virtual está localizado na memória secundária (Disco rígido);

O programa armazenado no disco é considerado o original e as suas partes que são trazidas para a memória são consideradas cópias.

Paginação

O espaço de endereçamento virtual contém endereços lógicos ou virtuais. O endereço virtual deve ser convertido para um

endereço real (endereço físico) antes de acessar a memória.

É dividido em páginas lógicas de tamanho fixo.

O espaço de endereçamento físico, alocado na memória principal, é dividido em pedaços com o mesmo tamanho de página cada partição da memória principal pode armazenar

exatamente uma página. Essa partição também é chamada de frame ou moldura de página.

9

Paginação

Física

Virtual

10

Paginação

Exemplo: O processo 1 possui 3 páginas, no entanto,

apenas duas estão carregadas na memória principal.

11

Endereçamento

Tabela de páginas

Estrutura de dados que relaciona endereços virtuais com endereços físicos

12

Tabela de páginas

13

Tabela de páginas

Tabela de Páginas – Informações adicionais Presente/Ausente -indica se a página está na memória

física; Desabilitar cache -Indica se a página pode ir para a

memória cache; Referenciada -indica se a página foi referenciada; Modificada -indicar se a página já foi modificada; Proteção - indica se a página está protegida.

14

Algoritmos de substituição de páginas

15

LRU - Least Recent Used

Baseia-se em: as páginas muito usadas nas últimas instruções, provavelmente serão nas próximas instruções;

Escolhe-se uma das páginas da classe com número mais baixo para substituição;

Classe 0 - páginas não-referenciadas e não-modificada; Classe 1 - páginas não-referenciadas, mas modificadas; Classe 2 - páginas referenciadas e não-modificadas; Classe 3 - páginas referenciadas e modificadas;

16

FIFO - First in First out

A página mais antiga é a primeira a ser substituída e a mais recente será a última;

No caso de necessidade de substituição, a página mais antiga será removida e a nova página colocada no final da lista;

O problema encontrado nessa abordagem é que existe a possibilidade de remoção de páginas muito referenciadas, ainda que estejam há muito tempo na memória.

17

Segmentação

A segmentação, assim como a paginação, é uma técnica de memória virtual;

Na segmentação, os segmentos têm diferentes tamanhos;

Duas maneiras de segmentação são permitidas: » Segmentação simples ou por swapping; » Segmentação com paginação;

18

Segumentação

Na segmentação, o uso da técnica não é transparente ao programador, enquanto que na paginação, a transparência ao programador existe;

Páginas têm tamanhos fixos e segmentos não;

Os segmentos possuem tamanhos diferentes que inclusive podem variar durante a execução;

19

Algoritmos para segmentação

Existem dois principais:

Best-fit: Procura a menor lacuna que caiba o segmento;

First-ft: Procura a primeira lacuna que caiba o segmento.

Independentemente do algoritmo utilizado, o S.O precisa realizar a atualização da lista de lacunas existentes na memória;

20

Segmentação com paginação

A memória virtual é dividida em segmentos e estes são compostos por um conjunto de páginas;

Cada segmento tem a sua própria tabela de páginas;

21

Exercício 1

Considere um sistema de memória virtual composto de 512 páginas de 2Kbytes o qual é mapeado em um espaço de endereçamento físico de 256 Kbytes.

a) Qual o formato do endereço virtual?

R: O tamanho da página é igual ao tamanho da moldura = 2Kbytes.

Para representar o deslocamento na página, consideraremos 2K linhas, que em potência de 2 = 2¹ x 2¹⁰. São necessários 11 bits para o deslocamento.

Para representar 512 páginas = 2 ⁹ → 9bits. O endereço virtual terá 9 bits número de página e 11 bits para

deslocamento, totalizando 20 bits.

22

Exercício 1

b) Qual o tamanho em bytes da tabela de páginas? Assuma que cada página possui 1 bit de presença, 3 bits de proteção e 1 dirty bit. Considere ainda que os endereços da memória secundária não estão armazenados nesta tabela.

Ao dividir 256 Kbytes (espaço de endereço físico) por 2Kbytes (tamanho moldura) obteremos 128 molduras ou páginas físicas. Para representar 128 páginas físicas, precisamos de 7 bits (2 ⁷). Considerando que os deslocamentos não estão presentes na tabela, a tabela terá 21 colunas ou bits (9 bits para número de página virtual + 7 bits para número de páginas físicas + 1 bit de presença + 3 bits de proteção + 1 dirty bit). A tabela terá: 512 páginas virtuais x 21 bits de coluna = 10752 bits = 1344 bytes. Aproximadamente 1,3Kbyte.

23

Exercício 2

Considere uma arquitetura com um sistema de memória virtual com as seguintes características: Endereço virtual de 40 bits , Páginas de 16Kbytes e Endereço físico de 36 bits.

A) Qual o layout do endereço virtual?

Se a página é de 16K, temos em potência de 2 = 2 ⁴ x 2¹⁰, totalizando 14 bits para o deslocamento. Como o endereço virtual é de 40 bits, 14 bits são utilizados para o deslocamento e 26 bits para representar as páginas.

24

Exercício 2

B) Qual o layout e tamanho da tabela de páginas em bytes? Assuma que cada página possui um bit de presença, 3 bits de proteção e um dirty bit. Considere ainda que os endereços da memória secundária não estão armazenados nesta tabela.

Como o endereço físico possui 36 bits, e 14 são necessários para o deslocamento, 22 bits são necessários para identificar as páginas. Logo, a tabela de páginas terá 53 colunas ou bits( 26 das páginas virtuais + 22 das páginas físicas + 1 bit de presença + 3 bits de proteção + 1 dirty bit).A tabela terá 53 bits de coluna x 2² páginas virtuais = aproximadamente 445Mbytes..

25

Exercício 3

A tabela seguinte descreve a memória virtual de um sistema paginado com páginas de 1024 palavras. O endereço virtual é da forma [p,d] onde p refere-se à página e d ao deslocamento dentro dela. O endereço virtual [0,514] corresponde a que endereço real?

R: [3, 514]