gerência de memória ii - eduardosan.com · gerência de memória ii eduardo ferreira dos santos...

48

Upload: vungoc

Post on 23-Dec-2018

217 views

Category:

Documents


0 download

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

Acesso (grá�co)

Figura 1.10: Acesso à página [Favacho, 2009]24 / 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

Análise

Figura 2.2: Ferramentas de análise da memória virtual

32 / 48

Alocação de páginas

Análise II

Figura 2.3: Servidor com muita carga

33 / 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

OBRIGADO!!!

PERGUNTAS???

47 / 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