Buscar

aula12 Gerencia de Memoria

Prévia do material em texto

Sistemas Operacionais
Gerenciamento de memória
Prof. Alberlan Lopes
Gerenciamento de memória
 A multiprogramação implica em manter-se vários 
processos em memória.
 A memória necessita ser alocada de forma eficiente para 
permitir o máximo possível de processos 
 Existem diferentes técnicas para gerência de memória, 
 que dependem do hardware do processador. 
Gerenciamento de memória
Um sistema de memória possui pelo menos 
dois níveis:
o Memória principal: acessada pela CPU 
o Memória secundária: discos 
Gerenciamento de memória
• Programas são armazenados em disco 
o Executar um programa se traduz em 
transferi-lo da memória secundária à 
memória primária
Gerenciamento de memória
• Qualquer sistema operacional tem gerência de memória 
 
 Monotarefa: gerência é simples 
 Multitarefa: complexa 
• Algoritmos de gerência de memória 
dependem de facilidades disponíveis pelo 
hardware da máquina 
Gerenciamento de memória
Memória lógica e memória física
Memória lógica
o É aquela que o processo “enxerga”
o Endereços lógicos são aqueles manipulados por 
um processo
 
Gerenciamento de memória
Memória lógica e memória física
Memória física
 Implementada pelos circuitos integrados de memória.
 Endereços físicos são aqueles que correspondem a 
uma posição real de memória.
 
Gerenciamento de memória
Endereço lógico versus endereço físico
Espaço lógico de um processo é diferente do espaço físico. 
 Endereço lógico: gerado pela CPU (endereço virtual)
 Endereço físico: endereços enviados para a memória RAM 
Programas de usuários “vêem” apenas endereços lógicos. 
Endereços lógicos são transformados em endereços físicos 
no momento de execução dos processos. 
Gerenciamento de memória
Unidade de gerência de memória
• Memory Management Unit (MMU) 
• Hardware que faz o mapeamento entre 
endereço lógico e endereço físico 
Gerenciamento de memória
Unidade de gerência de memória
Gerenciamento de memória
Um programa deve ser transformado em um processo para poder ser 
executado. 
 Alocação de um descritor de processos 
 Alocação de áreas de memória para código, dados e pilha 
Transformação é feita através de uma série de passos, alguns com a 
ajuda dos próprios programas. 
 Compilação, diretivas de compilação e/ou montagem, 
ligação, etc... 
 Amarração de endereços (binding) 
Gerenciamento de memória
Amarração de endereços (binding)
Atribuição de endereços (posições de memória) para código e 
dados pode ser feita em três momentos diferentes. 
 Em tempo de compilação 
 Em tempo de carga 
 Em tempo de execução . 
Gerenciamento de memória
Amarração de endereços (binding)
Gerenciamento de memória
Amarração de endereços (binding)
Atribuição de endereços para instruções e dados pode ser feita 
em três momentos diferentes: 
 Em tempo de compilação: se a localização da memória 
 é conhecida a priori, código absoluto pode ser gerado; tem 
que recompilar o código se a alocação inicial mudar 
 Em tempo de carga: deve gerar código relocável se a 
localização da memória não é conhecida em tempo de 
 compilação 
 Em tempo de execução: a atribuição é adiada até o tempo 
de execução se o processo puder ser movido durante 
sua execução de um segmento de memória para outro. 
Precisa de suporte de hardware para mapear 
endereços (ex.: registradores base e limite) 
Gerenciamento de memória
Registradores de Base e de Limite.
Um par de registradores de base e de limite 
definem o espaço de endereço lógico 
Gerenciamento de memória
Gerenciamento de memória
Carregador absoluto versus carregador relocador
• Programador não tem conhecimento de onde o programa será 
carregado na memória 
• O endereço só é conhecido no momento da carga 
Durante a execução do programa sua localização física pode ser alterada. 
Ex.: procedimento de swapping
• Necessidade de traduzir endereços lógicos a endereços físicos 
• Relocação é a técnica que realiza esta tradução 
o Via software: carregador relocador 
o Via hardware: carregador absoluto 
Gerenciamento de memória
Carregador relocador
• Correção de todas as referências à memória de forma a corresponder 
 ao endereço de carga do programa 
• Necessidade de identificar quais endereços devem ser corrigidos 
o Código relocável 
o Mapeamento das posições a serem corrigidas é mantida através de 
tabelas
• Código executável mantém informações de relocação na forma de 
tabelas. 
• No momento da carga o programa executável é interpretado e os 
endereços corrigidos. 
Gerenciamento de memória
Carregador relocador
Gerenciamento de memória
Código absoluto - Carregador absoluto
• Não realiza correção de endereços no momento da carga do 
programa em memória 
• Código executável absoluto não necessita manter tabelas de 
endereços a serem corrigidos 
• Endereço de carga 
Fixo pelo programa (programador) 
Qualquer: Correção pode ser feita automaticamente, de forma 
transparente, a partir de registradores de base
Gerenciamento de memória
Mecanismos básicos de gerência de memória
Um programa (processo) para ser executado deve estar na memória 
 Onde deve ser carregado? Problema de alocação de memória 
