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
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
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
Introdução
Gargalo de Von Neumann
Figura 1.1: Arquitetura de Von Neumann
4 / 45
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Alocação de memória
Partições variáveis
Figura 4.5: Alocação com partições variáveis [Favacho, 2009]
29 / 45
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
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
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
Alocação de memória
Coalescência
Figura 4.8: Coalescência de partições adjacentes [Favacho, 2009]
33 / 45
Alocação de memória
Compactação
Figura 4.9: Compactação de memória [Favacho, 2009]
34 / 45
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
Alocação de memória
First-�t
Figura 4.10: Método �rst-�t [Favacho, 2009]
36 / 45
Alocação de memória
Best-�t
Figura 4.11: Método best-�t [Favacho, 2009]
37 / 45
Alocação de memória
Worst-�t
Figura 4.12: Método worst-�t [Favacho, 2009]
38 / 45
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
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
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
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
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
Alocação de memória
OBRIGADO!!!
PERGUNTAS???
44 / 45
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