Capítulo 9: Gerência de Memória Video Assuntos Cenário Video Swapping Alocação contígua Paginação Segmentação Paginação com segmentação Operating System Concepts 3.2 Silberschatz, Galvin and Gagne 2002 Cenário Programa tem que ser carregado em memória e colocado dentro de um processo para rodar Fila de entrada Video Conjunto de processos esperando ser carregados Programas de usuário passam por vários passos antes de rodar Operating System Concepts 3.3 Silberschatz, Galvin and Gagne 2002 Definição de Endereços Quando são definidos os endereços de memória de instruções e dados Video Tempo de compilação Tempo de carga Tempo de execução Operating System Concepts 3.4 Silberschatz, Galvin and Gagne 2002 Compilação Se a locação de memória é conhecida a priori, código absoluto é gerado Código absoluto tem que ser recompilado se a localização do programa em memória tem que ser mudada Operating System Concepts 3.5 Video Silberschatz, Galvin and Gagne 2002 Tempo de Carga Para que o programa possa ser carregado em qualquer posição de memória, o código deve ser relocável Código relocável possui uma tabela com todas as posições do programa onde deve-se somar o valor da posição de memória inicial Operating System Concepts 3.6 Video Silberschatz, Galvin and Gagne 2002 Tempo de Execução É possível trocar endereços durante a execução desde que se tenha hardware que suporte isto (transparente ao programa) O hardware produz mapas de endereços (com registradores base e limite) Operating System Concepts 3.7 Video Silberschatz, Galvin and Gagne 2002 Passos no Processamento de um Programa de Usuário Video Operating System Concepts 3.8 Silberschatz, Galvin and Gagne 2002 Endereços Lógicos e Físicos Diferença básica Video Endereços lógicos são usados pela CPU (endereços virtuais) Endereços físicos são vistos pela memória Endereços lógicos e físicos são os mesmos se a definição de endereços é feita em tempo de compilação ou carga Operating System Concepts 3.9 Silberschatz, Galvin and Gagne 2002 Unidade de Gerência de Memória (MMU) Hardware que mapeia endereços virtuais em endereços físicos O registrador de relocação é adicionado a cada endereço gerado na CPU antes de ser visto pela memória Programas usam endereços lógicos, nunca vendo os endereços físicos Operating System Concepts 3.10 Video Silberschatz, Galvin and Gagne 2002 Relocação Dinâmica usando Registrador de Relocação Video Operating System Concepts 3.11 Silberschatz, Galvin and Gagne 2002 Carga Dinâmica Rotina só é carregada quando chamada Melhor utilização de memória Video Rotinas que não são usadas nunca são carregadas Útil quando muito código é necessário para situações infrequentes Tratamento de erros Não necessita de suporte do SO Operating System Concepts 3.12 Silberschatz, Galvin and Gagne 2002 Ligação Dinâmica Ligação (linking) feito em tempo de execução Um stub fica no lugar da rotina Video é usado para localizá-la na biblioteca O stub é substituído pelo endereço da rotina, que é então executada O SO tem que saber se a rotina está no espaço de memória do processo Isto é especialmente útil para bibliotecas Operating System Concepts 3.13 Silberschatz, Galvin and Gagne 2002 Overlays Mantém em memória só as intruções e dados necessárias no momento Necessário quando o processo é maior que a memória alocada para ele Implementado pelo usuário Video Não é necessário suporte do SO Projeto dos overlays é complexo Operating System Concepts 3.14 Silberschatz, Galvin and Gagne 2002 Overlays para um Montador de Duas Passadas Video Operating System Concepts 3.15 Silberschatz, Galvin and Gagne 2002 Swapping Método que tira um processo temporariamente da memória Video Ele é armazenado em disco Pode ser recarregado e continuar a execução Área de Swap Partição ou arquivo usado para swapping Roll out, roll in – variante de swap usada em escalonamento por prioridades Operating System Concepts 3.16 Silberschatz, Galvin and Gagne 2002 Swapping A maior parte do tempo é gasta na transferência para disco Video O tempo depende da quantidade de memória a ser copiada Versões de swapping são encontradas em vários sistemas (Unix, Linux, Windows) Operating System Concepts 3.17 Silberschatz, Galvin and Gagne 2002 Diagrama Video Operating System Concepts 3.18 Silberschatz, Galvin and Gagne 2002 Alocação contígua A memória principal é dividida normalmente em duas partes Video SO residente Memória baixa, junto com vetor de interrupções Processos do usuário Memória alta Operating System Concepts 3.19 Silberschatz, Galvin and Gagne 2002 Partição Única Processos são protegidos de outros usando o registrador de relocação Video Isto protege também código e dados do SO O registrador de relocação contém o valor do menor endereço físico O registrador de limite contém o valor do maior endereço físico Endereços tem que ser menores que o limite Operating System Concepts 3.20 Silberschatz, Galvin and Gagne 2002 Suporte de Hardware Video Operating System Concepts 3.21 Silberschatz, Galvin and Gagne 2002 Alocação em várias partições Processo é colocado em área Video livre grande suficiente para ele SO mantém info sobre partições alocadas e “buracos” OS OS OS OS process 5 process 5 process 5 process 5 process 9 process 9 process 8 process 2 Operating System Concepts process 10 process 2 process 2 3.22 process 2 Silberschatz, Galvin and Gagne 2002 Como Fazer Alocação Dinâmica First-Fit: a primeira área livre grande o suficiente é alocada Best-Fit: A área que gera a menor sobra é escolhida Video É necessário varrer toda a lista de “buracos” Worst-Fit: A maior área é escolhida Gera a maior sobra Operating System Concepts 3.23 Silberschatz, Galvin and Gagne 2002 Fragmentação Externa: existe memória para satisfazer um pedido, mas esta não é contígua Interna: existe uma sobra em cada partição de memória alocada Operating System Concepts 3.24 Video Silberschatz, Galvin and Gagne 2002 Eliminando a Fragmentação Externa Compactação Video Mover as partições de forma a juntar os “buracos” Só é possível se a relocação é dinâmica, e pode ser feita em tempo de execução Operating System Concepts 3.25 Silberschatz, Galvin and Gagne 2002 Problemas com E/S Se um bloco de memória está sendo usado como “buffer” para E/S, ele não pode ser retirado da memória Solução Video Manter o bloco em memória (latch) Só fazer E/S para buffers no espaço de memória do SO Operating System Concepts 3.26 Silberschatz, Galvin and Gagne 2002 Paginação O espaço de endereçamento lógico de um processo pode não ser contíguo Video Memória física é alocada quando necessário Memória é dividida em partes do mesmo tamanho chamadas quadros (frames) Memória lógica é dividida em páginas do mesmo tamanho Operating System Concepts 3.27 Silberschatz, Galvin and Gagne 2002 Paginação Para rodar um programa com n páginas, n quadros livres são usados Uma tabela faz a tradução dos endereços lógicos para físicos Paginação gera fragmentação interna Operating System Concepts 3.28 Video Silberschatz, Galvin and Gagne 2002 Esquema de Tradução de Endereços Os endereços gerados pela CPU são divididos em Video Página (p) Usado como índice na tabela de páginas que contém o endereço inicial de cada página na memória física Offset (d) Combinado com o endereço inicial define o endereço físico Operating System Concepts 3.29 Silberschatz, Galvin and Gagne 2002 Arquitetura de tradução de Endereços Video Operating System Concepts 3.30 Silberschatz, Galvin and Gagne 2002 Exemplo de Paginação Video Operating System Concepts 3.31 Silberschatz, Galvin and Gagne 2002 Exemplo de Paginação Video Operating System Concepts 3.32 Silberschatz, Galvin and Gagne 2002 Quadros Livres Video Antes da Alocação Operating System Concepts Depois da Alocação 3.33 Silberschatz, Galvin and Gagne 2002 Implementação de uma Tabela de Páginas Tabela de páginas mantida na Video memória principal Registrador de base da tabela de páginas (PTBR) aponta para a tabela de páginas Registrador de tamanho da tabela de páginas (PTLR) indica o tamanho Cada acesso a dados/instruções requer dois acessos à memória Operating System Concepts 3.34 Silberschatz, Galvin and Gagne 2002 TLB O problema pode ser resolvido usando um cache de hardware chamado memória associativa ou translation lookaside buffer(TLB) Operating System Concepts 3.35 Video Silberschatz, Galvin and Gagne 2002 Memória Associativa Permite busca paralela Video Page # Frame # Para traduzir um endereço lógico Se ele está na tabela, o endereço físico é obtido imediatamente Se não, a tabela de páginas é lida da memória Operating System Concepts 3.36 Silberschatz, Galvin and Gagne 2002 Hardware de Paginação com TLB Video Operating System Concepts 3.37 Silberschatz, Galvin and Gagne 2002 Tempo Efetivo de Acesso Busca Associativa = unidades de tempo Video Assuma ciclo de memória dura 1 microsegundo Hit ratio – porcentagem em que a página é encontrada nos registradores associativos Hit ratio = Tempo Efetivo de Acesso (EAT) EAT = (1 + ) + (2 + )(1 – ) =2+– Operating System Concepts 3.38 Silberschatz, Galvin and Gagne 2002 Proteção de Memoria Proteção de memória usa um bit de proteção para cada quadro O bitVálido-inválido indica Video “válido” a página está no espaço de endereçamento lógico do processo A página é “legal” “inválido” a página não pertence ao espaço de endereçamento lógico Ela não pode ser acessada Operating System Concepts 3.39 Silberschatz, Galvin and Gagne 2002 Bit Válido (v) ou Inválido (i) na Tabela de Páginas Video Operating System Concepts 3.40 Silberschatz, Galvin and Gagne 2002 Estrutura da Tabela de Páginas Paginação Hierárquica Tabela de Páginas Video “Hashed” Tabela de Páginas Invertida Operating System Concepts 3.41 Silberschatz, Galvin and Gagne 2002 Tabela de Páginas Hierárquica O espaço de endereçamento Video lógico é dividido em várias tabelas de páginas A técnica mais simples é uma tabela em dois níveis Operating System Concepts 3.42 Silberschatz, Galvin and Gagne 2002 Exemplo de Paginação em Dois Níveis Um endereço lógico (numa máquina de 32 bits com páginas de 4K) é dividido em Video Um número de página de 20 bits Um offset de 12 bits Como a tabela também é paginada, o número de página também é dividido em Um número de página de 10 bits Um offset de 10 bits Operating System Concepts 3.43 Silberschatz, Galvin and Gagne 2002 Exemplo de Paginação em Dois Níveis O endereço lógico é dado por page number pi 10 Video page offset p2 d 10 12 Onde pi é um índice para a tabela de páginas externa, e p2 é em que linha da tabela a página está na tabela externa Operating System Concepts 3.44 Silberschatz, Galvin and Gagne 2002 Esquema de Dois Níveis Video Operating System Concepts 3.45 Silberschatz, Galvin and Gagne 2002 Tradução de Endereços Tradução de endereços para dois níveis de paginação com endereços de 32 bits Operating System Concepts 3.46 Video Silberschatz, Galvin and Gagne 2002 Tabelas de Página usando Hash Comum em espaços de endereçamento maiores que 32 bits O número da página virtual é distribuido na tabela de página usando uma função de hash Video Ele contêm uma seqüência ou lista de elementos que caem na mesma posição Os números virtuais são comparados nesta lista quando procura-se por uma página. Se encontrada, o quadro físico pode ser acessado Operating System Concepts 3.47 Silberschatz, Galvin and Gagne 2002 Tabela de Página usando Hash Video Operating System Concepts 3.48 Silberschatz, Galvin and Gagne 2002 Tabela de Página Invertida Uma entrada para cada página real (bloco) de memória Cada entrada contém o endereço virtual da página armazenada naquele bloco da memória, com informações sobre o processo do qual essa página faz parte Operating System Concepts 3.49 Video Silberschatz, Galvin and Gagne 2002 Tabela de Página Invertida Diminui a quantidade de memória necessária para Video armazenar cada tabela de páginas, mas aumenta o tempo de pesquisa na tabela em cada referência a uma página Uso de tabela hash para limitar a pesquisa a apenas uma — ou no máximo a algumas — entradas na tabela de páginas Operating System Concepts 3.50 Silberschatz, Galvin and Gagne 2002 Arquitetura de Tabela de Página Invertida Video Operating System Concepts 3.51 Silberschatz, Galvin and Gagne 2002 Páginas Compartilhadas Compartilhamento de Código Uma cópia de código somente Video para leitura (reentrante) compartilhada entre processos (ex.: editores de texto,compiladores, sistemas de janelas) Código compartilhado deve aparecer na mesma localização no espaço de endereçamento lógico de todos processos Operating System Concepts 3.52 Silberschatz, Galvin and Gagne 2002 Páginas Compartilhadas Códigos e Dados privados Video Cada processo mantém uma cópia separada de códigos e dados As páginas para códigos e dados privados podem aparecer em qualquer endereço no espaço de endereçamento lógico Operating System Concepts 3.53 Silberschatz, Galvin and Gagne 2002 Exemplo de Páginas Compartilhadas Video Operating System Concepts 3.54 Silberschatz, Galvin and Gagne 2002 Segmentação Esquemas de gerenciamento de memória que suportam a visão do usuário da memória Um programa é uma coleção de segmentos. Um segmento é uma unidade lógica, como por exemplo: Operating System Concepts Video programa principal, procedimento, função, variáveis locais, variáveis globais, bloco comum, pilha, tabela de símbolos, vetores 3.55 Silberschatz, Galvin and Gagne 2002 Um Programa na Visão do Usuário Video Operating System Concepts 3.56 Silberschatz, Galvin and Gagne 2002 Visão Lógica da Segmentação 1 4 1 Video 2 3 2 4 3 user space Operating System Concepts physical memory space 3.57 Silberschatz, Galvin and Gagne 2002 Arquitetura da Segmentação Endereço lógico consiste de duas partes: Video <número do segmento, posição nesse segmento> Tabela de Segmentos– mapeia endereços físicos bi-dimensionais Cada entrada na tabela possui: base – contem o endereço físico inicial no qual o segmento reside na memória limite – especifica o tamanho do segmento Operating System Concepts 3.58 Silberschatz, Galvin and Gagne 2002 Arquitetura da Segmentação (Cont.) registrador base da tabela de segmentos (STBR) aponto Video para a localização da tabela de segmentos na memória. registrador de tamanho da tabela de segmentos (STLR) indica o número de segmentos usados por um programa; número de segmento s é legal se s < STLR. Operating System Concepts 3.59 Silberschatz, Galvin and Gagne 2002 Arquitetura da Segmentação (Cont.) Relocação. Video Dinâmica Por tabela de segmento Compartilhamento. Segmentos compartilhados Mesmo número de segmento Alocação. Primeira (first fit)/ Melhor (best fit) Fragmentação Externa Operating System Concepts 3.60 Silberschatz, Galvin and Gagne 2002 Arquitetura da Segmentação (Cont.) Proteção. Com cada entrada na tabela de segmento é associado: Bit de validação = 0 Þ segmento ilegal Privilégios de leitura/ escrita/ execução Video Bits de proteção associados com segmentos; compartilhamento de código ocorre em nível de segmento Uma vez que segmentos variam em tamanho, alocação dememória é um problema dinâmico Um exemplo de segmentação é apresentado no diagrama a seguir Operating System Concepts 3.61 Silberschatz, Galvin and Gagne 2002 Hardware de Segmentação Video Operating System Concepts 3.62 Silberschatz, Galvin and Gagne 2002 Examplo Video Operating System Concepts 3.63 Silberschatz, Galvin and Gagne 2002 Compartihamento de Segmentos Video Operating System Concepts 3.64 Silberschatz, Galvin and Gagne 2002 Segmentação com Paginação – MULTICS O sistema MULTICS resolveu Video problemas de fragmentação externa e demora na procura paginando os segmentos A solução é diferente da segmentação pura pois cada entrada na tabela de segmentos contém não o endereço base do segmento, mas sim o endereço base da tabela de páginas desse segmento. Operating System Concepts 3.65 Silberschatz, Galvin and Gagne 2002 Esquema de Tradução de Endereços do MULTICS Video Operating System Concepts 3.66 Silberschatz, Galvin and Gagne 2002 Segmentação com Paginação – Intel 386 Como será apresentado no próximo diagrama, o Intel 386 usa segmentação com paginação para gerenciamento de memória com um esquema de paginação em dois níveis Operating System Concepts 3.67 Video Silberschatz, Galvin and Gagne 2002 Tradução de Endereços no Intel 386 Video Operating System Concepts 3.68 Silberschatz, Galvin and Gagne 2002