Introdução Sistemas Operacionais ❚ Multiprogramação implica em manter-se vários processos em memória ❚ Memória necessita ser alocada de forma eficiente para permitir o máximo possível de processos ❚ Existem diferentes técnicas para gerência de memória Capítulo 6 Revisão: Fev/2003 ❙ Dependem do hardware do processador Oliveira, Carissimi, Toscani 2a edição Instituto de Informática - UFRGS Gerência de memória Sistemas Operacionais Considerações gerais Memória lógica e memória física ❚ Um sistema de memória possui pelo menos dois níveis: ❚ Memória lógica ❙ Memória principal: acessada pela CPU ❙ Memória secundária: discos ❙ É aquela que o processo “enxerga” ❙ Endereços lógicos são aqueles manipulados por um processo ❚ Programas são armazenados em disco ❚ Memória física ❙ Monotarefa: gerência é simples ❙ Multitarefa: complexa ❚ Algoritmos de gerência de memória dependem de facilidades disponíveis pelo hardware da máquina Sistemas Operacionais 3 ❙ Implementada pelos circuitos integrados de memória ❙ Endereços físicos são aqueles que correspondem a uma posição real de memória Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS Executar um programa se traduz em transferi-lo da memória secundária à memória primária ❚ Qualquer sistema operacional tem gerência de memória Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❙ 2 Sistemas Operacionais 4 Endereço lógico versus endereço físico Unidade de gerência de memória ❚ Memory Management Unit (MMU) ❚ Hardware que faz o mapeamento entre endereço lógico e endereço físico ❚ Espaço lógico de um processo é diferente do espaço físico ❚ Programas de usuários “vêem” apenas endereços lógicos ❚ Endereços lógicos são transformados em endereços físicos no momento de execução dos processos Memória 5 Sistemas Operacionais 100 Registrador Limite Superior ❙ Mecanismos de suporte para proteção, carga de programas, tradução de endereços lógicos a endereços físicos, etc... 6 ❙ Alocação de um descritor de processos ❙ Alocação de áreas de memória para código, dados e pilha 123 não não Memória sim Registrador de Limite 200 Registrador de Base 500 123 623 > não ❚ Transformação é feita através de uma série de passos, alguns com a ajuda do próprio programador Interrupção (Endereço Ilegal) + Memória sim Interrupção (Endereço Ilegal) 7 ❙ Compilação, diretivas de compilação e/ou montagem, ligação, etc... ❚ Amarração de endereços (binding) Oliveira, Carissimi, Toscani sim > Instituto de Informática - UFRGS < Interrupção (Endereço Ilegal) Oliveira, Carissimi, Toscani ❚ Complexidade variável de acordo com a funcionalidade oferecida ❚ Um programa deve ser transformado em um processo para pode ser executado 799 123 Processador Instituto de Informática - UFRGS End. físico Execução de programas Registrador Limite Inferior Sistemas Operacionais End. lógico MMU Sistemas Operacionais Exemplos de MMU Processador Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS CPU Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❙ Endereço lógico: gerado pela CPU (endereço virtual) ❙ Endereço físico: endereços enviados para a memória RAM Sistemas Operacionais 8 Amarração de endereços (binding) Transformação de programa em processo ❚ Atribuição de endereços (posições de memória) para código e dados pode ser feita em três momentos diferentes: ... ❙ Em tempo de compilação Compilador ❚ Diferenciação entre o endereço lógico e o endereço físico ❙ Como traduzir endereço lógico em endereço físico ❙ Código absoluto e código relocável Sistemas Operacionais Programa Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❙ Em tempo de execução Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❙ Em tempo de carga 9 RAM Fase de ligação Fase de carga 10 ❚ Carregador relocador ❙ Correção de todas as referências a memória de forma a corresponder ao endereço de carga do programa ❚ Necessidade de identificar quais endereços devem ser corrigidos ❙ Durante execução do programa sua localização física pode ser alterada ! e.g.; procedimento de swapping ❙ Via software: carregador relocador ❙ Via hardware: carregador absoluto 11 ❙ Código relocável ❙ Mapeamento das posições a serem corrigidas é mantida através de tabelas ❚ Código executável mantém informações de relocação na forma de tabelas Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ Necessidade de traduzir endereços lógicos à endereços físicos ❚ Relocação é a técnica que fornece realiza essa tradução Oliveira, Carissimi, Toscani Fase de compilação executável Biblioteca estática Código relocável ❚ Programador não tem conhecimento onde o programa será carregado na memória ❚ Endereço só é conhecido no momento da carga Instituto de Informática - UFRGS objeto Carregador Sistemas Operacionais Carregador absoluto versus carregador relocador Sistemas Operacionais Ligador ❙ No momento da carga o programa executável é interpretado e os endereços corrigidos Sistemas Operacionais 12 Código absoluto Mecanismos básicos de gerência de memória ❚ Carregador absoluto ❚ Um programa (processo) para ser executado deve estar na memória ❙ Onde deve ser carregado? ! Problema de alocação de memória ❚ Código executável absoluto não necessita manter tabelas de endereços a serem corrigidos ❚ Endereço de carga ❙ Fixo pelo programa (programador) ❙ Qualquer ! Correção pode ser feita automáticamente, de forma transparente, a partir de registradores de base Simples Alocação Oliveira, Carissimi, Toscani Não contígua Particionada 14 Alocação contígua simples ❚ Sistema mais simples ❚ Memória principal é dividida em duas partições: Estática Dinâmica ❙ Sistema operacional (parte baixa da memória) ❙ Processo do usuário (restante da memória) Paginação Segmentação Segmentação com paginação Instituto de Informática - UFRGS Contígua ❙ Determinação de áreas livres e ocupadas ❙ Racionalizar a ocupação da memória Sistemas Operacionais Mecanismos para alocação de memória Instituto de Informática - UFRGS ❚ Necessidade de gerenciamento da memória 13 Sistemas Operacionais ❚ Até estudarmos memória virtual supor que para um programa ser executada ele necessita estar carregado completamente em memória Sistemas Operacionais ❙ Código absoluto versus código relocável ❙ Necessidade de espaço contíguo ou não Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ A alocação de memória depende de: 15 ❚ Usuário tem controle total da memória podendo inclusive acessar a área do sistema operacional ❙ e.g. DOS (não confiável) Oliveira, Carissimi, Toscani Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❙ Não realiza correção de endereços no momento da carga do programa em memória ❚ Evolução: ❙ Inserir proteção através de mecanismos de hardware + software ! Registradores de base e de limite ! Memory Management Unit (MMU) Sistemas Operacionais 16 Alocação contígua particionada (1) Alocação contígua particionada (2) ❚ O sistema operacional é responsável pelo controle das partições mantendo informações como: Instituto de Informática - UFRGS ❚ Duas formas básicas: ❙ Alocação contígua com partições fixa (estática) ❙ Alocação contígua com partições variáveis (dinâmica) Sistemas Operacionais Oliveira, Carissimi, Toscani ❙ Partições alocadas ❙ Partições livres ❙ Tamanho das partições ❙ Dividir a memória em blocos (partições) ❙ Cada partição pode receber um processo (programa) ❙ Grau de multiprogramação é fornecido pelo número de partições ! Importante: não considerando a existência de swapping Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ Existência de múltiplas partições ❚ Imposta pela multiprogramação ❚ Filosofia: 17 OS processo 5 processo 5 processo 5 processo 5 processo 9 processo 9 processo 8 processo 2 processo 3 processo 2 processo 2 processo 2 18 ❚ Com código absoluto ❙ Um processo só pode ser carregado na área de memória (partição) para a qual foi compilado ❙ Pode haver disputa por uma partição mesmo tendo outras livres ! Processo é mantido no escalonador de longo prazo (termo) ! Empregar swapping 19 ❚ Com código relocável Oliveira, Carissimi, Toscani ❙ Processos podem ser carregados em qualquer partição? ! Depende se código é absoluto ou relocável ❙ Número de processos que podem estar em execução ao mesmo tempo ! Sem swapping → igual ao número de partições (máximo) ! Com swapping → maior que número de partições ❙ Programa é maior que o tamanho da partição ! Não executa a menos que se empregue um esquema de overlay Instituto de Informática - UFRGS Oliveira, Carissimi, Toscani OS Gerenciamento de partições fixas ❚ Memória disponível é dividida em partições de tamanho fixo que podem ser do mesmo tamanho ou não ❚ Questões: Instituto de Informática - UFRGS OS Sistemas Operacionais Alocação contígua particionada fixa Sistemas Operacionais OS ❙ Um processo de tamanho menor ou igual ao tamanho da partição pode ser carregado em qualquer partição disponível ❙ Se todas as partições estão ocupadas, duas soluções: ! Processo é mantido no escalonador de longo prazo (termo) ! Empregar swapping (escalonamento a médio prazo) Sistemas Operacionais 20 Fragmentação Interna Paliativo para reduzir fragmentação interna ❚ Problema da alocação fixa é uso ineficiente da memória principal ❚ Um processo, não importando quão pequeno seja, ocupa uma partição inteira ❚ Partições de tamanho diferentes Sist. Operacional 8M ❙ Fragmentação interna 2M 4M 8M 5M 8M 8M Sistemas Operacionais 6M 8M Oliveira, Carissimi, Toscani Fragmentação interna Instituto de Informática - UFRGS 8M Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS Sist. Operacional 21 Uma fila por partição 23 Novos Processos Sisop Uma fila para todas partições Sisop Novos Processos Oliveira, Carissimi, Toscani ❙ Partições de igual tamanho ! Não importa qual partição é utilizada ❙ Partições de diferentes tamanhos ! Atribui o processo a menor partição livre capaz de armazená-lo ! Processo são atribuídos a partições de forma a minimizar o desperdício de memória (fragmentação interna) Instituto de Informática - UFRGS Oliveira, Carissimi, Toscani 22 Algoritmos para alocação de partições fixas(2) ❚ Se código é absoluto a alocação é determinada na fase de montagem, compilação ou ligação ❚ Se código é relocável: Instituto de Informática - UFRGS 12 M Sistemas Operacionais Algoritmos para alocação de partições fixas(1) Sistemas Operacionais 8M Sistemas Operacionais 24 Alocação particionada dinâmica Fragmentação externa 320 K Processo 2 224 K Processo 3 288 K 64 K Processo 1 Processo 3 ❙ Pode haver memória disponível, mas não contígua ! Fragmentação externa Sisop 320 K Processo 1 320 K 224 K Processo 4 128 K 96 K 288 K Processo 3 288 K 64 K 64 K Sistemas Operacionais Criação processo 120K 25 Processo 4 128 K 96 K Processo 3 288 K 64 K 26 ❚ Determinar qual área de memória livre será alocada a um processo ❚ Sistema operacional mantém uma lista de lacunas ❙ Relocar as partições de forma a eliminar os espaços entre elas e criando uma área contígua ❙ Desvantagem: ! Consumo do processador ! Acesso a disco ❙ Pedaços de espaços livres em memória ❚ Necessidade de percorrer a lista de lacunas sempre que um processo é criado ❚ Acionado somente quando ocorre fragmentação ❚ Necessidade de código relocável 27 ❙ Como percorrer essa lista?? Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS Oliveira, Carissimi, Toscani 320 K Gerenciamento de partições dinâmicas ❚ Reunir espaços adjacentes de memória ❚ Empregar compactação Instituto de Informática - UFRGS Processo 1 Sistemas Operacionais Soluções possíveis fragmentação externa Sistemas Operacionais SisOp Exemplo: Oliveira, Carissimi, Toscani Processo 1 SisOp ❚ A execução de processos pode criar pedaços livres de memória Instituto de Informática - UFRGS SisOp Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ Objetivo é eliminar a fragmentação interna ❚ Processos alocam memória de acordo com suas necessidades ❚ Partições são em número e tamanho variáveis Sistemas Operacionais 28 Algoritmos para alocação contígua dinâmica Exemplos: Algoritmos alocação contígua dinâmica ❚ Best fit A ❙ tam_bloco > tam_processo ❚ Circular fit ❙ Variação do first-fit 29 Sistemas Operacionais C 30k C 30k SisOp SisOp SisOp Best-fit Worst-fit First-Fit 30 Relocar as partições de forma a eliminar os espaços entre elas e criando uma área contígua ❙ Desvantagem: ! Consumo do processador ! Acesso a disco SisOp Processo 1 320 K Processo 4 128 K 96 K Processo 3 288 K 64 K 31 Oliveira, Carissimi, Toscani ❙ Instituto de Informática - UFRGS Oliveira, Carissimi, Toscani C ❚ Reunir espaços adjacentes de memória ❚ Empregar compactação ❙ Pode haver memória livre, mas não contígua ! Fragmentação externa Instituto de Informática - UFRGS 40k Soluções possíveis para fragmentação externa ❚ Tende a criar lacunas de memória livres que individualmente podem não ser suficientes para acomodar um processo Sistemas Operacionais A Sistemas Operacionais Desvantagem de partições variáveis Criação processo 120k SisOp A 40k 30k 30k 20k A C Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ First fit 20k 40k 40k ❙ Maximizar tam_processo - tam_bloco ❙ Deixar espaços livres os maiores possíveis Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ Worst fit Exemplo: 20k 20k ❙ Minimizar tam_processo - tam_bloco ❙ Deixar espaços livres os menores possíveis ❚ Acionado somente quando ocorre fragmentação ❚ Necessidade de código relocável Sistemas Operacionais 32 Swapping (1) Swapping (2) ❚ Tempo do swap é proporcional ao tamanho do processo ❚ Processo necessita estar na memória para ser executado ❙ Se não há mais espaço em memória é necessário fazer um rodizio de processos em memória ❙ Possui influência na troca de contexto ! Política de swapping ! Escalonador de médio prazo (termo) Memória ❚ Atenção!!! Processos que realizam E/S Swap in P2 ❚ Memória secundária suficientemente grande para armazenar cópias de todos os processos de usuários → backing store Sistemas Operacionais ❙ Nunca realizar swap em processos que estão com E/S pendente ❙ Utilizar buffers de E/S internos ao sistema ! Evitar que o E/S seja transferido a endereços de memória inválidos Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS P1 Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS Swap out 33 Sistemas Operacionais Leituras complementares ❚ Problemas com alocação particionada ❙ Necessidade de uma área contígua de memória (tamanho do processo) ❙ Fragmentação interna (partições fixas) ou externa (partições variáveis) Capítulo 6, seções 6.2 e 6.3 Instituto de Informática - UFRGS ❙ Capítulo 8, Seção 8.4 35 Oliveira, Carissimi, Toscani ❚ Nova abordagem é considerar a existência de um espaço de endereçamento lógico e de um espaço de endereçamento físico Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ A. Silberchatz, P. Galvin Operating System Concepts AddisonWesley. 4th edition. Sistemas Operacionais 34 Introdução ❚ R. Oliveira, A. Carissimi, S. Toscani Sistemas Operacionais Editora Sagra-Luzzato, 2001. ❙ ❚ Existem variantes do sistema de swapping utilizados em sistemas como UNIX ou Microsoft Windows ❙ O espaço de endereçamento físico não precisa ser contíguo ❙ Necessita “mapear” o espaço lógico no espaço físico ! Dois métodos básicos: ! Paginação ! Segmentação ❚ Suposição: para ser executado o processo necessita estar completamente carregado em memória Sistemas Operacionais 36 Paginação (1) Paginação (2) ❚ Para executar um processo de n páginas, basta encontrar n frames livres na memória ❚ A memória física (sistema) e a memória lógica (processo) são dividos em blocos de tamanho fixo e idênticos ❙ Memória física dividida em blocos de tamanho fixo denominados de frames ❙ Memória lógica dividide em blocos de tamanho fixo denominados de páginas ❙ Páginas são carregadas em qualquer frame livre ❚ Necessidade de traduzir endereços lógicos (páginas) em endereços físicos (frames) 1 2 0 1 2 3 4 3 5 Processo A 6 7 37 Sistemas Operacionais Frame 0 Página Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ Elimina a fragmentação externa e reduz a fragmentação interna Sistemas Operacionais Paginação: Endereço lógico 38 Tradução de endereço lógico em endereço físico ❚ Endereço lógico é dividido em duas componentes: Memória RAM Página 0 E d 1 p E=p+d p = E div P d = E mod P m bits E p d m-n n 2 3 Processo A Sistemas Operacionais 39 CPU End. lógico p d f d End. Físico Página/Frame f Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ Tamanho da página (P) pode assumir qualquer tamanho porém emprega-se um tamanho potência de 2 para facilitar operações div e mod Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❙ Número da página ❙ Deslocamento dentro de uma página Tabela de páginas Sistemas Operacionais 40 Exemplo de paginação (1) Exemplo de paginação (2) ❚ Características do sistema: End. lógico ❙ Memória física: 64 kbytes (16 bits) ❙ Tamanho processo (máx): 32 kbytes (15 bits) ❙ Páginas 8 kbytes CPU 2 13 0 C98 000 1100 1001 1000 2000 16 bits p d 2 13 End. Físico f d 3 13 Sistemas Operacionais 41 100 x x x 5 A000 6 C000 E000 7 Memória física 42 ❚ Páginas grandes significam ❙ Processos compostos por menos páginas (tabela de páginas menores) ❙ Aumento da fragmentação interna na última página ❚ Páginas pequenas significam Instituto de Informática - UFRGS ❙ Visão do usuário: espaço de endereçamento contíguo ❙ Visão do sistema: processo é «esparramado » na memória física Oliveira, Carissimi, Toscani 13 4 8000 Tamanho da página Paginação é um tipo de relocação (via hardware) Não gera fragmentação externa Fragmentação interna é restrita apenas a última página Importante: ❚ n páginas são alocadas a n frames implicando na criação de uma tabela de correspondência ❙ Tabela de páginas ❚ Facilita implementação de proteção e compartilhamento Sistemas Operacionais 3 6000 0 1100 1001 1000 Sistemas Operacionais Características da paginação Instituto de Informática - UFRGS 3 Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS 15 bits 100 2 4000 End. físico 43 ❙ Processos compostos por mais páginas (tabela de página maiores) ❙ Diminuição da fragmentação interna na última página Oliveira, Carissimi, Toscani Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❙ Número de frames: 64/8 = 8 (0 a 7) → 3 bits ❙ Número de páginas: 32/8 = 4 (0 a 3) → 2 bits ❙ Deslocamento: 8 kbytes → 13 bits ❚ ❚ ❚ ❚ 0 1 0000 C98 ❚ Paginação: End. Lógico Frame End. ❚ Objetivos conflitantes ❚ Tamanho da página é imposto pelo hardware (MMU) ❙ Valores típicos variam entre 1 kbyte e 8 kbytes Sistemas Operacionais 44 Questões relacionadas com a gerência de páginas Proteção ❚ Proteção de acesso é garantida por definição: ❙ Processos acessam somente suas páginas → end. válidos ❙ Endereço inválido apenas na última página ! Se houver fragmentação interna ❙ Evitar que um processo acesse área (páginas) de outros processos ❙ Garantir que um processo acesse apenas endereços válidos ❙ Garantir acessos autorizados a uma posição de memória ! e.g.: páginas read-only, read-write, etc. ❙ Permitir que dois ou mais processos dividam uma área comum ! e.g.: páginas de código de um aplicativo do tipo editor de texto ❚ Bit de validade: ❙ Página pertence ou não ao end. lógico do processo 45 Sistemas Operacionais Sistemas Operacionais Exemplo de proteção End. ❚ Código compartilhado Frame 4000 Tabela de páginas 6000 Pag.0 Pag.3 8000 A000 C000 Oliveira, Carissimi, Toscani E000 Pag.2 1 2 ❚ Dados e código próprios 3 4 5 6 7 Memória física 47 ❙ Cada processo possui sua própria área de código e seus dados Oliveira, Carissimi, Toscani Pag.1 2000 Processo ❙ Uma cópia do código (read-only, re-entrante) pode ser compartilhada entre vários processos (e.g.; editores de texto, compiladores, etc...) ❙ O código compartilhado pertence ao espaço lógico de todos os processos 0 Instituto de Informática - UFRGS 0000 Sistemas Operacionais 46 Compartilhamento de páginas válido P0 Instituto de Informática - UFRGS ❙ Indicação se a página é de leitura, escrita ou executável Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ Inclusão de bits de controle na tabela de página (por entrada) ❚ Inclusão de mecanismos de compartilhamento Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ A gerência de memória deve manter controle de áreas livres e ocupadas ❚ Inclusão de mecanismos de proteção Sistemas Operacionais 48 Exemplo de compartilhamento Implementação da tabela de páginas ❚ Sistema operacional deve manter : Válido/Compartilhado End. 2000 P1 4000 P0 6000 8000 P0/P1 1 2 ❚ Como implementar a tabela de páginas? 3 4 A000 Válido/Compartilhado 5 P3 C000 6 P3 E000 7 P2 Memória física Processo 2 Tabela de páginas Sistemas Operacionais ❙ Registradores ❙ Memória Oliveira, Carissimi, Toscani Tabela de páginas Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS Processo 1 ❙ Frames livres/alocados ❙ Número de frames e de páginas de um processo ❙ Uma entrada para cada frame e para cada processo 0 Instituto de Informática - UFRGS 0000 Frame 49 Implementação da tabela de páginas via registradores Implementação da tabela de páginas em memória ❚ Tabela de páginas é mantida por um conjunto de registradores ❚ Tabela de páginas é mantida em memória ❙ Cada página um registrador ❙ No descritor de processo devem ser mantidas cópias dos registradores ! Troca de contexto: atualização dos registradores ❙ Page-table base register (PTBR): início da tabela de páginas ❙ Page-table length register (PTLR): tamanho em número de entradas. ❚ Cada acesso a dado/instrução necessita, no mínimo, dois acessos a memória 51 ❙ Número de acesso depende da largura da entrada da tabela de página e de como a memória é acessada (byte, word, etc...) Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ Desvantagem é o número de registradores Sistemas Operacionais 50 Sistemas Operacionais End. lógico End. físico + PTBR Sistemas Operacionais Acesso 1 (frame da página) Acesso 2 (dado/instr.) 52 Registradores associativos ❚ Uma espécie de meio termo entre implementação via registradores e via memória ❚ Baseada em uma memória cache especial (TLB) composta por um banco de registradores (memória associativa) ❚ Idéia é manter a tabela de páginas em memória com uma cópia parcial da tabela em um banco de registradores (TLB) ❚ Registradores associativos permitem a busca de valores por conteúdo, não por endereços ❙ Pesquisa paralela ❙ Página acessada está na TLB (hit): similar a solução de registradores ❙ Página acessada não está na TLB (miss): similar a solução via memória Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS Key Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS Translation look-aside buffers (TLBs) 53 Sistemas Operacionais p ❙ Tempo de acesso 10 vezes menor que uma memória RAM d ❚ Desvantagem é o seu custo ❙ Tamanho limitado (de 8 a 2048 entradas) ❙ Uma única TLB (pertence a MMU) que é compartilhada entre todos os processos ! Apenas as páginas em uso por um processo necessitam estar na TLB d TLB Oliveira, Carissimi, Toscani Miss TLB + f Tabela de páginas PTBR 55 ❚ Um acesso é feito em duas partes: Oliveira, Carissimi, Toscani f End. Físico Instituto de Informática - UFRGS Hit TLB Instituto de Informática - UFRGS 54 ❚ Melhora o desempenho no acesso a tabela de páginas Página/Frame Sistemas Operacionais ❙ Se valor “key” está na memória associativa, se obtém valor (value). Aspectos relacionados com o uso de TLB Memória RAM CPU ❚ Funcionamento: Sistemas Operacionais Implementação da tabela de páginas via TLB End. lógico value ❙ Se página está presente na TLB (hit) a tradução é feita ❙ Se página não está presente na TLB (miss), consulta a tabela em memória e atualiza entrada na TLB Sistemas Operacionais 56 Hit ratio (h) Exemplo: influência do hit ratio no desempenho ❚ Probabilidade de qualquer dado referenciado estar na memória, no caso, na TLB t acesso _ tlb = 20ns ) Mem. Mem. [ t medio = h × t atlb + t amem + (1 − h )× t atlb + t amem + t amem ] Sistemas Operacionais 57 hit _ ratio = 0.98 t medio = 0.98 × (120) + 0.02 × (220) = 122ns 58 ❚ Processadores 80x86 ❙ Como dimensionar o tamanho da tabela de páginas? ! Fixo ou variável conforme a necessidade? ❙ Como armazenar a tabela de páginas? ! Contígüo em memória → fragmentação externa ! Paginando a própria tabela ❙ End. Lógico: 4 Gbytes (32 bits) ❙ Páginas: 4 kbytes ❙ Tamanho da tabela de páginas: 4 Gbytes / 4 kbytes = 1048576 entradas ❙ Diretórios de tabela de páginas (n níveis) ❙ Tabelas de páginas 59 t p d 10 10 12 f Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS 32 bits ❚ A paginação multinível surge como solução a esses problemas Oliveira, Carissimi, Toscani Mem. Exemplo: Paginação a dois níveis ❚ Na prática as tabelas de página possuem tamanho variável Instituto de Informática - UFRGS Mem. Sistemas Operacionais Paginação multinível Sistemas Operacionais Mem. hit _ ratio = 0.80 t medio = 0.80 × (120) + 0.20 × (220) = 140ns Oliveira, Carissimi, Toscani Mem. Instituto de Informática - UFRGS ( 1-h t acesso ( hit ) = 20 + 100 = 120ns t acesso = t atlb + t amem t acesso = t atlb + t amem + t amem h TLB t acesso ( miss ) = 20 + 100 + 100 = 220ns h TLB 1-h Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❙ Taxa de acerto: hit ratio ❙ Seu complemento é a taxa de erro: miss ratio CPU CPU t acesso _ mem = 100ns d Memória física ! Diretório de tabela de páginas Sistemas Operacionais ! Tabela de páginas 60 Paginação a três níveis Tabela de páginas invertida ❚ Típico de arquiteturas de processadores de 64 bits Tabela de página deslocamento ❙ Uma tabela de páginas para todo o sistema (não mais por processo) ❙ Uma entrada para cada frame ❙ Endereço lógico da página e a qual processo pertence Página 61 Sistemas Operacionais 62 ❚ R. Oliveira, A. Carissimi, S. Toscani Sistemas Operacionais Editora Sagra-Luzzato, 2001. ❙ p i d Pid | p Capítulo 6, seção 6.5 ❚ A. Silberchatz, P. Galvin Operating System Concepts. 4rd edition Addison-Wesley. d Instituto de Informática - UFRGS i Memória física Tabela de páginas Sistemas Operacionais ❙ Cada índice corresponde a um frame Leituras complementares Endereço físico Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS Endereço lógico pid ❚ Endereço lógico é formado por <process_id, página, deslocamento> ❚ Cada entrada da tabela possui <process_id; página> ❚ Tabela é pesquisada e retorna, se presente, o indice i associado a entrada Sistemas Operacionais Esquema tabela de páginas invertida CPU Oliveira, Carissimi, Toscani Diretório intermediário Nível 3 Instituto de Informática - UFRGS Diretório global Nível 2 63 ❙ Seção 8.5 Oliveira, Carissimi, Toscani Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS Nível 1 ❚ Problema com tabela de páginas é o seu tamanho ❚ Tabela de páginas invertida surge como uma solução Sistemas Operacionais 64 Segmentação Esquema lógico da segmentação 1 2 3 ❙ e.g.: procedimentos (funções), bibliotecas ❚ Gerência de memória pode dar suporte diretamente ao conceito de segmentos 2 4 Oliveira, Carissimi, Toscani ❚ Um segmento pode ser uma únidade lógica Sistemas Operacionais 65 Espaço de usuário Espaço físico 66 Tradução de endereço lógico em endereço físico ❚ Endereço lógico é composto por duas partes: ❚ Tradução é feita de forma similar a paginação (via tabela) ❙ Número de segmento ❙ Deslocamento dentro do segmento ❙ Tabela de segmentos ❚ Entrada na tabela de segmento: ❚ Os segmentos não necessitam ter o mesmo tamanho ❚ Existe um tamanho máximo de segmento ❚ Segmentação é similar a alocação particionada dinâmica 67 ❚ Necessidade de verificar a cada acesso se ele é válido ❙ Hardware (comparador) Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❙ base: endereço inicial (físico) do segmento na memória ❙ limite: tamanho do segmento Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS 3 Sistemas Operacionais Endereço lógico em segmentação Sistemas Operacionais 4 1 Código Dados alocados estaticamente Dados alocados dinamicamente Pilha Instituto de Informática - UFRGS ❙ ❙ ❙ ❙ Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ Leva em consideração a visão de programadores e compiladores ❚ Um programa é uma coleção de segmentos, tipicamente: Sistemas Operacionais 68 Exemplo de tradução de endereço lógico em endereço físico Esquema de tradução da segmentação Memória Física Segmento 00 - Código CPU End. lógico s 00000 00001 00010 00011 00100 00101 d Memória Lógica C1 C2 C3 C4 C5 C6 D1 D2 D3 D4 Segmento 01 - Dados d Tabela de segmentos Sistemas Operacionais 00000 00001 00010 00011 69 00000 00001 00010 P1 P2 P3 Tabela de Segmentos Segmento Base Limite 00 01000 0110 01 00000 0100 10 10100 0011 P1 P2 P3 Sistemas Operacionais Implementação da tabela de segmentos Implementação da tabela de segmentos via registradores ❚ Construção de uma tabela de segmentos ❚ Tabela de segmentos é mantida por um conjunto de registradores ❙ Cada segmento corresponde a uma entrada na tabela ❙ Limite e base ❚ Número de registradores impõem uma limitação prática ao tamanho da tabela de segmentos (como na paginação) Oliveira, Carissimi, Toscani ❙ Registradores ❙ Memória 71 Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ Análogo a tabela de páginas: Sistemas Operacionais 70 ❙ Cada segmento dois registradores (base e limite) ❙ No descritor do processo devem ser mantidas cópias dos registradores ! Troca de contexto: atualização dos registradores ❚ Cada segmento necessita armazenar dois valores: Instituto de Informática - UFRGS C1 C2 C3 C4 C5 C6 D1 D2 D3 D4 Segmento 10 - Pilha Oliveira, Carissimi, Toscani s End. Físico Instituto de Informática - UFRGS < Memória física Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS base/limite 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 Sistemas Operacionais 72 Implementação da tabela de segmentos em memória Problemas com implementação da tabela em memória ❙ Tabela pode ser muito grande ❙ Dois acessos a memória para acessar um dado/instrução ❚ Solução: ❙ Empregar uma TLB Segmento é válido apenas se: s < STLR. Sistemas Operacionais Implementação da tabela de segmentos via TLB CPU ❙ A consulta a tabela em memória provoca no mínimo 2 acessos a memória, pois uma entrada na tabela pode representar mais de um acesso. 73 Sistemas Operacionais End. lógico ❚ Observação (válida também para a paginação) Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ! ❚ Problemas similares ao da paginação: Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ Tabela de segmentos armazenada em memória ❚ Segment-table base register (STBR): localização do início da tabela de segmentos na memória ❚ Segment-table length register (STLR): indica o número de segmentos de um processo Aspectos de proteção e compartilhamento ❚ Os príncipios já estudados para paginação continuam válidos para a segmentação s ❙ e.g.; bits de proteção (rwx), bit de validade, bits de compartilhamento, etc.. d ❚ Segmentação adiciona a possibilidade de compartilhar apenas trechos da área de código ❚ Problema associado: Base End. Físico Memória física d miss Base/limite Tabela de segmentos 75 ❙ Segmentos compartilhados devem ter a mesma identificação (entrada) na tabela de segmentos Oliveira, Carissimi, Toscani TLB < Instituto de Informática - UFRGS hit Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS base/limite Sistemas Operacionais 74 Sistemas Operacionais 76 Desvantagem da segmentação Solução para fragmentação externa ❚ A paginação é a solução natural para a fragmentação ❚ Analisar o problema sob dois pontos extremos: ❙ Um processo é um único segmento ❙ Cada byte é um segmento ! Sem fragmentação externa, nem interna ! Não viável pelos overheads envolvidos ! Similar a página de 1 byte ❚ Solução: meio termo entre os extremos Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❙ Concatenação de segmentos adjacentes ❙ Compactação da memória Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS ❚ A segmentação provoca fragmentação externa quando segmentos começam a ser liberar memória ❚ Mesmo problema de alocação partições variáveis com as mesmas soluções: 77 Sistemas Operacionais Sistemas Operacionais Segmentação com paginação ❚ R. Oliveira, A. Carissimi, S. Toscani; Sistemas Operacionais. Editora Sagra-Luzzato, 2001. ❙ Fragmentação interna: paginação apresenta, segmentação não ❙ Fragmentação externa: segmentação apresenta, paginação não ❙ p d ! 1k 2 1 0 Segmento contento 64 páginas de 1k Sistemas Operacionais 79 ❙ Capítulo 9 ❚ W. Stallings; Operating Systems. (4th edition). Prentice Hall, 2001. ❙ Capítulo 7 Oliveira, Carissimi, Toscani s Instituto de Informática - UFRGS 64k Oliveira, Carissimi, Toscani Instituto de Informática - UFRGS 63 d Capítulo 6 ❚ A. Silberchatz, P. Galvin, G. Gane; Applied Operating System Concepts. Addison-Wesley, 2000. ❚ Solução se traduz em paginar segmentos s 78 Leituras complementares ❚ Recuperar as vantagens dos dois métodos em relação a fragmentação: End. lógico ❙ Fazer um segmento ser composto por um número fixo (e reduzido) de bytes ❙ Equivale a ter o segmento dividido em internamente em blocos Sistemas Operacionais 80