Gerência de memória III Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2016 1 / 45 Sumário 1 Memória Virtual Segmentação Paginação 2 Alocação de páginas Tabelas de páginas Políticas de alocação 2 / 45 Memória Virtual 1 Memória Virtual Segmentação Paginação 2 Alocação de páginas Tabelas de páginas Políticas de alocação 3 / 45 Memória Virtual Conceitos Problema do bloatware: programas que usam muito mais memória do que deveriam; É preciso então fornecer ao usuário a ilusão de que o computador tem muito mais memória do que realmente tem; Some os seguintes tamanhos: Código-fonte; Dados; Pilha de execução. Solução: manter na memória principal apenas a parte que está em uso; O resto ca na memória secundária (disco). 4 / 45 Memória Virtual Conceitos (cont.) Ideia: desvincular o endereçamento lógico do endereçamento físico; Cada programa tem seu próprio espaço de endereçamento. Figura 1.1: Execução de memória virtual1 1 Fonte: https://i.ytimg.com/vi/qlH4-oHnBb8/maxresdefault.jpg 5 / 45 Memória Virtual Implementação Generalização dos conceitos de registrador-limite e registrador-base; Ao invés de realizar realocação separada para os segmentos de texto e dados, mapeia o espaço de endereçamento completo na memória física; Vantagens [Favacho, 2009]: O tamanho dos programas não é limitado pela memória do computador; Mais programas podem executar ao mesmo tempo. Pode ser implementada de duas maneiras: Paginação Divide a memória física e a memória virtual em blocos de mesmo tamanho chamados páginas; Segmentação Divide a memória física e a memória virtual em blocos de tamanhos diferentes chamados segmentos. 6 / 45 Memória Virtual 1 Segmentação Memória Virtual Segmentação Paginação 2 Alocação de páginas Tabelas de páginas Políticas de alocação 7 / 45 Memória Virtual Segmentação Segmentação (gráco) Figura 1.2: Divisão da memória em segmentos [Galvin et al., 2013] 8 / 45 Memória Virtual Segmentação Segmentação no hardware Figura 1.3: Algoritmo de segmentação implementado no hardware [Galvin et al., 2013] 9 / 45 Memória Virtual Segmentação Segmentação (exemplo) A referência ao byte 1222 do segmento 0 resultaria numa interrupção, pois o segmento só possui 1000 bytes. Figura 1.4: Exemplo de segmentação [Galvin et al., 2013] 10 / 45 Memória Virtual 1 Paginação Memória Virtual Segmentação Paginação 2 Alocação de páginas Tabelas de páginas Políticas de alocação 11 / 45 Memória Virtual Paginação Paginação [Favacho, 2009] Técnica de gerência de memória onde o espaço de endereçamento virtual e o espaço de endereçamento real são divididos em blocos iguais; Na paginação é permitido o uso de espaço físico de memória não contíguo; As páginas no espaço virtual são chamadas páginas virtuais; A correspondência na memória física é chamada de moldura de página (frame); Quando um processo precisa ser executado, suas páginas são carregadas em frames disponíveis de memória. 12 / 45 Memória Virtual Paginação Memory Management Unit MMU Componente físico que mapeia, em tempo de execução, endereços ló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. 2 O programa do usuário trabalha somente com endereços virtuais. Intel 80x86 possuía quatro registradores para realocação. 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. 13 / 45 Memória Virtual Paginação Registrador de realocação Figura 1.5: Realocação dinâmica utilizando registrador de realocação [Galvin et al., 2013] 14 / 45 Memória Virtual Paginação Implementação Páginas e molduras têm sempre o mesmo tamanho; O tamanho das páginas é uma potência de 2, que normalmente varia entre 2 12 e 222 (4.096 - 4.194.304) bytes; Endereços virtuais utilizam a MMU para mapear endereços físicos e virtuais; O mapeamento é realizado através de tabelas de páginas; Cada página virtual possui uma entrada na tabela ETP Entrada na Tabela de Páginas; A tabela permite ao SO localizar a página correspondente, seja em memória ou no disco; Ainda possui fragmentação interna. 15 / 45 Memória Virtual Paginação Hardware Figura 1.6: Exemplo de paginação no hardware [Galvin et al., 2013] 16 / 45 Memória Virtual Paginação Acesso à memória Passos no acesso à memória: 1 2 3 4 A CPU envia o endereço virtual à MMU; Na MMU o endereço virtual é dividido em (p , d ), onde p é a página e d é o deslocamento dentro da página; A MMU utiliza a página p para acessar a tabela de páginas e recuperar o frame f no qual a página p reside; A MMU substitui o p por f e coloca o endereço (f , d ) no barramento. O endereço virtual é formado pelo número da página virtual (NPV) e um deslocamento dentro da página; O NPV identica unicamente uma página virtual: o deslocamento é o índice; Calcula-se o endereço físico somando o endereço do frame com o deslocamento contido no endereço virtual. 17 / 45 Memória Virtual Paginação Mapeamento (gráco) Figura 1.7: Algoritmo de mapeamento [Favacho, 2009] 18 / 45 Memória Virtual Paginação Exemplo Figura 1.8: Exemplo de organização em páginas [Favacho, 2009] 19 / 45 Memória Virtual Paginação Acesso 1 O programa tenta acessar o endereço 0 (MOVE REG, 0); 2 O endereço virtual 0 é enviado à MMU; 3 A MMU conclui que o endereço virtual está na página 0 (endereços 0 a 4095); 4 frame) 2 O processo de mapeamento está na moldura de página ( (endereços 8192 a 12287); 5 A MMU transforma o endereço entregue para 8192 e coloca o valor no barramento. 20 / 45 Memória Virtual Paginação Acesso (gráco) Figura 1.9: Acesso à página [Favacho, 2009] 21 / 45 Memória Virtual Paginação Outro exemplo 1 O endereço virtual 20500 está a 20 bytes do início da página virtual 5 (endereços virtuais de 20480 a 24575); 2 A página virtual 5 está na página real 3 (endereços reais de 12288 a 16383); 3 Qual o endereço real que será mapeado? 22 / 45 Memória Virtual Paginação Outro exemplo 1 O endereço virtual 20500 está a 20 bytes do início da página virtual 5 (endereços virtuais de 20480 a 24575); 2 A página virtual 5 está na página real 3 (endereços reais de 12288 a 16383); 3 Qual o endereço real que será mapeado? 4 O endereço é mapeado no endereço real 12288 + 20 = 12308. 23 / 45 Memória Virtual Paginação Layout do espaço de memória Figura 1.10: Layout do espaço de endereçamento de memória no Linux [Duarte, 2009] 24 / 45 Alocação de páginas 1 Memória Virtual Segmentação Paginação 2 Alocação de páginas Tabelas de páginas Políticas de alocação 25 / 45 Alocação de páginas Considerações sobre paginação O espaço de endereçamento virtual é, geralmente, bem maior que a memória física disponível; Algumas páginas não estão mapeadas na memória; Cada página virtual do processo possui uma entrada na tabela ETP; Cada entrada possui um bit de validade, que indica se a página está ou não na memória principal; Bit de validade: 1 -> está na memória; 0 -> não está na memória. 26 / 45 Alocação de páginas Bit de validade Figura 2.1: Utilização de bit de validade [Galvin et al., 2013] 27 / 45 Alocação de páginas Validação Quando o processo faz referência a um endereço virtual o sistema verica, através do bit de validade, se a página está ou não na memória principal; Se não estiver é necessário transferir a página da memória secundária para a memória principal; Quando a página é transferida, diz-se que houve um page fault (falha de página) no sistema; A taxa de paginação indica muito ou pouco overhead de processamento. 28 / 45 Alocação de páginas Análise Figura 2.2: Ferramentas de análise da memória virtual 29 / 45 Alocação de páginas Análise II Figura 2.3: Servidor com muita carga 30 / 45 Alocação de páginas Gerenciamento de page fault [Favacho, 2009] 1 Vericar se a referência de memória desse processo está dentro do seu espaço de endereçamento; 2 Se a referência for inválida, o processo é nalizado; 3 Se a referência for válida, toma-se uma das posições de memória para colocar a nova página; 4 É feita uma operação de disco para recuperar a página solicitada; 5 Quando o disco é lido, procede-se à modicação da tabela de páginas, indicando que a página agora está em memória (bit = 1). 6 A instrução é reiniciada, agora com a página requerida na memória. 31 / 45 Alocação de páginas Page fault Figura 2.4: Algoritmo para gerenciar falhas de página (page fault) [Favacho, 2009] 32 / 45 Alocação de páginas Tabela de páginas ETP Guarda informações de mapeamento; Uma das possibilidades de organização é criar uma tabela para cada processo; O crescimento da tabela pode ser grande demais, considerando o aumento do espaço de endereçamento (64 bits); Campos comuns à maior parte das tabelas de página: bit de cache Se a página pode ser colocada em cache; bit de referência Se a página foi referenciada; bit de proteção Permissão da página para o processo; bit de presente/ausente Página presente/ausente em memória física; número do frame Frame onde a página está mapeada 33 / 45 Alocação de páginas 1 Tabelas de páginas Memória Virtual Segmentação Paginação 2 Alocação de páginas Tabelas de páginas Políticas de alocação 34 / 45 Alocação de páginas Tabelas de páginas Localização da ETP A tabela de páginas pode ser localizada tanto na MMU quanto na memória principal; Tabela de páginas totalmente armazenada na MMU; Estratégias híbridas: MMU e memória principal; Alguns fatores considerados na escolha da estratégia Overhead da troca de contexto; Tamanho da tabela de páginas; Simplicidade de implementação; Quantidade de acessos à tabela Custo. 35 / 45 Alocação de páginas Tabelas de páginas Localização na MMU A tabela de páginas é mantida na memória principal; Componentes de hardware auxiliam no controle da tabela de páginas [Galvin et al., 2013]: Page-table base register PTBR Aponta para a tabela de páginas; Page-table length register PTLR Tamanho da tabela de páginas Cada instrução necessita de dois acessos à memória: 1 2 Acessa a ETP; Acessa o dado/instrução. 36 / 45 Alocação de páginas Tabelas de páginas Considerações sobre MMU Utilização de registradores especiais; Cada registrador contém uma entrada da tabela; A tabela de páginas é carregada na troca de contexto direto dos registradores; Vantagens [Favacho, 2009]: Fácil de implementar; Mapeamento eciente; Desvantagens: Inviável para páginas grandes; Aumento do overhead na troca de contexto. 37 / 45 Alocação de páginas Tabelas de páginas Abordagem híbrida Tenta reduzir o custo de realizar dois acessos utilizando um tipo especial de cache chamado TLB Translation Look-aside Buer; A tabela de páginas é armazenada na memória principal e um registrador contém o endereço de início; Quando um endereço virtual é apresentado à MMU primeiro acessa o TLB; Caso não esteja no TLB, realiza o acesso à memória para procurar o endereço; Insere a entrada no TLB para as próximas referências; Vantagens: Custo relativamente baixo; Desvantagens: Alguns acessos à memória precisarão pagar o custo adiciona de acesso. 38 / 45 Alocação de páginas Tabelas de páginas Implementação TLB Figura 2.5: Paginação em hardware utilizando TLB [Galvin et al., 2013] 39 / 45 Alocação de páginas 1 Políticas de alocação Memória Virtual Segmentação Paginação 2 Alocação de páginas Tabelas de páginas Políticas de alocação 40 / 45 Alocação de páginas Políticas de alocação Número de frames Há duas alternativas para determinar o número de frames que cada processo pode manter na memória principal: frames. Cada processo tem um número máximo de frames; Quantos frames alocar para cada processo? Número de frames depende da taxa de paginação. Fixo Todo processo aloca uma quantidade xa de Variável Varia de acordo com a ocupação da memória; Como denir o número máximo por processo? 41 / 45 Alocação de páginas Políticas de alocação Política de alocação Como deve ser alocada a memória livre? Estratégias: Número mínimo de quadros; Alocação igual. Divide m quadros por n processos. Assim, cada processo tem direito a mn quadros; Alocação proporcional, levando em consideração o tamanho do processo. 42 / 45 Alocação de páginas Políticas de alocação Escopo Escopo da política de alocação de páginas: Local Só podem ser selecionados frames alocados ao processo. Número total de quadros do processo permanece constante; Global Os frames são compartilhados entre todos os processos. Todas as páginas são candidatas à realocação; Um processo pode realocar frames de outro; Como gerenciar? É possível reduzir o espaço de memória de outro processo. 43 / 45 Alocação de páginas Políticas de alocação OBRIGADO!!! PERGUNTAS??? 44 / 45 Alocação de páginas Políticas de alocação 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. 45 / 45