Upload
rodrigo-rodrigues
View
5.684
Download
11
Embed Size (px)
Citation preview
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]