Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da...

45

Transcript of Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da...

Page 1: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Gerência de Memória

Eduardo Ferreira dos Santos

Ciência da Computação

Centro Universitário de Brasília � UniCEUB

Abril, 2017

1 / 45

Page 2: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Sumário

1 Introdução

2 Espaços de endereçamento

3 Realocação estática e dinâmica

4 Alocação de memória

2 / 45

Page 3: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Introdução

1 Introdução

2 Espaços de endereçamento

3 Realocação estática e dinâmica

4 Alocação de memória

3 / 45

Page 4: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Introdução

Gargalo de Von Neumann

Figura 1.1: Arquitetura de Von Neumann

4 / 45

Page 5: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Introdução

De�nição

Gerenciamento de memória consiste em manter o controle daspartes da memória que estão sendo utilizadas e por quem, decidirque processos serão carregados para a memória quando houverespaço disponível, alocar e desalocar espaço quando necessário.[Dias, 2005]

Memória: conjunto de palavras e seus endereços [Favacho, 2009].

5 / 45

Page 6: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Introdução

A memória e sua utilidade

O processador só pode armazenar informações nos registradores e namemória;

Como a memória é um �uxo contínuo de dados, é papel do sistemaoperacional proteger e organizar as informações armazenadas namemória.

Algumas tarefas que o gerenciador de memória do SO deve executar:

Manter o controle das partes da memória que estão em uso e daspartes que não estão;Alocar espaço para os processos e liberar quando eles terminarem;Alocar memória principal e secundária;Alocar a memória secundária é papel do sistema gerenciador dearquivos.

6 / 45

Page 7: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Espaços de endereçamento

1 Introdução

2 Espaços de endereçamento

3 Realocação estática e dinâmica

4 Alocação de memória

7 / 45

Page 8: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Espaços de endereçamento

Proteção

O sistema operacional deve manter os processos dos usuários em áreasseparadas da memória;Espaço de endereçamento: conjunto de endereços que os processospodem usar para endereçar a memória[Tanenbaum and Machado Filho, 1995].Proteção: estratégia utilizada para garantir que não haja interferênciaentre os componentes básicos de um sistema e os programas dousuário [Favacho, 2009].Espaço do kernel x Espaço do usuário.

Figura 2.1: Utilização do endereço virtual de memória [Duarte, 2009]8 / 45

Page 9: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Espaços de endereçamento

Registradores de limite

Ideia: mapear endereçosmínimos e máximos;

O endereço inferior representao menor endereço alocáveldisponível. Chamado deregistrador base;

O endereço superior representao maior endereço alocáveldisponível. Chamado deregistrador limite. Figura 2.2: Registradores base e

registradores limite [Galvin et al., 2013]

9 / 45

Page 10: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Espaços de endereçamento

Alocação

O valor do registrador base é somado a cada endereço gerado por umprocesso do usuário;

A cada alocação o valor é calculado novamente para garantir que estáentre o base e o limite.

Figura 2.3: Veri�cação de limite [Galvin et al., 2013]

10 / 45

Page 11: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Espaços de endereçamento

Endereçamento

Programas prontos para entrar na CPU formam a �la de pronto;

Pergunta: em que parte da memória começa a �la de pronto?

O endereço de memória é calculado de maneira diferente em cadaestágio do ciclo de vida do programa [Galvin et al., 2013]:

Código-fonte utiliza endereços simbólicos;Código compilado vincula os endereços a espaços realocáveis;O linker ou loader vai vincular os endereços realocáveis a endereçosfísicos;Cada vínculo mapeia um endereço realocável a um endereço físico.

11 / 45

Page 12: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Espaços de endereçamento

Endereçamento

Programas prontos para entrar na CPU formam a �la de pronto;

Pergunta: em que parte da memória começa a �la de pronto?

O endereço de memória é calculado de maneira diferente em cadaestágio do ciclo de vida do programa [Galvin et al., 2013]:

Código-fonte utiliza endereços simbólicos;Código compilado vincula os endereços a espaços realocáveis;O linker ou loader vai vincular os endereços realocáveis a endereçosfísicos;Cada vínculo mapeia um endereço realocável a um endereço físico.

12 / 45

Page 13: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Espaços de endereçamento

Fases do endereçamento

A vinculação dos endereços de memória ao programa pode acontecerem três diferentes fases [Galvin et al., 2013]:

Compilação Se o endereçamento é conhecido (ou �xo no código),pode ser gerado um endereço absoluto. Se a posiçãoinicial do programa é alterada é necessário recompilar ocódigo;

Carregamento (load) Deve gerar endereços realocáveis se não forconhecido no momento da compilação;

Tempo de execução O endereçamento é adiado até o momento daexecução se o processo puder se mover de um espaço deendereçamento para outro em tempo de execução.

