GERENCIAMENTO DE MEMÓRIA Sistemas Operacionais
Gerenciamento de memória O que vem em sua cabeça quando pensa em memória? Cache RAM Velocidade Custo Memória Secundária Capacidade 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 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 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 5
Sem Abstração Realizando multiprogramação 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 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 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! 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 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 11
Swapping - Troca de Processo 12
Swapping - Troca de Processo 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 14
Gerenciamento de Memória Livre Controle dos espaços livres da memória Tipos Mapas de Bits Listas Encadedas 15
Mapa de Bits Divisão da memória em unidades de alocações Cada unidade é uma posição no mapa de bits 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 17
Gerenciamento de memória com listas encadeadas Ordenação por endereço Fácil atualização da lista 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) 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 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 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 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 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 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 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 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 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 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 29
MMU Unidade de Gerenciamento de Memória Hardware: Mapeamento entre endereço virtual em endereço físico 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 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 32
Memória Virtual Paginação 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 Página ausente 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 33
Memória Virtual Paginação 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 35
Tabela de Páginas Estrutura de uma entrada da tabela de páginas 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 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 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 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 40
Tabelas Invertidas Considera todos os processos e não apenas um Endereço lógico Número processo, Número Página, Deslocamento 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 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 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. 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 1 2 3 0 4 2 7 7 7 2 2 2 4 4 0 0 0 3 3 3 2 1 1 1 0 0 0 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 0 1 2 3 5 4 R = 10 R = 10 R = 0 R = 0 R = 0 R = 0 R = 0 7 7 7 7 7 0 0 3 3 4 1 2 2 5 5 46 46
Relógio Semelhante ao Segunda Chance Utiliza uma lista circular para armazenar as páginas Ponteiro indica a página mais antiga 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 48
Algoritmo Não Usada Recentemente (NRU) Caso aconteça uma falta de página, quem sai? E se fosse o FIFO? segunda chance? 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 50
Menos Recentemente Usada (LRU) Cadeia de referência: 0 1 2 3 2 1 0 3 2 3 51
Envelhecimento Forma de implementação na LRU em software 52
Algoritmo de Substituição de Página 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 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? 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 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 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 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 63
Segmentação Existência de vários espaços (segmentos) Segmentos Tamanhos diferentes São carregados por segmento na memória 64
Segmentação Fragmentação externa Compactação 65
Segmentação X Paginação 66
67