A alocação de memória depende de:
 Código absoluto versus código relocável
 Necessidade de espaço contínuo ou não 
Necessidade de gerenciamento da memória
 Determinação de áreas livres e ocupadas
 Racionalizar a ocupação da memória 
Gerenciamento de memória
Gerenciamento de memória
Alocação contígua simples
• Sistema mais simples 
• Memória principal é dividida em duas partições: o 
Sistema operacional (parte baixa de memória) o 
Processo de usuário (restante da memória) 
• Usuário tem controle total da memória podendo 
inclusive acessar a área do sistema operacional. 
Ex.: DOS (não confiável) 
 
Gerenciamento de memória
 Evolução: inserir proteção através de 
mecanismos de hardware + software 
 Registradores de base e de limite o 
Memory Management Unit (MMU)
 
Gerenciamento de memória
Alocação contígua particionada
• Existência de múltiplas partições 
• Imposta pela multiprogramação 
• Filosofia: 
o Dividir a memória em blocos (partições) 
o Cada partição pode receber um processo (programa) 
o Grau de multiprogramação é fornecido pelo número de partições  * * 
Importante: não considerando a existência deswapping
 
Gerenciamento de memória
Alocação contígua particionada
• Duas formas básicas: 
 Alocação contígua com partições fixas 
(estática) 
 Alocação contígua com partições variáveis 
(dinâmica) 
Gerenciamento de memória
Alocação contígua particionada
• O sistema operacional é responsável pelo controle 
das partições mantendo informações como: 
o Partições alocadas 
o Partições livres 
o Tamanho das partições
Gerenciamento de memória
Alocação contígua particionada dinâmica
Gerenciamento de memória
Alocação contígua particionada fixa
• Memória disponível é dividida em partições 
de tamanho fixo que podem ser do mesmo 
tamanho ou não 
Gerenciamento de memória
Alocação contígua particionada fixa
Questões: 
o Processos podem ser carregados em qualquer partição? 
Depende se o código é absoluto ou relocável 
o Número de processos que podem estar em execuçãoao 
mesmo tempo?
Sem swapping – igual ao número de partições (máximo) 
Com swapping – maior que o número de partições 
o Se o programa é maior que o tamanho da partição? 
Não executa a menos que se empregue um esquema de 
overlay 
Gerenciamento de memória
Técnica de Overlay 
● Enquanto na alocação contígua simples os 
programas estão limitados ao tamanho da 
área disponível na memória principal para o 
usuário, na técnica de Overlay os programas 
são divididos em módulos, deforma que seja 
possível a execução independente de cada 
módulo,utilizando uma mesma área da 
memória
Gerenciamento de memória
Técnica de Overlay 
Exemplo de Overlay: Um programa que consista em 
um módulo principal e outros dois módulos 
independentes, um correspondente ao cadastro e 
outro, à impressão. Quando o programa é 
carregado, apenas o módulo principal é introduzido 
na memória, os demais aguardam em memória 
secundária. Quando um dos outros módulos for 
referenciado pelo módulo principal, aquele será 
carregado na memória principal, na área de overlay
Gerenciamento de memória
Técnica de Overlay 
A definição das áreas de overlay é feita pelo próprio programador, 
através de comandos específicos da linguagem de 
programação. 
● O tamanho da área de overlay deve ser igual ou maior ao 
tamanho do maior módulo. 
● Como vantagem, a técnica de overlay possibilita um melhor 
aproveitamento da memória principal. 
● Sua utilização exige cuidado, pois pode trazer implicações tanto 
na manutenção como no desempenho das aplicações, devido 
à possibilidade de transferências excessivas dos módulos 
entre a memória principal e a memória secundária.
Gerenciamento de memória
Alocação contígua particionada fixa
Gerenciamento de partições fixas
Com código absoluto
o Um processo só pode ser carregado na área de memória 
(partição) para a qual foi compilado 
o Pode haver disputa por uma partição mesmo que tendo outras 
 livres 
Processo é mantido no escalonador de longo prazo (termo) 
Empregar swapping 
Gerenciamento de memória
Alocação contígua particionada fixa
Gerenciamento com código relocável 
 Um processo de tamanho menor ou igual ao tamanho da 
partição pode ser carregado em qualquer partição disponível 
 Se todas as partições estão ocupadas, duas soluções:
- Processo é mantido no escalonador de longo prazo (termo)
- Empregar swapping (escalonador a médio prazo) 
 
Gerenciamento de memória
Swapping
 Processo necessita estar na memória para ser executado
 Se não há mais espaço em memória é necessário fazer um 
rodízio de processos em memória 
 Um processo pode ser temporariamente movido para 
fora da memória (backing store) e então trazido de volta 
para a memória para continuar a execução 
 
Gerenciamento de memória
Swapping
 Backing store – memória secundária suficientemente grande 
para armazenar cópias de todos os processos de usuários 
 A maior parte do tempo de swap é tempo de transferência; tempo de 