Obs.: É necessário suporte em hardware paramapeamento de endereços (registradores base e limite,por exemplo).

13 / 45

Page 14: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Espaços de endereçamento

Fases do endereçamento (grá�co)

Figura 2.4: Passo a passo do endereçamento [Galvin et al., 2013]14 / 45

Page 15: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Realocação estática e dinâmica

1 Introdução

2 Espaços de endereçamento

3 Realocação estática e dinâmica

4 Alocação de memória

15 / 45

Page 16: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Realocação estática e dinâmica

Endereço lógico e físico

O conceito de espaço de endereçamento físico é fundamental nogerenciamento da memória:

Endereço lógico Gerado pela CPU. Também conhecido comoendereço virtual;

Endereço físico Endereço utilizado pela unidade de memória;Espaço de endereçamento lógico conjunto de endereços lógicos

gerados pelo programa;Espaço de endereçamento físico conjunto de endereços físicos gerados

pelo programa.

Os endereços lógico e físico são os mesmos quando se utiliza aestratégia de endereçamento na compilação ou no carregamento;

Os endereços lógico e físico diferem quando utiliza-se a estratégia deendereçamento em tempo de execução.

16 / 45

Page 17: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Realocação estática e dinâmica

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ço

gerado 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.

17 / 45

Page 18: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Realocação estática e dinâmica

Registrador de realocação

Figura 3.1: Realocação dinâmica utilizando registrador de realocação[Galvin et al., 2013]

18 / 45

Page 19: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Realocação estática e dinâmica

Realocação dinâmica

A rotina não é carregada até o momento da execução;

Otimização de consumo da memória: rotinas que não são utilizadasnão são carregadas na memória;

Todas as rotinas são armazenadas na memória secundária (disco) noformato realocável;

Não é necessário nenhum tipo de suporte especial do sistemaoperacional.

Implementado no desenho do programa;O sistema operacional pode ajudar fornecendo bibliotecas derealocação dinâmica a serem utilizadas nos programas.

19 / 45

Page 20: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Realocação estática e dinâmica

Endereços virtuais

Vinculação estática: as bibliotecas do sistema e o código do programasão combinados pelo loader na imagem binária do programa;

Vinculação dinâmica: adiada até o tempo da execução;

Um pedaço de código chamado stub é utilizado para localizar abiblioteca na memória;

O stub substitui a si mesmo pela rotina da biblioteca e a executa;

O sistema operacional veri�ca se a rotina está no endereço dememória do processo. Caso não esteja, adiciona;

Conhecidas pelo sistema como bibliotecas compartilhadas � sharedlibraries.

20 / 45

Page 21: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Realocação estática e dinâmica

Layout do espaço de memória

Figura 3.2: Layout do espaço de endereçamento de memória no Linux[Duarte, 2009]

21 / 45

Page 22: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Realocação estática e dinâmica

Troca de contexto

Em geral nem todos os programas cabem na memória ao mesmotempo;

A entrada e saída de processos pode ser conhecido como troca decontexto;

Também há uma tendência dos processos utilizarem mais memória ecrescerem ao longo do tempo. Nesse caso é necessário expandir amemória do processo;

Um processo só pode crescer até que não invada o espaço do outro;

As técnicas de alocação de memória tratam do problema de troca decontexto e expansão de memória nos processos.

22 / 45

Page 23: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

1 Introdução

2 Espaços de endereçamento

3 Realocação estática e dinâmica

4 Alocação de memória

23 / 45

Page 24: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Swapping

Além da utilização da memóriaprincipal, o processo pode serenviado à uma área de trocana memória secundária (swap);

O sistema operacional mantémuma �la de prontoconsiderando os processos quepossuem imagem no disco;

Quando o processo volta àmemória principal, pode sercarregado no mesmo endereçofísico. Depende daimplementação.

Figura 4.1: Visão do Swap[Galvin et al., 2013]

24 / 45

Page 25: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Troca de contexto e swap

O processo pode ser enviado à área de troca (swap out) para depoisser recuperado e carregado na memória principal (swap in);

Considere um processo de 100MB sendo enviado para a área de swapem um disco com taxa de transferência de 50MB/s:

Tempo de swap out: 2000 ms;Mais swap in no mesmo processo;Tempo total de troca de contexto: 4000 ms ou 4s.

Outros problemas:

Operação de I/O pendente: não pode realizar o swap out, ou os dadosseriam enviados para o processo errado;Transfere primeiro para o espaço do kernel, depois para o disco: doublebu�ering. Adiciona ainda mais tempo de processamento.

Utilizar a área de swap é sempre a pior opção, mas pode ser a única.

25 / 45

Page 26: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

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 ecarregado 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 4.2: Utilização de múltiplas partições [Galvin et al., 2013]

26 / 45

Page 27: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Partições �xas

