Sistemas Operacionais: Gerenciamento de Memória Prof. Leandro Magno Material gentilmente cedido pelo prof. Dr. Ronaldo Augusto de Lara Gonçalves DIN - UEM 2/18/13 FAFIMAN 1 Roteiro 2/18/13 Questões Importantes Alocação Contígua Alocação Particionada Swapping Paginação Segmentação Segmentação com Paginação Memória Virtual do Linux FAFIMAN 2 Questões Importantes no Projeto de Memórias 2/18/13 Localização Capacidade Unidade de Transferência Método de Acesso Desempenho Tipo Físico Características Gerenciamento FAFIMAN 3 Gerenciamento da Memória Principal alocação contígua simples alocação particionada (estática e dinâmica) swapping paginação segmentação 2/18/13 FAFIMAN 4 Alocação Contígua Simples para sistemas de monoprogramação memória principal dividida em 2: SO + usuário usuário tem controle de quase toda a memória controle de acesso fora dos limites do usuário registrador delimitador MP SO área para 1 programa do usuário 2/18/13 128MB FAFIMAN 5 Alocação Contígua com Overlay SO 2MB módulo principal 1MB módulo de cálculo 3MB módulo de cadastro 3MB módulo de leitura 2MB módulo de impressão 1MB área de overlay área livre área ocupada pelo maior módulo de overlay * módulos de overlay definidos em compilação 2/18/13 FAFIMAN 6 Alocação Particionada Estática para sistemas multiprogramados memória é dividida em partições as partições são definidas durante o boot controle: tabela de partições absoluta e relocável 2/18/13 FAFIMAN 7 Alocação Particionada Estática Part MP Tam SO 1 A 2MB área perdida Tabela de Partições N NOME TAM USO OCUP 1 A 2 1.2 1 2 - 2 0 0 3 B 3 2 1 4 - 3 0 0 2 3 2MB B 3MB área perdida 4 2/18/13 área livre FAFIMAN área livre 3MB 8 APE Absoluta Part MP Tam SO 2/18/13 G D A 1.5MB 1MB 2MB H E B 2.5MB 3MB 2.5MB F C 3MB 3.5MB 1 2MB 2 3MB 3 4MB FAFIMAN 9 APE Relocável Part MP Tam SO C B A 5MB 2MB 3MB 2/18/13 1 1MB 2 3MB 3 6MB FAFIMAN 10 Fragmentação partições MP fragmentos SO 1 A área livre B D E 2 área livre 4MB 5MB C 3 2/18/13 área livre FAFIMAN Exis te m 6 MB 1MB l i v r e s m a s n e n h u m processo pode ser alocado na 2MB memó ria, e m b o r a pr ec ise m de 4 ou 5 MB. 3MB 11 Pergunta Existe alguma forma onde a memória pode ficar totalmente preenchida por processos (sem fragmentação), utilizando o método de Alocação Particionada Estática? 2/18/13 FAFIMAN 12 Alocação Particionada Dinâmica •sem partições fixas •cada programa utiliza o espaço que precisar •a partição é do tamanho do próprio programa 2/18/13 FAFIMAN 13 Alocação Particionada Dinâmica MP Part Tam SO Fila de Entrada D C B A 1M 4M 1M 2M Tabela de Partições 2/18/13 N NOME TAM OCUP 1 - 12 0 1 área livre FAFIMAN 12MB 14 Alocação Particionada Dinâmica MP Part Tam SO Tabela de Partições 2/18/13 N NOME TAM OCUP 1 A 2 1 2 B 1 1 3 C 4 1 4 D 1 1 5 - 4 0 1 A 2MB 2 B 1MB 3 C 4MB 4 D 1MB 5 área livre 4MB FAFIMAN 15 Fragmentação Surge na medida em que as partições estão sendo liberadas Necessita reorganizar os espaços livres M P D 6 k 2/18/13 S O 4 k C 3 k A 1 k liv re l i v8 re k liv re , e m o p ro g . D e x e c u ta d o . liv re FAFIMAN 16 Soluções para Diminuir a Fragmentação unir partições adjacentes remanejar as partições ocupadas M P M P M P M P SO SO SO SO C 1k A 2k 4k 4k C A 1k 3k 2k 1k 2/18/13 A 8 k liv re C 2k 1 k liv re A FAFIMAN 1k 3k 2k 1k 8 k liv 17 Estratégias para a escolha da Partição a ser utilizada tentar evitar ou diminuir o problema da "fragmentação“ o SO deve possuir uma lista de áreas livres ou "free-list“ 3 técnicas principais: worst-fit e first-fit 2/18/13 FAFIMAN best-fit, 18 S O 3 k B e s t-fi t H 4 k I G 1 k M P S O S O 3 k G 1 k 3 k H 4 k I W H G o r s t-fi t 2 k F i r s t-fi t I 3 k 2 k S O G 2 k H 4 k I 2 k 2/18/13 FAFIMAN 19 Pergunta 2/18/13 Como fica a tabela de partições na alocação particionada dinâmica? FAFIMAN 20 Resolva a Situação A l o c a ç ã o P a r t i c i o n a d a T a b e P a r t i S O (D e a d l i n e ) P a I rn tFi c i 0 K 1 0 4" 0 1 "0 2 "5 1 "5 3 "0 " 1 2 F E D C B A L I V R E : : 1 0 4 k 0 6 k 0 2 k 0 3 k 5 5 k 0 k N (T a m a n h o ) 1 0 0 K t i m e -s l i c e = 5 " e s c a l o n a m e n t o a l o n g e s t r a t é g i a p / e s c o l h a e s c a l o n a m e n t o a c u r t r e d u ç ã o d a f r a g m e n t a o b s : c o n s i d e r e a p e n a 2/18/13 FAFIMAN 21 Responda quanto tempo levará para executar todos os programas ? após 65", qual a situação da memória e da tabela de partição ? após 95", qual a situação da memória e da tabela de partição ? 2/18/13 FAFIMAN 22 Swapping m e m ó ria p rin cip a l S .O A swapp H B out 4K C B D m e m ó ria s e cu n d á ria Problema de Relocação ?? 2/18/13 m e m ó ria p rin c ip S .O A B s wa pp C in B m e m ó ria s e cu n d á ria FAFIMAN 23 Memória Virtual M EMPrincipal 0 1 2 3 M EM Virtual espaçode enderecos virtuais 0 1 2 3 espaçode enderecos reais M aplicação N disco M EMSecundária 2/18/13 FAFIMAN 24 Mapeamento tab P1 MEM real tab P2 2/18/13 FAFIMAN 25 Questões Importantes 2/18/13 Controle Endereçamento Mapeamento Tipos de Gerenciamento TLB FAFIMAN 26 Paginação Divisão do Endereçamento Tabela de Páginas Page Fault Técnicas de Busca de Páginas Por demanda Antecipada 2/18/13 Fragmentação Tabela de Páginas HASH FAFIMAN 27 Endereçamento endereç o endereç o da palav ra a s er ac es s ada N P D ESL 00000000 00000001 00000010 0 0 0 0 1 0 0 1 nro da página 00 00000011 00000100 00000101 00000110 01 00000111 00001000 00001001 00001010 10 00001011 00001100 00001101 00001110 11 00001111 2/18/13 FAFIMAN 28 Estrutura Geral 0 1 M em Virtual M em Real program a program a ins truç ão a s er ex ec utada end v irtual N nro pag v irtual des l end real nro pag real des l tabela de páginas end tab pag bits de nro pág real c ontrole 2/18/13 FAFIMAN 29 Fragmentação pg 0 program exemplo; pg 1 begin : pg 2 end. fragmentação "espaço perdido" pg 3 2/18/13 FAFIMAN 30 Tabela de Páginas Hash end virtual NPV DESL tab pag tab hash NPV NPR PROX NPR DESL hash pag end real 2/18/13 FAFIMAN 31 Tabela de Páginas e TLB program a tenta ac es s ar a página iníc i o entrada da Tab Pag es tá na TLB? s im não não (page faul t) pag da Tab de Pag es tá na M em ? s im SO ativ a dis pos itiv o de E/S env iar dados lê dados da M em di s pos itiv o de E/S trans fere página atualiz a TLB s im des c arta/ s ubs titui M em c heia? lê dados da TLB não SO Atualiz a Tab Pag gera end real (NPR + DESL) c ac he / m em ória 2/18/13 FAFIMAN 32 Questões Importantes Working Set Thrashing Algoritmos de Substituição Aleatória FIFO LRU LFU 2/18/13 FAFIMAN 33 Simulação de Paginação Fila de Processos 35t 45t 20t 40t 50t 40t 60t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real 1 2 3 4 5 6 7 8 9 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 34 Simulação de Paginação Fila de Processos 35t 45t 20t 40t 50t 40t 60t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 2 3 4 5 6 7 8 9 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 35 Simulação de Paginação Fila de Processos 35t 45t 20t 40t 50t 40t 60t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 3 4 5 6 7 8 9 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 36 Simulação de Paginação Fila de Processos 35t 45t 20t 40t 50t 40t 60t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 4 5 6 7 8 9 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 37 Simulação de Paginação Fila de Processos 35t 45t 20t 40t 50t 40t 60t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 D1 5 6 7 8 9 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 38 Simulação de Paginação Fila de Processos 35t 45t 20t 40t 50t 40t 60t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 D1 E1 6 7 8 9 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 39 Simulação de Paginação Fila de Processos 35t 45t 20t 40t 50t 40t 60t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 D1 E1 F1 7 8 9 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 40 Simulação de Paginação Fila de Processos 35t 45t 20t 40t 50t 40t 60t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 D1 E1 F1 G1 8 9 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 41 Simulação de Paginação Fila de Processos 35t 45t 20t 40t 50t 40t 55t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 D1 E1 F1 G1 8 9 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 42 Simulação de Paginação Fila de Processos 35t 45t 20t 40t 50t 35t 55t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 D1 E1 F1 G1 8 9 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 43 Simulação de Paginação Fila de Processos 35t 45t 20t 40t 45t 35t 55t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 D1 E1 F1 G1 C2 9 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 44 Simulação de Paginação Fila de Processos 35t 45t 20t 35t 45t 35t 55t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 D1 E1 F1 G1 C2 D2 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 45 Simulação de Paginação Fila de Processos 35t 45t 15t 35t 45t 35t 55t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 D1 E1 F1 G1 C2 D2 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 46 Simulação de Paginação Fila de Processos 35t 40t 15t 35t 45t 35t 55t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 D1 E1 F1 G1 C2 D2 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 47 Simulação de Paginação Fila de Processos 30t 40t 15t 35t 45t 35t 55t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 D1 E1 F1 G1 C2 D2 10 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 48 Simulação de Paginação Fila de Processos 30t 40t 15t 35t 45t 35t 50t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 D1 E1 F1 G1 C2 D2 A2 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 49 Simulação de Paginação Fila de Processos 30t 40t 15t 35t 45t 30t 50t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C1 D1 E1 F1 G1 C2 D2 A2 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 50 Simulação de Paginação Fila de Processos 30t 40t 15t 35t 40t 30t 50t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C3 D1 E1 F1 G1 C2 D2 A2 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 51 Simulação de Paginação Fila de Processos 30t 40t 15t 30t 40t 30t 50t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C3 D1 E1 F1 G1 C2 D2 A2 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 52 Simulação de Paginação Fila de Processos 30t 40t 10t 30t 40t 30t 50t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real A1 B1 C3 D1 E1 F1 G1 C2 D2 A2 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 53 Simulação de Paginação Fila de Processos 30t 35t 10t 30t 40t 30t 50t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real F2 B1 C3 D1 E1 F1 G1 C2 D2 A2 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 54 Simulação de Paginação Fila de Processos 25t 35t 10t 30t 40t 30t 50t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real F2 B1 C3 C2 E1 F1 G1 C2 D2 A2 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 55 Simulação de Paginação Fila de Processos 25t 35t 10t 30t 40t 30t 45t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real F2 B1 C3 C2 E1 F1 G1 C2 D2 A2 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 56 Simulação de Paginação Fila de Processos 25t 35t 10t 30t 40t 25t 45t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real F2 B1 C3 C2 E1 F1 G1 B2 D2 A2 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 57 Simulação de Paginação Fila de Processos 25t 35t 10t 30t 35t 25t 45t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real F2 B1 C3 C2 E1 F1 G1 B2 D2 A2 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 58 Simulação de Paginação Fila de Processos 25t 35t 10t 25t 35t 25t 45t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real F2 B1 C3 C2 E1 F1 G1 B2 D2 A2 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 59 Simulação de Paginação Fila de Processos 25t 35t 5t 25t 35t 25t 45t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real F2 B1 C3 C2 E1 E2 G1 B2 D2 A2 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 60 Simulação de Paginação Fila de Processos 25t 30t 5t 25t 35t 25t 45t G F E D C B A 3p 3p 2p 2p 3p 4p 3p Memória Real F2 B1 C3 C2 E1 E2 F3 B2 D2 A2 time-slice = 5t / escalonamento round-robin / remoção de páginas FIFO 2/18/13 FAFIMAN 61 Segmentação 2/18/13 Divisão do Endereçamento Modularidade do Programa Tabela de Segmentos Fragmentação Estratégias de Alocação de Espaço Livre FAFIMAN 62 Exemplo memória virtual seg 0 memória real tab seg main 1000 seg base tam function A 0 2100 300 seg 2 function B 1 2 1000 1500 200 300 1500 3 disco 500 1800 procedure C seg 1 function B seg 2 main seg 0 1200 seg 1 seg 3 function A 2100 2400 2/18/13 FAFIMAN 63 Estratégias para Alocação de Espaço Livre 2/18/13 Best-Fit Worst-Fit First-Fit FAFIMAN 64 Fragmentação Áreas Não-Adjacentes Estratégias Dividir Segmento do Programa Liberar Segmento Adjacente ao Fragmento Reagrupar Segmentos Ocupados na MEM 2/18/13 FAFIMAN 65 Segmentação com Paginação Seg. Virtual Tab. Seg. etp = ender. da tab. de end ef = ender. do frame v irt etp Mem. Física ef ns np desl ns = nro do segm. np = nro da pag. ef desl desl = deslocamento end. físico 2/18/13 FAFIMAN 66 Memória Virtual do Linux TABELA DE PÁGINAS DE 3 NÍVEIS p á g in a d ire tó rio g lo b a l D ire tó rio 2/18/13 d ire tó rio In te rm e d iá rio In te rm e d iá rio ta b e lad e p á g in a s P á g in a FAFIMAN p a la vra p ro cu ra d a D e slo ca m e n to g 67 Alocação de Páginas No Linux BUDDY ALGORITHM 32 32 32 32 32 32 32 32 8 8 8 8 8 4 4 4 4 4 4 8 8 8 64 16 16 16 32 8 8 16 (1) 2/18/13 (2) (3) 16 8 8 8 8 8 (4) (5) (6) (7) (8) FAFIMAN (9) 68 Projeto em Grupo Implementar Núcleo Com Paginação 2/18/13 FAFIMAN 69 Especificação do Projeto - Descartar primitivas de semáforos - Descartar aplicação da ponte - Implementar primitiva UsaPágina(n,t) - Implementar processo GerenteMemória() - Readequar a primitiva CriaProcesso() - Implementar nova aplicação concorrente 2/18/13 FAFIMAN 70 Primitiva UsaPágina(n,t) - Objetivo: simular acesso a página n por um tempo t (loop) - Uso: cada processo da aplicação concorrente deverá simular o acesso a suas páginas de memória. Para cada processo deverá existir uma tabela de página. O número total de páginas de cada processo deverá ser passado na primitiva CriaProcesso(). A chamada a primitiva UsaPágina() deverá verificar “continuamente” se a página está carregada. Caso a página não esteja carregada na memória, o processo deverá ser suspenso em uma fila de espera por falta página. 2/18/13 FAFIMAN 71 Processo GerenteMemória - Objetivo:Tratar da fila de espera por falta páginas - Uso: Este processo será criado tal como os demais processos do núcleo e concorrerá ao escalonamento mas não poderá ter sua execução interrompida. Quando em execução, deverá tratar o primeiro processo suspenso por falta página e colocar a página dele na memória (ajustando a tabela de páginas do processo, retirando-o da fila de suspenso por falta página e recolocando-o na fila de prontos). A cada execução, limpará a tela e atualizará graficamente o mapa da memória. Após seu trabalho devolverá o controle ao escalonador. 2/18/13 FAFIMAN 72 Aplicação Concorrente - Objetivo:Implementar vários processos concorrentes - Cada Processo: Loop : : : UsaPagina(1,100); UsaPagina(2, 200); UsaPagina(3, 500); UsaPagina(2, 300); : : : Forever 2/18/13 FAFIMAN 73