swap é proporcional ao tamanho do processo 
 Existem variantes do sistema de swapping utilizados em 
sistemas como UNIX, Linux e Windows 
 Roll out, roll in – swapping variante usado para algoritmos 
 de escalonamento baseados em prioridade; processo de 
baixa prioridade é movido da memória para que processos 
de alta prioridade possam ser carregados e executados 
Gerenciamento de memória
Swapping
sistema operacional mantém uma fila de processos que estão 
prontos para executar, que possuem imagens da memória em disco 
Gerenciamento de memória
Alocação contígua particionada fixa
Fragmentação Interna
• Problema da alocação fixa é uso ineficiente da memória 
principal 
• Um processo, não importando quão pequeno seja, ocupa 
uma partição inteira 
Gerenciamento de memória
Alocação contígua particionada fixa
Fragmentação Interna
Gerenciamento de memória
Alocação contígua particionada fixa
Paliativo para reduzir fragmentação interna
 Partições de tamanho diferentes
Gerenciamento de memória
Algoritmos para alocação de partições fixas
 Se código é absoluto a alocação é determinada na fase de montagem, 
compilação ou ligação. 
 Se código é relocável:
- Partições de igual tamanho 
* Não importa qual partição é utilizada 
- Partições de diferentes tamanhos 
* Atribui ao processo a menor partição livre capaz de armazena o 
processo
* Processo são atribuídos a partições de forma a minimizar o 
desperdício de memória (fragmentação interna)
Gerenciamento de memória
Algoritmos para alocação de partições fixas
Gerenciamento de memória
Alocação particionada dinâmica
• Objetivo é eliminar a fragmentação interna 
• Processos alocam memória de acordo com 
suas necessidades 
• Partições são em número e tamanho 
variáveis 
Gerenciamento de memória
Alocação particionada dinâmica
Gerenciamento de memória
Alocação particionada dinâmica
Fragmentação externa
• A execução de processos pode criar 
pedaços livres de memória 
• Pode haver memória disponível, mas não 
contígua 
Gerenciamento de memória
Alocação particionada dinâmica
Fragmentação externa
Gerenciamento de memória
Alocação particionada dinâmica
Soluções possíveis fragmentação externa
 Reunir espaços adjacentes de memória 
 Empregar compactação 
 Relocar as partições de forma a eliminar os espaços entre elas e 
criando uma área contígua 
Desvantagem:
Consumo do processador
Acesso a disco 
 Acionado somente quando ocorre fragmentação 
 Necessidade de código relocável 
Gerenciamento de memória
Alocação particionada dinâmica
Gerenciamento de partições dinâmicas 
• Determinar qual área de memória livre será alocada a um 
processo 
• Sistema operacional mantém uma lista de lacunas o Pedaços 
de espaços livres em memória 
• Necessidade de percorrer a lista de lacunas sempre que um 
processo é criado 
Gerenciamento de memória
Alocação particionada dinâmica
Algoritmos para alocação contígua dinâmica
 Best fit 
Minimizar tam_processo - tam_bloco o Deixar espaços livres os 
menores possíveis 
 Worst fit 
Maximizar tam_processo - tam_bloco o Deixar espaços livres os 
maiores possíveis 
 First fit 
tam_bloco > tam_processo 
 Circular fit 
Variação do first-fit 
Gerenciamento de memória
Algoritmo alocação particionada dinâmica
Gerenciamento de memória
Algoritmo alocação particionada dinâmica
Desvantagem de partições variáveis
 Tende a criar lacunas de memória livres que 
individualmente podem não ser suficientes para 
acomodar um processo 
 Pode haver memória livre, mas não contígua 
Fragmentação externa
Gerenciamento de memória
Algoritmo alocação particionada dinâmica
Desvantagem de partições variáveis
Gerenciamento de memória
Soluções possíveis para fragmentação externa
 Reunir espaços adjacentes de memória 
 Empregar compactação 
 Relocar as partições de forma a eliminar os espaços entre 
elas e criando uma área contígua 
o Desvantagem:
Consumo do processador Acesso a disco 
Acionado somente quando ocorre fragmentação 
 Necessidade de código relocável 
Gerenciamento de memória
Problemas com alocação particionada
o Necessidade de uma área contígua de memória 
(tamanho do processo)
o Fragmentação interna (partições fixas) ou externa 
 (partições variáveis)
Gerenciamento de memória
 Nova abordagem é considerar a existência 
de um espaço de endereçamento lógico e de 
um espaço de endereçamentofísico 
 O espaço de endereçamento físico não precisa ser 
contíguo o Necessita “mapear” o espaço lógico no 
espaço físico
Dois métodos básicos:
• Paginação 
• Segmentação 
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42
	Slide 43
	Slide 44
	Slide 45
	Slide 46
	Slide 47
	Slide 48
	Slide 49
	Slide 50
	Slide 51
	Slide 52
	Slide 53
	Slide 54
	Slide 55
	Slide 56

Continue navegando