Sistemas operacionais Gestão de memória Prof. Diovani Milhorim 1 Memória Virtual – Segmentação Outro método de gestão de memória virtual é a segmentação A segmentação providencia diferentes espaços de endereçamento linear designados segmentos Um segmento é um conjunto de endereços lineares desde 0 até um máximo Segmentos diferentes podem ter dimensões diferentes Um processo pode possuir diferentes segmentos 2 Memória Virtual – Segmentação • Esquema de administração de memória que suporta a visão do usuário da memória, leva em consideração a visão de programadores e compiladores Um programa é uma coleção de segmentos. Um segmento é uma unidade lógica, tal como: • programa principal • procedimento / função • método • objeto • variáveis locais, variáveis globais • pilha • tabela de símbolos, arrays Um segmento pode ser uma únidade lógica. ex: procedimentos (funções), bibliotecas • Gerência de memória pode dar suporte diretamente ao conceito de segmentos 3 Memória Virtual – Segmentação 4 Memória Virtual – Segmentação 5 Memória Virtual – Segmentação Com o tempo, o swapping e a libertação de segmentos origina fragmentação... Segmento 4 (10K) Segmento 4 (10K) Segmento 4 (10K) Segmento 3 (6K) Segmento 3 (6K) Segmento 6 (4K) Segmento 2 (6K) Segmento 2 (6K) Segmento 2 (6K) Segmento 5 (6K) Segmento 5 (6K) Segmento 1 (8K) Fragmentação tempo 6 Memória Virtual – Segmentação A gestão de memória segmentada é feita com recurso a tabelas de descritores de segmentos Selector Deslocamento Endereço virtual Tabela de descritores 0 Descritor 0 1 Descritor 1 2 Descritor 2 3 Descritor 3 Base Endereço Físico Estrutura de um descritor P Bit de presença Base Limite Protecção Controlo 7 Memória Virtual – Segmentação Vantagens: Fácil implementação de partilha de dados Divisão de um processo em segmentos diferentes (e.g., código, heap, stack) Múltiplos espaços de endereçamento linear por processo Desvantagens: Maior fragmentação da memória Impossibilidade de se definirem segmentos maiores do que a memória física (a não ser que se utilize também paginação ou overlays) 8 Memória Virtual – Misto Segmentação com paginação. De forma a tirar partido da paginação e da segmentação pode-se utilizar um esquema misto A um esquema misto também se costuma dar o nome segmentação com paginação Um esquema misto era utilizado no sistema operativo Multics O processador Pentium também contém suporte para este tipo de esquema. 9 Memória Virtual – Misto Segmentação com paginação. O endereçamento é feito em duas etapas O endereço é traduzido em segmentos por uma tabela de segmentos. Depois, cada entrada na tabela de segmentos e traduzida em endereços físicos por uma tabela de página. Duas tabelas são envolvidas (segmentos e páginas). 10 Memória Virtual – Misto Segmentação com paginação. 11 Memória Virtual – Misto Vantagem: Elimina as desvantagens de um esquema puro de segmentação, mas mantém as suas vantagens Desvantagens: Maior complexidade das MMUs Mais acessos à memória para conversão de endereços virtuais em físicos 12 Gestão de Memória – UNIX As primeiras versões do UNIX utilizavam gestão de memória baseadas em partições variáveis e swapping Atualmente, praticamente todas as versões do UNIX utilizam memória virtual paginada Processos responsáveis pela gestão de memória page daemon – gere as page tables e o core map, e executa algoritmo de substituição de páginas swapper – efectua as transferências de páginas entre a memória principal e secundária 13 Gestão de Memória – UNIX Espaço de endereçamento dos processos Dividido em 3 partes: Segmento de texto – contém o código do programa, e nunca é alterado ao longo do tempo Segmento de dados – pode crescer através da reserva dinâmica de memória Segmento do stack – cresce e decresce ao longo do tempo, à medida que vão havendo chamadas a funções NOTA: não é utilizada segmentação, por isso estes segmentos correspondem a um conjunto de páginas Dois processos diferentes podem partilhar o mesmo segmento de texto (se o programa executado for o mesmo) 14 Gestão de Memória – UNIX Espaço de endereçamento dos processos Memória Espaço virtual do processo A Processo A Processo B Stack Stack Dados Dados Texto Texto Espaço virtual do processo B frames SO 15 Gestão de Memória – UNIX Core Map Estrutura com informações acerca das page frames Contém uma entrada por frame Tipicamente cada entrada do Core Map tem as seguintes informações Índices do próximo frame livre e do anterior Nº de bloco em disco correspondente à página carregada Índice para a process table do processo ao qual pertence a página carregada no frame Bit que indica se o framese encontra livre Bit que indica se está ocorrendo uma transferência de página do frame para o disco (e vice-versa) Bit que indica se a página carregada deve permanecer sempre na memória RAM 16 Gestão de Memória – UNIX Tanto o Core Map como o núcleo (kernel) do sistema operativo permanecem sempre carregados na memória principal Memória Principal ... Sempre carregados em memória principal Moldura 2 Moldura 1 Moldura 0 Core Map Kernel do SO 17 Gestão de Memória – UNIX Algoritmo de substituição de páginas Originalmente era utilizado o algoritmo do relógio sobre o core map À medida que as memórias foram crescendo em dimensão, verificou-se que este algoritmo perdia eficiência O algoritmo foi modificado de modo a ter dois ponteiros (Twohanded clock) O sistema tenta sempre manter um conjunto de frames livres na memória principal (tipicamente ¼ dos frames) – o page daemon acorda quando não há frames livres suficientes 18 Gestão de Memória – Linux Esquema de paginação por demanda sem conceito de Working Set Algoritmo de substituição de páginas Processo kswapd (daemon) – acorda de 1 em 1 segundo para ver se há suficientes frames livres O algoritmo de substituição procura diferentes tipos de páginas a substituir: Páginas em cache – semelhante ao relógio Páginas partilhadas – descarta as que não estão a ser utilizadas por nenhum utilizador Restantes páginas – analisadas por ordem crescente de endereço virtual, com um funcionamento semelhante ao algoritmo do relógio Processo bdflush (daemon) – efetua cópias de páginas modificadas para o disco 19