gerência de memória ii - eduardosan.com · gerência de memória ii eduardo ferreira dos santos...
TRANSCRIPT
Gerência de memória II
Eduardo Ferreira dos Santos
Ciência da Computação
Centro Universitário de Brasília � UniCEUB
Maio, 2017
1 / 48
Sumário
1 Memória VirtualSegmentaçãoPaginação
2 Alocação de páginasTabelas de páginasPolíticas de alocação
2 / 48
Memória Virtual
1 Memória VirtualSegmentaçãoPaginação
2 Alocação de páginasTabelas de páginasPolíticas de alocação
3 / 48
Memória Virtual
Conceitos
Problema do bloatware: programas que usam muito mais memória doque deveriam;
É preciso então fornecer ao usuário a ilusão de que o computador temmuito 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).
4 / 48
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 1.1: Execução de memória virtual1
1Fonte: https://i.ytimg.com/vi/qlH4-oHnBb8/maxresdefault.jpg5 / 48
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 edados, 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 blocosde mesmo tamanho chamados páginas;
Segmentação Divide a memória física e a memória virtual em blocosde tamanhos diferentes chamados segmentos.
6 / 48
Memória Virtual Segmentação
1 Memória VirtualSegmentaçãoPaginação
2 Alocação de páginasTabelas de páginasPolíticas de alocação
7 / 48
Memória Virtual Segmentação
Conceitos
Quando começa a escrever o código o programador pensa o programacomo 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 oendereço de memória que cada uma dessas estruturas vai ocupar;A segmentação se baseia na visão do programador: o programa é umacoleção de segmentos;Segmentos são unidades lógicas. Um compilador da linguagem C podecriar, 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 podemocupar segmentos diferentes na memória.
8 / 48
Memória Virtual Segmentação
Segmentação (grá�co)
Figura 1.2: Divisão da memória em segmentos [Galvin et al., 2013]
9 / 48
Memória Virtual Segmentação
Mapeamento
O endereço lógico do segmento constitui uma dupla:< segment_number , o�set >
O mapeamento entre endereços lógicos e físicos é controlado pelatabela de segmentos.
Tabela de segmentos Mapeia endereços físicos bi-dimensionais. Cadaentrada 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 namemória;
Segment-table length register (STLR) Número de segmentos utilizados porum programa.
O segmento número s é ilegal se s < STLR .
10 / 48
Memória Virtual Segmentação
Visão lógica
Figura 1.3: Visão lógica da segmentação [Galvin et al., 2013]
11 / 48
Memória Virtual Segmentação
Segmentação no hardware
Figura 1.4: Algoritmo de segmentação implementado no hardware[Galvin et al., 2013]
12 / 48
Memória Virtual Segmentação
Segmentação (exemplo)
A referência ao byte 1222 do segmento 0 resultaria numa interrupção, poiso segmento só possui 1000 bytes.
Figura 1.5: Exemplo de segmentação [Galvin et al., 2013]
13 / 48
Memória Virtual Paginação
1 Memória VirtualSegmentaçãoPaginação
2 Alocação de páginasTabelas de páginasPolíticas de alocação
14 / 48
Memória Virtual Paginação
Paginação [Favacho, 2009]
Técnica de gerência de memória onde o espaço de endereçamentovirtual e o espaço de endereçamento real são divididos em blocosiguais;
Na paginação é permitido o uso de espaço físico de memória nãocontí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(frame);
Quando um processo precisa ser executado, suas páginas sãocarregadas em frames disponíveis de memória.
15 / 48
Memória Virtual Paginação
Memory Management Unit � MMU
Componente físico que mapeia, em tempo de execução, endereçoslógicos para endereços físicos;Diferentes métodos para mapear endereços físicos e virtuais:
1 O valor do registrador de realocação é adicionado a cada endereçogerado pelo processo e enviado para a memória.
Intel 80x86 possuía quatro registradores para realocação.
2 O programa do usuário trabalha somente com endereços virtuais.O endereçamento em tempo de execução é feito quando o valor da
memória é solicitado;
O endereço lógico é vinculado ao endereço físico.
16 / 48
Memória Virtual Paginação
Registrador de realocação
Figura 1.6: Realocação dinâmica utilizando registrador de realocação[Galvin et al., 2013]
17 / 48
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 variaentre 212 e 222 (4.096 - 4.194.304) bytes;
Endereços virtuais utilizam a MMU para mapear endereços físicos evirtuais;
O mapeamento é realizado através de tabelas de páginas;
Cada página virtual possui uma entrada na tabela ETP � Entrada naTabela de Páginas;
A tabela permite ao SO localizar a página correspondente, seja emmemória ou no disco;
Ainda possui fragmentação interna.
18 / 48
Memória Virtual Paginação
Hardware
Figura 1.7: Exemplo de paginação no hardware [Galvin et al., 2013]
19 / 48
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) eum deslocamento dentro da página;
O NPV identi�ca unicamente uma página virtual: o deslocamento é oíndice;
Calcula-se o endereço físico somando o endereço do frame com odeslocamento contido no endereço virtual.
20 / 48
Memória Virtual Paginação
Mapeamento (grá�co)
Figura 1.8: Algoritmo de mapeamento [Favacho, 2009]21 / 48
Memória Virtual Paginação
Exemplo
Figura 1.9: Exemplo de organização em páginas [Favacho, 2009]22 / 48
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 O processo de mapeamento está na moldura de página (frame) 2
(endereços 8192 a 12287);5 A MMU transforma o endereço entregue para 8192 e coloca o valor no
barramento.
23 / 48
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 a16383);
3 Qual o endereço real que será mapeado?
4 O endereço é mapeado no endereço real 12288 + 20 = 12308.
25 / 48
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 a16383);
3 Qual o endereço real que será mapeado?4 O endereço é mapeado no endereço real 12288 + 20 = 12308.
26 / 48
Memória Virtual Paginação
Layout do espaço de memória
Figura 1.11: Layout do espaço de endereçamento de memória no Linux[Duarte, 2009]
27 / 48
Alocação de páginas
1 Memória VirtualSegmentaçãoPaginação
2 Alocação de páginasTabelas de páginasPolíticas de alocação
28 / 48
Alocação de páginas
Considerações sobre paginação
O espaço de endereçamento virtual é, geralmente, bem maior que amemó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.
29 / 48
Alocação de páginas
Bit de validade
Figura 2.1: Utilização de bit de validade [Galvin et al., 2013]
30 / 48
Alocação de páginas
Validação
Quando o processo faz referência a um endereço virtual o sistemaveri�ca, através do bit de validade, se a página está ou não namemória principal;
Se não estiver é necessário transferir a página da memória secundáriapara a memória principal;
Quando a página é transferida, diz-se que houve um page fault (falhade página) no sistema;
A taxa de paginação indica muito ou pouco overhead deprocessamento.
31 / 48
Alocação de páginas
Gerenciamento de page fault [Favacho, 2009]
1 Veri�car se a referência de memória desse processo está dentro do seuespaço de endereçamento;
2 Se a referência for inválida, o processo é �nalizado;3 Se a referência for válida, toma-se uma das posições de memória para
colocar a �nova� página;4 É feita uma operação de disco para recuperar a página solicitada;5 Quando o disco é lido, procede-se à modi�cação da tabela de páginas,
indicando que a página agora está em memória (bit = 1).6 A instrução é reiniciada, agora com a página requerida na memória.
34 / 48
Alocação de páginas
Page fault
Figura 2.4: Algoritmo para gerenciar falhas de página (page fault)[Favacho, 2009] 35 / 48
Alocação de páginas
Tabela de páginas � ETP
Guarda informações de mapeamento;
Uma das possibilidades de organização é criar uma tabela para cadaprocesso;
O crescimento da tabela pode ser grande demais, considerando oaumento do espaço de endereçamento (64 bits);
Campos comuns à maior parte das tabelas de página:
bit de cache Se a página pode ser colocada em cache;bit de referência Se a página foi referenciada;bit de proteção Permissão da página para o processo;bit de presente/ausente Página presente/ausente em memória física;número do frame Frame onde a página está mapeada
36 / 48
Alocação de páginas Tabelas de páginas
1 Memória VirtualSegmentaçãoPaginação
2 Alocação de páginasTabelas de páginasPolíticas de alocação
37 / 48
Alocação de páginas Tabelas de páginas
Localização da ETP
A tabela de páginas pode ser localizada tanto na MMU quanto namemória principal;
Tabela de páginas totalmente armazenada na MMU;
Estratégias híbridas: MMU e memória principal;Alguns fatores considerados na escolha da estratégia
Overhead da troca de contexto;Tamanho da tabela de páginas;Simplicidade de implementação;Quantidade de acessos à tabelaCusto.
38 / 48
Alocação de páginas Tabelas de páginas
Localização na MMU
A tabela de páginas é mantida na memória principal;
Componentes de hardware auxiliam no controle da tabela de páginas[Galvin et al., 2013]:
Page-table base register � PTBR Aponta para a tabela de páginas;Page-table length register � PTLR Tamanho da tabela de páginasCada instrução necessita de dois acessos à memória:
1 Acessa a ETP;2 Acessa o dado/instrução.
39 / 48
Alocação de páginas Tabelas de páginas
Considerações sobre MMU
Utilização de registradores especiais;
Cada registrador contém uma entrada da tabela;
A tabela de páginas é carregada na troca de contexto direto dosregistradores;Vantagens [Favacho, 2009]:
Fácil de implementar;Mapeamento e�ciente;
Desvantagens:Inviável para páginas grandes;Aumento do overhead na troca de contexto.
40 / 48
Alocação de páginas Tabelas de páginas
Abordagem híbrida
Tenta reduzir o custo de realizar dois acessos utilizando um tipoespecial de cache chamado TLB � Translation Look-aside Bu�er;
A tabela de páginas é armazenada na memória principal e umregistrador contém o endereço de início;
Quando um endereço virtual é apresentado à MMU primeiro acessa oTLB;
Caso não esteja no TLB, realiza o acesso à memória para procurar oendereço;
Insere a entrada no TLB para as próximas referências;Vantagens:
Custo relativamente baixo;
Desvantagens:Alguns acessos à memória precisarão pagar o custo adiciona de acesso.
41 / 48
Alocação de páginas Tabelas de páginas
Implementação TLB
Figura 2.5: Paginação em hardware utilizando TLB [Galvin et al., 2013]42 / 48
Alocação de páginas Políticas de alocação
1 Memória VirtualSegmentaçãoPaginação
2 Alocação de páginasTabelas de páginasPolíticas de alocação
43 / 48
Alocação de páginas Políticas de alocação
Número de frames
Há duas alternativas para determinar o número de frames que cadaprocesso pode manter na memória principal:
Fixo Todo processo aloca uma quantidade �xa de frames.
Cada processo tem um número máximo de frames;Quantos frames alocar para cada processo?
Variável Número de frames depende da taxa de paginação.
Varia de acordo com a ocupação da memória;Como de�nir o número máximo por processo?
44 / 48
Alocação de páginas Políticas de alocação
Política de alocação
Como deve ser alocada a memória livre?Estratégias:
Número mínimo de quadros;Alocação igual. Divide m quadros por n processos. Assim, cadaprocesso tem direito a m
nquadros;
Alocação proporcional, levando em consideração o tamanho doprocesso.
45 / 48
Alocação de páginas Políticas de alocação
Escopo
Escopo da política de alocação de páginas:Local Só podem ser selecionados frames alocados ao processo.
Número total de quadros do processo permanececonstante;
Global Os frames são compartilhados entre todos os processos.Todas as páginas são candidatas à realocação;Um processo pode realocar frames de outro;Como gerenciar?É possível reduzir o espaço de memória de outroprocesso.
46 / 48
Alocação de páginas Políticas de alocação
Duarte, G. (2009).Anatomy of a program in memory.Disponível em: http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/ Acessado em 11/04/2016.
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.
48 / 48