Partições de tamanho �xo;Sistema operacional guarda uma tabela de partições, indicando parteslivres e ocupadas;Havendo mais processos que partições, uma ou mais �las sãoformadas.

Figura 4.3: Partições �xas [Favacho, 2009] 27 / 45

Page 28: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Fragmentação interna

Problemas do particionamento de tamanho �xo:Utilização pouco e�ciente da memória;Di�culdade em determinar o tamanho exato do processo:

Partições pequenas demais não cabem o processo;

Partições grandes demais provocam a fragmentação interna.

Figura 4.4: Fragmentação interna em partições �xas [Favacho, 2009]28 / 45

Page 29: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Partições variáveis

Figura 4.5: Alocação com partições variáveis [Favacho, 2009]

29 / 45

Page 30: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Melhor utilização da memória

Melhor distribuição da memória;

Processo D tem que esperar pelo espaço disponível.

Figura 4.6: Melhor utilização da memória com partição variável [Favacho, 2009]

30 / 45

Page 31: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Fragmentação externa

O processo D, que tem 5K, não tem partição disponível;Como o processo ainda não está na memória, chamamosfragmentação externa.

Figura 4.7: Fragmentação externa com partição variável [Favacho, 2009]31 / 45

Page 32: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Soluções para fragmentação

Coalescência Unir espaços adjacentes produzindo um espaço único detamanho maior;

Compactação Relocação dos processos para tornar todas as partiçõescontíguas.

As referências que cada instrução faz dependem daposição do processo na memória;Se o processo muda, as referências �cam incorretas;Só é possível se utilizar relocação dinâmica;Existe uma tendência de agrupamento da memória emum grande bloco único.

32 / 45

Page 33: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Coalescência

Figura 4.8: Coalescência de partições adjacentes [Favacho, 2009]

33 / 45

Page 34: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Compactação

Figura 4.9: Compactação de memória [Favacho, 2009]

34 / 45

Page 35: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Escolha do método de particionamento

As estratégias para escolha do método de particionamento tentamevitar o problema da fragmentação antes que ele ocorra;

Como satisfazer uma requisição de tamanho n considerando a lista departições disponíveis?

First-�t Aloca a primeira partição que for grande o su�ciente;Best-�t Aloca a menor partição que for grande o su�ciente.

É necessário buscar em toda a lista de partições, a nãoser que estejam ordenadas por tamanho.Produz o menor tamanho de partição não alocado.

Worst-�t Aloca a maior partição.

Deve buscar em toda a lista;Produz o maior tamanho de partição não alocado.

35 / 45

Page 36: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

First-�t

Figura 4.10: Método �rst-�t [Favacho, 2009]

36 / 45

Page 37: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Best-�t

Figura 4.11: Método best-�t [Favacho, 2009]

37 / 45

Page 38: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Worst-�t

Figura 4.12: Método worst-�t [Favacho, 2009]

38 / 45

Page 39: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Controle de alocação

Mapa de bits Memória é dividida em unidades de alocação de tamanho�xo.

Ocupação de espaço variável. Quanto menor, maior omapa;Para cada unidade de alocação há um bit no mapa. Ex.:0 -> Bloco livre1 -> Bloco ocupado

Lista encadeada Os elementos representam os segmentos livres e ocupadosda memória.

39 / 45

Page 40: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Mapa de bits

Tamanho do mapa depende do tamanho da memória e da unidade dealocaçã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 4.13: Exemplo de mapa de bits [Favacho, 2009]

40 / 45

Page 41: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Lista encadeada

Segmentos livres e ocupados são representados através de uma listaencadeada;

Figura 4.14: Exemplo de lista encadeada [Favacho, 2009]

41 / 45

Page 42: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Buraco na lista

Nos seguintes endereços existem buracos na memória, ou seja,partições não alocadas:

5-7;18-19;29-31.

Figura 4.15: Exemplo de buraco na lista [Favacho, 2009]

42 / 45

Page 43: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Realocação

Na realocação os buracos referenciam a si mesmos como espaçosdisponíveis;

Os processos apontam somente para endereços que estão ocupados,respeitando um pequeno o�set.

Figura 4.16: Realocação na lista encadeada [Favacho, 2009]

43 / 45

Page 44: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

OBRIGADO!!!

PERGUNTAS???

44 / 45

Page 45: Gerência de Memória - Blog de Eduardo Santos · Alocação de memória Swapping Além da utilização da memória principal, o processo pode ser enviado à umaárea de troca na

Alocação de memória

Dias, A. M. (2005).Noções de sistemas operacionais.Disponível em: http://www.dca.ufrn.br/∼xamd/dca0800/Cap03.pdfAcessado em 06/01/2011.

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.

Tanenbaum, A. S. and Machado Filho, N. (1995).Sistemas operacionais modernos, volume 3.Prentice-Hall.

45 / 45