Gerência de memória II Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2016 1 / 35 Sumário 1 Particionamento 2 Memória Virtual Segmentação Paginação 2 / 35 Particionamento 1 Particionamento 2 Memória Virtual Segmentação Paginação 3 / 35 Particionamento Múltiplas partições Cada partição deve conter um processo; O número máximo de processos está limitado ao número de partições; Quando uma partição está livre, um processo é selecionado e carregado da la de pronto; Ao m da execução, a partição ca livre para o próximo processo; Buraco ou hole: partição livre. Figura 1.1: Utilização de múltiplas partições [Galvin et al., 2013] 4 / 35 Particionamento Partições xas Partições de tamanho xo; Sistema operacional guarda uma tabela de partições, indicando partes livres e ocupadas; Havendo mais processos que partições, uma ou mais las são formadas. Figura 1.2: Partições xas [Favacho, 2009] 5 / 35 Particionamento Partições variáveis Figura 1.3: Alocação com partições variáveis [Favacho, 2009] 6 / 35 Particionamento Mapa de bits Tamanho do mapa depende do tamanho da memória e da unidade de alocação; Unidade de alocação grande: desperdício de memória; Unidade de alocação pequena: mapas de bits grandes. Não é muito utilizado, pois a busca por espaços livres pode ser lenta. Figura 1.4: Exemplo de mapa de bits [Favacho, 2009] 7 / 35 Particionamento Lista encadeada Nos seguintes endereços existem buracos na memória, ou seja, partições não alocadas: 5-7; 18-19; 29-31. Figura 1.5: Exemplo de buraco na lista [Favacho, 2009] 8 / 35 Memória Virtual 1 Particionamento 2 Memória Virtual Segmentação Paginação 9 / 35 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). 10 / 35 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 2.1: Execução de memória virtual1 1 Fonte: https://i.ytimg.com/vi/qlH4-oHnBb8/maxresdefault.jpg 11 / 35 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. 12 / 35 Memória Virtual 1 Particionamento 2 Memória Virtual Segmentação Paginação Segmentação 13 / 35 Memória Virtual Segmentação Conceitos Quando começa a escrever o código o programador pensa o programa como um conjunto de métodos, procedimentos ou funções; Pode incluir também várias estruturas de dados; Normalmente, ao escrever o código, ele não se preocupa com o o endereço de memória que cada uma dessas estruturas vai ocupar; A segmentação se baseia na visão do programador: o programa é uma coleção de segmentos; Segmentos são unidades lógicas. Um compilador da linguagem C pode criar, por exemplo, os seguintes segmentos: Código; Variáveis globais; A heap, de onde a memória é alocada; As pilhas (stacks) utilizadas por cada thread; A biblioteca C padrão (stdlib.h, stdio.h, etc). Bibliotecas cuja alocação acontece no momento da compilação podem ocupar segmentos diferentes na memória. 14 / 35 Memória Virtual Segmentação Segmentação (gráco) Figura 2.2: Divisão da memória em segmentos [Galvin et al., 2013] 15 / 35 Memória Virtual Segmentação Mapeamento O endereço lógico do segmento constitui uma dupla: < segment _number , oset > O mapeamento entre endereços lógicos e físicos é controlado pela tabela de segmentos. Tabela de segmentos Mapeia endereços físicos bi-dimensionais. Cada entrada contém as seguintes informações: base endereço físico inicial do segmento na memória; limit tamanho do segmento. Segment-table base register (STBR) Endereço da tabela de segmentos na memória; Segment-table length register (STLR) Número de segmentos utilizados por um programa. O segmento número s é ilegal se s < STLR . 16 / 35 Memória Virtual Segmentação Visão lógica Figura 2.3: Visão lógica da segmentação [Galvin et al., 2013] 17 / 35 Memória Virtual Segmentação Proteção e hardware O segmento s funciona como um índice na tabela de segmentos; A cada entrada na tabela associa-se os seguintes dados: bit de validação = 0 => segmento ilegal privilégios de leitura/execução/escrita A proteção é feita com os bits de proteção associados aos segmentos; Se o segmento for inválido, uma interrupção é gerada; O compartilhamento de memória se dá nos segmentos; Como os segmentos podem variar de tamanho, a segmentação é um problema de alocação dinâmica de memória. 18 / 35 Memória Virtual Segmentação Segmentação no hardware Figura 2.4: Algoritmo de segmentação implementado no hardware [Galvin et al., 2013] 19 / 35 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 2.5: Exemplo de segmentação [Galvin et al., 2013] 20 / 35 Memória Virtual 1 Particionamento 2 Memória Virtual Segmentação Paginação Paginação 21 / 35 Memória Virtual Paginação Conceitos [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; Quando um processo precisa ser executado, suas páginas são carregadas em frames disponíveis de memória. 22 / 35 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 212 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. 23 / 35 Memória Virtual Paginação Mapeamento O programa faz referência apenas a endereços virtuais; Ao executar o programa, as páginas virtuais são transferidas da memória secundária (disco) para os frames na memória principal; Quando o programa faz referência a um endereço virtual o mecanismo de mapeamento localiza, na ETP, o endereço físico do frame; 24 / 35 Memória Virtual Paginação Modelo Figura 2.6: Modelo de paginação [Galvin et al., 2013] 25 / 35 Memória Virtual Paginação Acesso à memória Passos no acesso à memória: 1 A CPU envia o endereço virtual à MMU; 2 Na MMU o endereço virtual é dividido em (p , d ), onde p é a página e d é o deslocamento dentro da página; 3 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; 4 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. 26 / 35 Memória Virtual Paginação Mapeamento (gráco) Figura 2.7: Algoritmo de mapeamento [Favacho, 2009] 27 / 35 Memória Virtual Paginação Hardware Figura 2.8: Exemplo de paginação no hardware [Galvin et al., 2013] 28 / 35 Memória Virtual Paginação Exemplo Figura 2.9: Exemplo de organização em páginas [Favacho, 2009] 29 / 35 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 5 O processo de mapeamento está na moldura de página (frame) 2 (endereços 8192 a 12287); A MMU transforma o endereço entregue para 8192 e coloca o valor no barramento. 30 / 35 Memória Virtual Paginação Acesso (gráco) Figura 2.10: Acesso à página [Favacho, 2009] 31 / 35 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 O endereço é mapeado no endereço real 12288 + 20 = 12308. 32 / 35 Memória Virtual Paginação Outro exemplo (gráco) Figura 2.11: Acesso à página [Favacho, 2009] 33 / 35 Memória Virtual Paginação Considerações 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. Questão em aberto: como compartilhar páginas? 34 / 35 Memória Virtual Paginação OBRIGADO!!! PERGUNTAS??? 35 / 35 Memória Virtual Paginação 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. 36 / 35