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