Gestão de Memória 1. Conceitos Básicos 2. Swapping 3. Memória Virtual 4. Algoritmos de substituição de páginas 5. Modelação de algoritmos de substituição de páginas 6. Questões no desenho de sistemas de paginação 7. Questões na implementação 8. Segmentação
Organização de um Sistema Operativo System Call Handler File System 1... File System m Virtual memory Driver 1 Driver 2... Driver n Threads, thread scheduling, thread synchronization Interrupt handling, context switching, MMU Hide the low-level hardware 12/16/2002 Sistemas Operativos 2001/2002 2
Gestão de Memória Idealmente, programadores querem memória Rápida Grande Não volátil Hierarquia de tipos de memória Cache - Pequena porção de memória rápida e cara Memória principal - Média velocidade, médio preço Armazenamento em disco gigabytes de memória lenta e barata Gestor de memória gere a hierarquia de memórias. Objectivos Objectivos do do capítulo: capítulo: investigar investigar as as diferentes diferentes tipos tipos de de gestão gestão de de memória memória 12/16/2002 Sistemas Operativos 2001/2002 3
Gestão de Memória Monoprogramação sem swapping nem paging Programa de utilizador SO na RAM 0xFF.. SO na ROM Programa de utilizador 0xFF.. Drivers em ROM Programa de utilizador SO na RAM 0 0 0 0xFF.. Mainframes; Mainframes; Minicomputers Minicomputers Palmtops; Palmtops; embedded embedded systems systems Modelo Modelo inicial inicial dos dos PC s PC s com com MSDOS MSDOS (BIOS) (BIOS) Três modos simples de organizar memória - um sistema operativo com um processo de um utilizador 12/16/2002 Sistemas Operativos 2001/2002 4
Gestão de Memória Multiprogramação com partições fixas Partição 4 Partição 3 800 K 800 K Partição 4 800 700 K Partição 3 800 700 K 400 K 400 K Partição 2 Partição 2 Partição 1 Sistema Operativo 200 K 100 K Partições fixas de memória Filas de entrada separadas para cada partição Uma única fila de entrada Partição 1 Sistema Operativo 200 K 100 K Desvantagem: Pode ser posto numa queue pequena demais Uma queue pode estar cheia, com partições livres 12/16/2002 Sistemas Operativos 2001/2002 5
Gestão de Memória Problemas que se colocam : Re-alocação e Protecção Não pode ter a certeza onde é que o programa vai ser carregado em memória (Re-alocação) O endereço de memória das variáveis e rotinas de código não pode ser absoluto Tem que se menter o programa fora da partição de outros processos Usar os valores base e limite (Proteccção) Endereços são mapeados, usando um valor base, por forma a mapear endereços físicos Endereços superiores ao limite físico estão errados Sempre que o processo é escolhido para correr, base e limite também são carregados 12/16/2002 Sistemas Operativos 2001/2002 6
Swapping Tempo C C C C C B B B B A A A A D D D Sistema Operativo Sistema Operativo Sistema Operativo Sistema Operativo Sistema Operativo Sistema Operativo Sistema Operativo Sistemas Sistemas interactivos: interactivos: -- usam usam time time sharing sharing -- processos processos em em excesso excesso têm têm de de ser ser gravados gravados em em disco disco Batch BatchSystems: -batch -batché carregado carregado em em memória memória -Fica -Fica em em memória memória até até terminar terminar -Precisa -Precisa de de espaço espaço em em memória memória para para suportar suportar processo processo e manter manter CPU CPU ocupado. ocupado. 12/16/2002 Sistemas Operativos 2001/2002 7
Swapping Alocação de memória muda com a entrada e saída de processos de memória Duas estratégias Swapping programa todo em memória. Carregado de disco para memória Virtual Memory Só parte do programa é carregado para memória 12/16/2002 Sistemas Operativos 2001/2002 8
Swapping Exemplo com segmentos Espaço livre B stack Espaço livre B Em uso B data B code A Sistema Operativo Espaço livre Em uso A stack A data A code Sistema Operativo Espaço livre Alocação de espaço para segmentos que podem crescer Alocação de espaço para segmentos de stack e data 12/16/2002 Sistemas Operativos 2001/2002 9
Swapping Gestão de memória com bit Maps Exemplo de parte de memória com 5 processos e 3 espaços livre. Exemplos de gestão com bit Maps e com Listas. 12/16/2002 Sistemas Operativos 2001/2002 10
Swapping Gestão de memória com listas ligadas (a) (b) Antes de X terminar Depois de X terminar A X B torna-se A B A X torna-se A (c) X B torna-se B (d) X torna-se Listas ligadas: ligação dupla ou simples? Algoritmos de busca: First-Fit, Next-Fit, Best-Fit,Worst- Fit,Quick-Fit 12/16/2002 Sistemas Operativos 2001/2002 11
Memória Virtual Memória física é limitada Programas necessitam de mais memória Solução a nível da aplicação: divisão do programa em blocos distintos Programador tinha de retirar e carregar em memória os blocos (o SO não intervinha) Como simular a existência de mais memória do que a que existe realmente? 12/16/2002 Sistemas Operativos 2001/2002 12
Memória Virtual Paginação CPU Memory Management Unit CPU envia endereço virtual para MMU Memória Control. Discos Barramento Posição e função da MMU 12/16/2002 Sistemas Operativos 2001/2002 13
Memória Virtual Paginação A relação entre endereços virtuais e endereços físicos ( Page Table ) 12/16/2002 Sistemas Operativos 2001/2002 14
Memória Virtual Tabela de Páginas Simples Operações Internas da MMU com 16 páginas de 4KB 12/16/2002 Sistemas Operativos 2001/2002 15
Memória Virtual Tabelas de Páginas de vários níveis Endereços a 32 bits Page Tables de dois níveis 12/16/2002 Sistemas Operativos 2001/2002 16
Memória Virtual Estrutura de uma Page Table Cache inibido Modificado Presente/Não Presente Page frame number Referênciado Protegido Page table entry 12/16/2002 Sistemas Operativos 2001/2002 17
Memória Virtual TLBs Translation Lookaside Buffers Valid 1 1 1 1 1 1 1 1 Virtual page 140 20 130 129 19 21 860 861 Modified 1 0 1 1 0 0 1 1 Acelera o paging Protection RW R X RW RW R X R X RW RW Page frame 31 38 29 62 50 45 14 75 12/16/2002 Sistemas Operativos 2001/2002 18
Memória Virtual Page Tables Invertidas Comparação de uma page table tradicional com uma page table invertida 12/16/2002 Sistemas Operativos 2001/2002 19
Algoritmos de substituição de páginas Falhas de páginas (page fault) força a uma escolha Que página deve ser removida Arranja espaço para uma nova página Páginas modificadas devem ser salvas Não modificadas sobrepor Não se deve escolher uma página usada com frequência Voltará a ser reposta brevemente 12/16/2002 Sistemas Operativos 2001/2002 20
Algoritmo Óptimo de substituição de páginas Substituir página necessária o mais tarde possível Óptimo, mas não realista Estimar... Fazendo registo das páginas usadas na última vez que o processo correu Óptimo, mas impraticável. 12/16/2002 Sistemas Operativos 2001/2002 21
Algoritmo de substituição de páginas Not Recently Used (NRU) Cada página tem: Reference Bit, Modified Bit Bits são alterados quando a página é referenciada, modificada Páginas são classificadas Classe 0: Not referenced, not modified Classe 1: Not referenced, modified Classe 2: referenced, not modified Classe 3: referenced, modified NRU remove página, aleatoriamente, da classe mais baixa não vazia. 12/16/2002 Sistemas Operativos 2001/2002 22
Algoritmo de substituição de páginas - FIFO Mantém uma lista ligada de todas as páginas Pela ordem em que chegam à memória Páginas no inicio da lista são substituídas Página à cabeça é a que está à mais tempo em memória Página na cauda é a mais recente Desvantagem Não tem em conta se a página é ou não muito utilizada 12/16/2002 Sistemas Operativos 2001/2002 23
Algoritmo de substituição de páginas Second Chance Primeira página carregada 0 3 7 8 12 14 15 18 A B C D E F G H Página carregada mais recentemente Tempo em que foram carregadas 3 7 8 12 14 15 18 20 B C D E F G H Operações do algoritmo Páginas ordenadas em FIFO Lista se a falha ocorre no instante 20, A tem o bit R activado 12/16/2002 Sistemas Operativos 2001/2002 24 A A é tratada como uma página carregada recentemente
Algoritmo de substituição de páginas The Clock L A B K C J D I E H F G Quando Quando ocorre ocorre uma uma falha falha de de página, página, a página página para para a qual qual o ponteiro ponteiro aponta aponta é inspeccionada. inspeccionada. A acção acção a tomar tomar depende depende do do bit bit R: R: -R=0: -R=0: Remover Remover a página página e avançar avançar ponteiro ponteiro -R=1: -R=1: Limpar Limpar R e avançar avançar ponteiro ponteiro 12/16/2002 Sistemas Operativos 2001/2002 25
Last Recently Used (LRU) Assume que as páginas usadas recentemente voltarão a ser usadas em breve Deitar fora as páginas não usadas à muito tempo Tem de manter uma lista ligada de páginas Mais recentemente usados à cabeça, menos à cauda Actualizar a lista cada vez que a memória é referenciada Como opção, manter um contador em cada entrada page table Escolher a página com o menor valor do contador Periodicamente fazer reset ao contador (colocar a 0) 12/16/2002 Sistemas Operativos 2001/2002 26
Algoritmo baseado em hardware-aging 0 1 2 3 Página 0 1 2 3 0 1 1 1 Página 0 1 2 3 0 0 1 1 Página 0 1 2 3 0 0 0 1 Página 0 1 2 3 0 0 0 0 Página 0 1 2 3 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 (a) (b) (c) (d) (e) 0 0 0 0 0 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 (f) (g) (h) (i) (j) LRU usando matrizes páginas referenciadas por ordem: 0,1,2,3,2,1,0,3,2,3 12/16/2002 Sistemas Operativos 2001/2002 27
Algoritmo em Software - AGING Bits R para páginas 0-5 em t0 Bits R para páginas 0-5 em t1 Bits R para páginas 0-5 em t2 Bits R para páginas 0-5 em t3 Bits R para páginas 0-5 em t4 Página 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0 0 10000000 11000000 11100000 11110000 01111000 1 2 3 4 5 00000000 10000000 00000000 10000000 10000000 10000000 01000000 00000000 11000000 01000000 11000000 00100000 10000000 01100000 10100000 01100000 00100000 01000000 10110000 01010000 10110000 10001000 00100000 01011000 00101000 Notar que existem 6 páginas para 5 ticks de clock 12/16/2002 Sistemas Operativos 2001/2002 28
Algoritmo de substituição de páginas Working Set 12/16/2002 Sistemas Operativos 2001/2002 29
Algoritmo de substituição de páginas WSClock 12/16/2002 Sistemas Operativos 2001/2002 30
Algoritmo de substituição de páginas - Resumo Algoritmo Óptimo NRU FIFO Segunda hipotese Clock LRU LFU Aging Working Set WSClock Comentário Não é possivel (referência) Pouco eficiente Pode retirar páginas importantes Melhorias ao FIFO Realista Excelente, dificil de implementar Fraca aproximação do LRU Eficiente que se aproxima do LRU Dificil de implementar Boa eficiência 12/16/2002 Sistemas Operativos 2001/2002 31