Aula 06 - Blog de Eduardo Santos

Propaganda
Gerência de memória II
Eduardo Ferreira dos Santos
Ciência da Computação
Centro Universitário de Brasília UniCEUB
Maio, 2016
1 / 35
Sumário
1
Particionamento
2
Memória Virtual
Segmentação
Paginação
2 / 35
Particionamento
1
Particionamento
2
Memória Virtual
Segmentação
Paginação
3 / 35
Particionamento
Múltiplas partições
Cada partição deve conter um processo;
O número máximo de processos está limitado ao número de partições;
Quando uma partição está livre, um processo é selecionado e
carregado da la de pronto;
Ao m da execução, a partição ca livre para o próximo processo;
Buraco ou hole: partição livre.
Figura 1.1: Utilização de múltiplas partições [Galvin et al., 2013]
4 / 35
Particionamento
Partições xas
Partições de tamanho xo;
Sistema operacional guarda uma tabela de partições, indicando partes
livres e ocupadas;
Havendo mais processos que partições, uma ou mais las são
formadas.
Figura 1.2: Partições xas [Favacho, 2009]
5 / 35
Particionamento
Partições variáveis
Figura 1.3: Alocação com partições variáveis [Favacho, 2009]
6 / 35
Particionamento
Mapa de bits
Tamanho do mapa depende do tamanho da memória e da unidade de
alocação;
Unidade de alocação grande: desperdício de memória;
Unidade de alocação pequena: mapas de bits grandes.
Não é muito utilizado, pois a busca por espaços livres pode ser lenta.
Figura 1.4: Exemplo de mapa de bits [Favacho, 2009]
7 / 35
Particionamento
Lista encadeada
Nos seguintes endereços existem buracos na memória, ou seja,
partições não alocadas:
5-7;
18-19;
29-31.
Figura 1.5: Exemplo de buraco na lista [Favacho, 2009]
8 / 35
Memória Virtual
1
Particionamento
2
Memória Virtual
Segmentação
Paginação
9 / 35
Memória Virtual
Conceitos
Problema do bloatware: programas que usam muito mais memória do
que deveriam;
É preciso então fornecer ao usuário a ilusão de que o computador tem
muito mais memória do que realmente tem;
Some os seguintes tamanhos:
Código-fonte;
Dados;
Pilha de execução.
Solução: manter na memória principal apenas a parte que está em uso;
O resto ca na memória secundária (disco).
10 / 35
Memória Virtual
Conceitos (cont.)
Ideia: desvincular o endereçamento lógico do endereçamento físico;
Cada programa tem seu próprio espaço de endereçamento.
Figura 2.1: Execução de memória virtual1
1
Fonte:
https://i.ytimg.com/vi/qlH4-oHnBb8/maxresdefault.jpg
11 / 35
Memória Virtual
Implementação
Generalização dos conceitos de registrador-limite e registrador-base;
Ao invés de realizar realocação separada para os segmentos de texto e
dados, mapeia o espaço de endereçamento completo na memória física;
Vantagens [Favacho, 2009]:
O tamanho dos programas não é limitado pela memória do computador;
Mais programas podem executar ao mesmo tempo.
Pode ser implementada de duas maneiras:
Paginação Divide a memória física e a memória virtual em blocos
de mesmo tamanho chamados páginas;
Segmentação Divide a memória física e a memória virtual em blocos
de tamanhos diferentes chamados segmentos.
12 / 35
Memória Virtual
1
Particionamento
2
Memória Virtual
Segmentação
Paginação
Segmentação
13 / 35
Memória Virtual
Segmentação
Conceitos
Quando começa a escrever o código o programador pensa o programa
como um conjunto de métodos, procedimentos ou funções;
Pode incluir também várias estruturas de dados;
Normalmente, ao escrever o código, ele não se preocupa com o o
endereço de memória que cada uma dessas estruturas vai ocupar;
A segmentação se baseia na visão do programador: o programa é uma
coleção de segmentos;
Segmentos são unidades lógicas. Um compilador da linguagem C pode
criar, por exemplo, os seguintes segmentos:
Código;
Variáveis globais;
A heap, de onde a memória é alocada;
As pilhas (stacks) utilizadas por cada thread;
A biblioteca C padrão (stdlib.h, stdio.h, etc).
Bibliotecas cuja alocação acontece no momento da compilação podem
ocupar segmentos diferentes na memória.
14 / 35
Memória Virtual
Segmentação
Segmentação (gráco)
Figura 2.2: Divisão da memória em segmentos [Galvin et al., 2013]
15 / 35
Memória Virtual
Segmentação
Mapeamento
O endereço lógico do segmento constitui uma dupla:
< segment _number , oset >
O mapeamento entre endereços lógicos e físicos é controlado pela
tabela de segmentos.
Tabela de segmentos Mapeia endereços físicos bi-dimensionais. Cada
entrada contém as seguintes informações:
base endereço físico inicial do segmento na memória;
limit tamanho do segmento.
Segment-table base register (STBR) Endereço da tabela de segmentos na
memória;
Segment-table length register (STLR) Número de segmentos utilizados por
um programa.
O segmento número s é ilegal se s < STLR .
16 / 35
Memória Virtual
Segmentação
Visão lógica
Figura 2.3: Visão lógica da segmentação [Galvin et al., 2013]
17 / 35
Memória Virtual
Segmentação
Proteção e hardware
O segmento s funciona como um índice na tabela de segmentos;
A cada entrada na tabela associa-se os seguintes dados:
bit de validação = 0 => segmento ilegal
privilégios de leitura/execução/escrita
A proteção é feita com os bits de proteção associados aos segmentos;
Se o segmento for inválido, uma interrupção é gerada;
O compartilhamento de memória se dá nos segmentos;
Como os segmentos podem variar de tamanho, a segmentação é um
problema de alocação dinâmica de memória.
18 / 35
Memória Virtual
Segmentação
Segmentação no hardware
Figura 2.4: Algoritmo de segmentação implementado no hardware
[Galvin et al., 2013]
19 / 35
Memória Virtual
Segmentação
Segmentação (exemplo)
A referência ao byte 1222 do segmento 0 resultaria numa interrupção, pois
o segmento só possui 1000 bytes.
Figura 2.5: Exemplo de segmentação [Galvin et al., 2013]
20 / 35
Memória Virtual
1
Particionamento
2
Memória Virtual
Segmentação
Paginação
Paginação
21 / 35
Memória Virtual
Paginação
Conceitos [Favacho, 2009]
Técnica de gerência de memória onde o espaço de endereçamento
virtual e o espaço de endereçamento real são divididos em blocos
iguais;
Na paginação é permitido o uso de espaço físico de memória não
contíguo;
As páginas no espaço virtual são chamadas páginas virtuais;
A correspondência na memória física é chamada de moldura de página;
Quando um processo precisa ser executado, suas páginas são
carregadas em frames disponíveis de memória.
22 / 35
Memória Virtual
Paginação
Implementação
Páginas e molduras têm sempre o mesmo tamanho;
O tamanho das páginas é uma potência de 2, que normalmente varia
entre 212 e 222 (4.096 - 4.194.304) bytes;
Endereços virtuais utilizam a MMU para mapear endereços físicos e
virtuais;
O mapeamento é realizado através de tabelas de páginas;
Cada página virtual possui uma entrada na tabela ETP Entrada na
Tabela de Páginas;
A tabela permite ao SO localizar a página correspondente, seja em
memória ou no disco;
Ainda possui fragmentação interna.
23 / 35
Memória Virtual
Paginação
Mapeamento
O programa faz referência apenas a endereços virtuais;
Ao executar o programa, as páginas virtuais são transferidas da
memória secundária (disco) para os frames na memória principal;
Quando o programa faz referência a um endereço virtual o mecanismo
de mapeamento localiza, na ETP, o endereço físico do frame;
24 / 35
Memória Virtual
Paginação
Modelo
Figura 2.6: Modelo de paginação [Galvin et al., 2013]
25 / 35
Memória Virtual
Paginação
Acesso à memória
Passos no acesso à memória:
1 A CPU envia o endereço virtual à MMU;
2 Na MMU o endereço virtual é dividido em (p , d ), onde p é a página e
d é o deslocamento dentro da página;
3 A MMU utiliza a página p para acessar a tabela de páginas e recuperar
o frame f no qual a página p reside;
4 A MMU substitui o p por f e coloca o endereço (f , d ) no barramento.
O endereço virtual é formado pelo número da página virtual (NPV) e
um deslocamento dentro da página;
O NPV identica unicamente uma página virtual: o deslocamento é o
índice;
Calcula-se o endereço físico somando o endereço do frame com o
deslocamento contido no endereço virtual.
26 / 35
Memória Virtual
Paginação
Mapeamento (gráco)
Figura 2.7: Algoritmo de mapeamento [Favacho, 2009]
27 / 35
Memória Virtual
Paginação
Hardware
Figura 2.8: Exemplo de paginação no hardware [Galvin et al., 2013]
28 / 35
Memória Virtual
Paginação
Exemplo
Figura 2.9: Exemplo de organização em páginas [Favacho, 2009]
29 / 35
Memória Virtual
Paginação
Acesso
1
O programa tenta acessar o endereço 0 (MOVE REG, 0);
2
O endereço virtual 0 é enviado à MMU;
3
A MMU conclui que o endereço virtual está na página 0 (endereços 0
a 4095);
4
5
O processo de mapeamento está na moldura de página (frame) 2
(endereços 8192 a 12287);
A MMU transforma o endereço entregue para 8192 e coloca o valor no
barramento.
30 / 35
Memória Virtual
Paginação
Acesso (gráco)
Figura 2.10: Acesso à página [Favacho, 2009]
31 / 35
Memória Virtual
Paginação
Outro exemplo
1
O endereço virtual 20500 está a 20 bytes do início da página virtual 5
(endereços virtuais de 20480 a 24575);
2
A página virtual 5 está na página real 3 (endereços reais de 12288 a
16383);
3
O endereço é mapeado no endereço real 12288 + 20 = 12308.
32 / 35
Memória Virtual
Paginação
Outro exemplo (gráco)
Figura 2.11: Acesso à página [Favacho, 2009]
33 / 35
Memória Virtual
Paginação
Considerações
O espaço de endereçamento virtual é, geralmente, bem maior que a
memória física disponível;
Algumas páginas não estão mapeadas na memória;
Cada página virtual do processo possui uma entrada na tabela ETP;
Cada entrada possui um bit de validade, que indica se a página está
ou não na memória principal;
Bit de validade:
1 -> está na memória;
0 -> não está na memória.
Questão em aberto: como compartilhar páginas?
34 / 35
Memória Virtual
Paginação
OBRIGADO!!!
PERGUNTAS???
35 / 35
Memória Virtual
Paginação
Favacho, A. (2009).
Notas de aula da Profa. Aletéia Favacho.
Galvin, P. B., Gagne, G., and Silberschatz, A. (2013).
Operating system concepts.
John Wiley & Sons, Inc.
36 / 35
Download