GERENCIAMENTO DE MEMÓRIA

Propaganda
GERENCIAMENTO DE MEMÓRIA
Sistemas Operacionais
Vinícius Pádua
Gerenciamento de memória
• O que vem em sua cabeça quando pensa em
memória?
– Cache
• Velocidade
– RAM
• Custo
– Memória Secundária
• Capacidade
Vinícius Pádua
2
Hierarquias de Memórias
• Cache
– Centenas de MB, volátil, rápida velocidade e $$$
• Ram
– Dezenas de GB, volátil, média velocidade e $$
• Memória Secundária
– Centenas de GB, não-volátil, baixa velocidade e $
• SO responsável por gerir as memórias
Vinícius Pádua
3
Gerenciamento de Memória
• Objetivos
–
–
–
–
–
Gerenciar a interação entre as memórias
Alocar/Desalocar espaços em memória
Controlar partes em uso e livre
Impedir acesso não permitido a memória
Gerenciar a entrada e saída de processos da memória
• Modelos
– Sem abstração
– Com Abstração
Vinícius Pádua
4
Sem Abstração
• Mais simples
• Utilização direta da memória física
• Todo programa era carregado na memória no inicio
da execução
• Monoprogramação
• Variações
Vinícius Pádua
5
Sem Abstração
• Realizando multiprogramação
Vinícius Pádua
6
Com Abstração
• Não utilização dos endereços físicos diretamente
• Multiprogramação
– Limitado pelo espaço livre
• Processos permanecem na memória até serem
finalizados
• Espaço de Endereçamento
– Abstração para a memória
– Cada processo tem seu próprio e independente
– Iniciam em 0
Vinícius Pádua
7
Com Abstração
• Relocação dinâmica
– Modificação dos endereços apenas no momento da
utilização
– Registrador-Base e Registrador-Limite
• Registrador-Base: Indica o endereço inicial do programa na
memória física
• Registrador-Limite: Indica o tamanho do programa
Vinícius Pádua
8
Com Abstração
• Registrador-Base e Registrador-Limite
• Cada referência a memória
– HWD da CPU acrescenta o registradorbase
– Verifica se é o valor final é maior que o
registrador-base e menor que o
registrador-limite
– Em caso de erro é abortado, gerando
exceção de acesso negado!
Vinícius Pádua
9
Gerenciamento de Memória
• E se o programa for maior do que o espaço
disponível?
– Não executar ?
– Swapping – Troca de Processo
• Todo o processo ira para memória
• Limite: Memória total
– Memória Virtual
• Apenas uma parte do processo ira para memória
• Limite: “Inexistente”
Vinícius Pádua
10
Swapping - Troca de Processo
• Quando o processo necessita de espaço maior que
o disponível
• Processos ficam entrando e saindo da memória
principal
– Memória secundária
• Características
– Número, quantidade, localização dos processos são
variáveis
– Limitado pelo total de memória
– Espaço sequencial do processo
Vinícius Pádua
11
Swapping - Troca de Processo
Vinícius Pádua
12
Swapping - Troca de Processo
Vinícius Pádua
13
Swapping - Troca de Processo
• Como proceder se o processo necessitar mais
memória?
– Relocar todos os processos adjacentes
– Alocar com espaços para expansão
Vinícius Pádua
14
Gerenciamento de Memória Livre
• Controle dos espaços livres da memória
• Tipos
– Mapas de Bits
– Listas Encadedas
Vinícius Pádua
15
Mapa de Bits
• Divisão da memória em unidades de alocações
• Cada unidade é uma posição no mapa de bits
Vinícius Pádua
16
Gerenciamento de memória com
listas encadeadas
• Lista encadeada de segmentos de memória livres e ocupados
– Segmento de memória:
• Área alocada ao processo
• Área livre situada entre dois processo
• Segmentos são ordenados por endereços
Vinícius Pádua
17
Gerenciamento de memória com
listas encadeadas
• Ordenação por endereço
– Fácil atualização da lista
Vinícius Pádua
18
Algoritmos para alocar memória a um
processo
• Caso o processo F for iniciar e necessita de 2
unidades, onde alocar?
• Métodos
–
–
–
–
–
First fit (primeiro que couber)
Next fit (próximo que couber)
Best fit (melhor que couber)
Worst fit (pior que couber)
Quick fit (mais rápido que couber)
Vinícius Pádua
19
Algoritmos para alocar memória a um
processo
• First fit (primeiro que couber)
– Procura na lista um segmento grande o suficiente para o
processo
• Segmento é quebrado em duas parte
– 1: Alocada ao processo
– 2: Memória livre
– Rápido, pois pesquisa o mínimo possível
• Next fit (próximo que couber)
– Semelhante ao first fit
– Memoriza a posição onde encontrou memória disponível
e inicia dessa posição
Vinícius Pádua
20
Algoritmos para alocar memória a um
processo
• Best fit (melhor tamanho)
– Pesquisa na lista inteira e escolhe o menor segmento de memória
suficiente ao processo
• Comparativo
– Best fit x First Fit
• Mais lento
– Busca na lista inteira
• Maior desperdiço de memória
– Deixa segmentos de memória minúsculos e conseqüentemente inúteis
• Worst fit (pior tamanho)
– Escolhe o maior segmento de memória
– Tentativa de quando ocorrer a divisão, os tamanhos não sejam
minúsculos
Vinícius Pádua
21
Algoritmos para alocar memória a um
processo
• Lista duplamente encadeada
– Uma para espaços livre e outra ocupado
– Ordenadas por tamanho
– First fit e best bit funcionam semelhantes
• Quick fit(mais rápido que couber)
– Mantém lista separada de tamanhos de memória
disponíveis mais solicitados
Vinícius Pádua
22
Algoritmos para alocar memória a um
processo
• Para cada um das técnicas best-fit, worst-fit e first-fit execute
as operações
– Operações:
• Alocar uma área para o programa D que possui 6 Kb;
• Liberar a área do programa A;
• Alocar uma área para o programa E que possui 4 Kb.
– Mostre passo a passo como fica organização da memória e ao final
faça a lista encadeada
Fim da memória
Início da memória
Vinícius Pádua
23
Gerenciamento de Memória
• Se o processo necessitar de uma quantidade maior
que a memória total disponível?
– Overlays (Sobreposições) e Memória Virtual
•
•
•
•
Permitem que apenas parte de um processo estejam na memória
Diminuem a carga inicial do programa
Econômico
Mais processos na memória
Vinícius Pádua
24
Overlays - Sobreposições
• Divisão do programa em módulos
• Carga na memória é feita por overlays
• Vantagens
– Processo não necessita estar carregado na memória
• Desvantagens
– Programador responsável pela definição dos overlays e
quando serão alocados na memória
Vinícius Pádua
25
Memória Virtual
• SO responsável pela carga do processo
• Programador não interage nessa atividade
• Paginação
–
–
–
–
–
–
Divisão da memória em páginas
Tamanho fixo
A carga na memória em páginas
Aumenta o grau de programação
Redução das operações de E/S
Capacidade de executar processos maiores que a
memória
Vinícius Pádua
26
Memória Virtual – Paginação
• Desassociação dos endereços
– Endereço virtual
• Processo “enxerga” e manipula
• Chamados apenas de páginas
– Endereço físico
• Correspondem a posição real na memória
• Chamado de molduras de páginas
• Ambos são divididos em páginas de tamanho fixo
Vinícius Pádua
27
Memória Virtual – Paginação
• Existem mais páginas virtuais que físicas
• Total de páginas
– Físicas: Limitada pela quantidade de memória existente
– Virtuais: Limitada pelo limite que o SO consegue endereçar
• Páginas virtuais são mapeadas em molduras de páginas
Vinícius Pádua
28
Memória Virtual – Paginação
• Toda tentativa de ler uma página antes é verificado se a
mesma se encontra mapeada em moldura de página. Caso
não esteja o processo ira ficar bloqueado até que a página
esteja mapeada
• MMU : Responsável por mapear uma página virtual em
moldura de página
Vinícius Pádua
29
MMU – Unidade de Gerenciamento
de Memória
• Hardware: Mapeamento entre endereço virtual em
endereço físico
Vinícius Pádua
30
Memória Virtual – Paginação
• Tamanho da página (P)
– Qualquer tamanho
– Utiliza: Potencia de 2, facilitar operações div e mod
• Como a MMU identifica a moldura através da virtual?
– Número da Página (virtual ou física)
– Deslocamento dentro de uma página
• Igual na página virtual como na moldura de página
Vinícius Pádua
31
Memória Virtual – Paginação
• Exemplo
– Características do sistema
• Endereços virtuais de 16 bits (0 a 64K)
• Memória física: 32KB
• Tamanho máximo de um processo? Pq?
– 64 KB
• Se cada página tiver o tamanho de 4KB, qual o total de páginas
virtuais e molduras de páginas?
– Moldura de páginas: 32 / 4 = 8
– Páginas Virtuais: 64 / 4 = 16
Vinícius Pádua
32
Memória Virtual – Paginação
Página ausente
• Como encontrar um endereço físico
a partir de um virtual?
– Instrução: MOV REG, 0
MMU: Pagina virtual 0 (0 a 4095)
MMU: Moldura de página 2 (8192 a
12287)
Envio a Memória: MOV REG, 8192
– Instrução: MOV REG, 8196
MMU: Pagina virtual 2 (8192 a 12287)
MMU: Moldura de página 6 (24576 a
28671)
Envio a Memória: MOV REG, 24580
– Instrução: MOV REG 32780
MMU: Página Virtual 8
Falta de Página (Page fault)
1k = 1024 b
Vinícius Pádua
33
Memória Virtual – Paginação
Vinícius Pádua
34
Memória Virtual – Paginação
Página ausente
• Qual o endereço deverá ser lido
na memória física?
– Instrução: MOV REG, 2012
– Instrução: MOV REG, 8190
– Instrução: MOV REG, 8287
– Instrução: MOV REG 84780
– Instrução: MOV REG 22222
– Instrução: MOV REG 46320
1k = 1024 b
Vinícius Pádua
35
Tabela de Páginas
• Estrutura de uma entrada da tabela de páginas
Vinícius Pádua
36
Tabela de Páginas
• Questões que podem prejudicar o desempenho
– Mapeamento do endereço virtual para físico deve ser
rápido
– Tabela de páginas grandes
• Técnicas
–
–
–
–
–
Registradores dedicados
Tabela toda em memória
TLB
Tabela de Páginas Multinível
Tabela de páginas invertidas
Vinícius Pádua
37
Tabela de Páginas
• Registradores dedicados
– Um registrado para cada página virtual
• Acesso rápido
• Custo alto para ter vários registradores
• Excessivo carregamento a cada mudança de contexto
• Tabela toda em memória
– Único registrador que aponta para base da tabela
– Várias referências a memória para ler cada entrada
Vinícius Pádua
38
TLB – Memória Associativa
• Hardware localizado na MMU
• Realiza o mapeamento sem utilizar a tabela de páginas
• Antes da leitura a tabela de páginas e verificado
– Caso a página não esteja na TLB é utilizado a tabela de páginas
e depois inserida na TLB
Vinícius Pádua
39
Tabelas Multiníveis
• Divisão da tabela de páginas
– Diminuição da carga na memória
– Carrega apenas a parte necessária
10 10
12
PT1 PT2
Deslocamento
Vinícius Pádua
40
Tabelas Invertidas
• Considera todos os processos e não apenas um
• Endereço lógico
– Número processo , Número Página, Deslocamento
Vinícius Pádua
41
Gerenciamento de Memória
• O que fazer quando referenciar uma página que não
esta na memória?
– Inserir na memória!
– Atenção
• Salvar a página que ira sair, caso esteja modificada
• Algoritmo de Substituição de falta de página
– Objetivo: Evitar retirar uma página que será logo utilizada
Vinícius Pádua
42
Algoritmo de Substituição de Página
•
•
•
•
•
•
•
•
•
Algoritmo Ótimo
Não usada recentemente (NRU)
Primeiro a entrar, Primeiro a Sair (FIFO)
Segunda Chance
Relógio
Menos recentemente Usada (LRU)
Envelhecimento
Conjunto de Trabalho
WsClock
Vinícius Pádua
43
Algoritmo Ótimo
• Substituir a página que não será usada pelo maior
período
Cadeia de referência: 7 0 1 2 0 3 0 4 2 1 3 4
7
7
7
2
2
2
2
2
2
1
0
0
0
0
0
0
4
4
4
1
1
1
3
3
3
3
3
• É funcional na prática?
– É ótimo, porém impossível de implementar.
Vinícius Pádua
44
Primeiro a entrar, Primeiro a Sair - FIFO
• Primeiro que entra primeiro que sai
• Utiliza uma lista de todas as páginas na memória
Cadeia de referência: 7 0 1 2 3 0 4 2
Início
Fim
7
0
7
1
2
3
0
4
2
7
7
2
2
2
4
4
0
0
0
3
3
3
2
1
1
1
0
0
0
Vinícius Pádua
45
Segunda Chance
• Semelhante ao FIFO
• Provê mais uma segunda chance as páginas
referenciadas
– Evitar que uma página muito referenciada saia da memória
– Analisa o Bit Referenciada da página
• = 0: substitui ; = 1 ganha uma vez e é alterado para zero
Cadeia de referência: 2 7 3 7 5 7 4
Início
Fim
7
RR==0
11
0
RR == 10
2
1
R=0
3
R=0
5
R=0
R=0
7
7
7
7
7
0
0
3
3
4
1
2
2
5
5
4
R=0
Vinícius Pádua
Vinícius Pádua
46
46
Relógio
• Semelhante ao Segunda Chance
– Utiliza uma lista circular para armazenar as páginas
– Ponteiro indica a página mais antiga
Vinícius Pádua
47
Algoritmo Não Usada Recentemente
(NRU)
• Substitui a página que foi usada a mais tempo e que
não tenha sido alterada
• Páginas são classificadas
–
–
–
–
–
Classe 0: Não referenciada, não modificada R=0 , M=0
Classe 1: Não referenciada, modificada
R=0 , M=1
Classe 2: referenciada, não modificada
R=1 , M=0
Classe 3: referenciada, modificada
R=1 , M=1
As de menores classes são as escolhidas para remoção
Vinícius Pádua
48
Algoritmo Não Usada Recentemente
(NRU)
• Caso aconteça uma falta de página, quem sai?
E se fosse o FIFO?
segunda chance?
Vinícius Pádua
49
Menos Recentemente Usada (LRU)
• As páginas muito utilizadas recentemente serão
logo utilizadas novamente
• Implementações
– Lista Encadeada com as mais recentemente utilizadas no
inicio
• Custo devido a atualização da lista a cada referência a memória
– Matriz
• n x n – n é o total de páginas
• A cada referência a página
– Atualizar Linha X com valor 1 e coluna X com valor 0
• Página a sair será a linha de menor valor binário
Vinícius Pádua
50
Menos Recentemente Usada (LRU)
Cadeia de referência: 0 1 2 3 2 1 0 3 2 3
Vinícius Pádua
51
Envelhecimento
• Forma de implementação na LRU em software
Vinícius Pádua
52
Algoritmo de Substituição de Página
Vinícius Pádua
57
Questões Importantes
•
•
•
•
Política de Alocação Global x Local
Tamanho da Página
Espaços separados de instruções e dados
Páginas compartilhadas
Vinícius Pádua
58
Política de Alocação Global X Local
• A página a ser removida deverá ser apenas a do processo em
questão ou de todos?
• Ocorre uma falta de página com o Processo A? Qual Página
deve sair?
Vinícius Pádua
59
Tamanho da Página
• Pode ser definida pelo SO
• Tamanho Pequeno
– Menor fragmentação interna na última página
– Processos compostos por muitas páginas
• Tempo excessivo na carga das páginas devido o posicionamento
do disco magnético
• Tamanho grande
– Menor tamanho da tabela de páginas
– Mais rápido a carga
• Carga de poucas páginas e sem muitas movimentações do disco
• Atualmente: 4kb ou 8kb
Vinícius Pádua
60
Espaços Separados de instruções e
dados
• Vantajoso quando existe pouco espaço de endereçamento
– Espaço I : Código do Programa
– Espaço D : Dados
Vinícius Pádua
61
Páginas Compartilhadas
• Comum executar o mesmo programa várias vezes
– Gasto “desnecessário” do código do programa
• Caso utilize os espaços I e D
– Atenção
• Ao escalonar: Não retirar da memória todas as páginas do espaço I
• Ao finalizar um processo e não liberar o espaço I
Vinícius Pádua
62
Gerenciamento de Memória
• Paginação
– Apenas um único espaço de endereçamento
• Como fazer para utilizar mais de um espaço?
• Como fazer para compartilhar um espaço de
memória?
• Segmentação
Vinícius Pádua
63
Segmentação
• Existência de vários espaços (segmentos)
• Segmentos
– Tamanhos diferentes
– São carregados por segmento na memória
Vinícius Pádua
64
Segmentação
Fragmentação externa
Vinícius Pádua
Compactação
65
Segmentação X Paginação
Vinícius Pádua
66
Vinícius Pádua
67
Download