Capítulo 4 Gerenciamento de Memória 4.1 Gerenciamento básico de memória 4.2 Troca de processos 4.3 Memória virtual 4.4 Algoritmos de substituição de páginas 4.5 Modelagem de algoritmos de substituição de páginas 4.6 Questões de projeto para sistemas de paginação 4.7 Questões de implementação 4.8 Segmentação 1
Gerenciamento de Memória Dilema do projetista: Usar tecnologias que provêm memória de grande capacidade Atingir metas de desempenho com memórias de baixa capacidade e tempo de acesso rápido (de alto custo) Não depender de uma única tecnologia ou componente de memória Hierarquia de memória 2
Gerenciamento de Memória Questões relacionadas as restrições de projeto da memória de um computador: Quanto? Quão rápida? Quão cara? Quanto Quão rápida Quão cara questão aberta memória tem que acompanhar a velocidade do processador custo razoável em relação a outros componentes Ponderação entre custo, capacidade e tempo de acesso 3
Gerenciamento de Memória regs cache Memória principal Cache de disco Disco magnético Discos óticos < Custo/bit > Capacidade > T acesso < Freq acesso da memória pela CPU Fita magnética Hierarquia da memória 4
Gerenciamento de Memória Qual a chave do sucesso no projeto da memória? Diminuir a freqüência de acesso Como? Princípio da localidade de referência Organização dos dados de forma hierárquica de tal forma que a porcentagem de acessos a um nível seja substancialmente menor que a do nível acima da hierarquia Ex.: Cache RAM Disco 5
Gerenciamento de Memória Programas Reais exibem Localidade de Referência Página de memória referenciada tempo 6
Gerenciamento de Memória Idealmente, o que todo programador deseja é dispor de uma memória que seja grande rápida não volátil Hierarquia de memórias pequena quantidade de memória rápida, de alto custo -cache quantidade considerável de memória principal de velocidade média, custo médio gigabytes de armazenamento em disco de velocidade e custo baixos O gerenciador de memória trata a hierarquia de memórias 7
Gerenciamento Básico de Memória Monoprogramação sem Troca de Processos ou Paginação Programa do Usuário S.O. em RAM S.O. em ROM Programa do Usuário Drivers de Dispositivos em ROM Programa do Usuário S.O. em RAM Três maneiras simples de organizar a memória - Um sistema operacional e um processo de usuário 1. Usuário digita comando 2. S.O. carrega programa solicitado do disco para a memória 3. Executa e termina 4. S.O. emite prompt e espera próximo comando 5. S.O. carrega processo sobre anterior Monoprogramação raramente utilizada 8
Multiprogramação com Partições Fixas Partição 4 700K Partição 4 Partição 3 Partição 2 Partição 1 S.O. 400K 200K 100K 0K Partição 3 Partição 2 Partição 1 S.O. Filas múltiplas de entrada (a) Fila única de entrada (b) Partições fixas de memória a) filas de entrada separadas para cada partição b) fila única de entrada 9
Gerenciamento de Memória Motivações para multiprogramação: é mais fácil programar uma aplicação quebrando-a em dois ou mais processos mais que um processo na memória melhora o desempenho para várias pessoas ao mesmo tempo a maioria dos processos gastam boa fração de seu tempo esperando a conclusão de operações de ee/s exemplo: processo fica num loop lendo blocos de dados e executa alguma computação sobre os dados lidos. 40 msec para ler um bloco 10 msec para computação na monoprogramação significa cpu ociosa 80% do tempo 10
Gerenciamento de Memória Modelagem da Multiprogramação 1o. Modelo: Um processo computa 20% de seu tempo de memória. Cinco processos na memória, de uma vez CPU ocupada 100% Modelo não realista não assume que os cinco processos podem esperar por E/S ao mesmo tempo 2o. Modelo: Um processo gasta uma fração p de seu tempo em operações de E/S Para n processos em memória, a probabilidade de que todos os processos estejam esperando por E/S (isto é a CPU ociosa) é pⁿ Utilização da CPU = 1 - pⁿ 3o. Modelo: Teoria das filas 11
Gerenciamento de Memória Modelagem da Multiprogramação Utilização da CPU (em %) 120 100 80 60 40 20 0 0 1 2 3 4 5 6 7 8 9 10 Número de Processos 80% E/S 50% E/S 20% E/S 80% de tempo de espera para processos interativos é comum Processos em lote com 80% ou mais tempo de espera é comum Assume que todos os processos são independentes Processos não são independentes!!! 12
Gerenciamento de Memória Modelagem da Multiprogramação Exemplo: Computador de 1MB S.O. ocupa 200KB Cada programa do usuário ocupa 200KB Espera por E/S: 80% Utilização da CPU = 1 - pⁿ = 1 0,84 = 60% e se for adicionado 1MB a mais? e se for adicionado um 3 o MB? é um bom investimento? 13
Relocação e Proteção (1) Não se sabe com certeza onde o programa será carregado na memória Localizações de endereços de variáveis e de código de rotinas não podem ser absolutos Uma possível solução: instruções do programa são modificadas segundo a partição de memória em que ele será carregado Como impedir que um programa de usuário leia e/ou escreva na memória de outro usuário? (endereços de memória são absolutos) Solução da IBM: Dividir a memória em blocos de 2K (4 bits de proteção de bloco). PSW contém a chave de 4 bits. 14
Relocação e Proteção (2) Solução para proteção e relocação: Uso de registradores especiais de hardware (base e limite) localizações de endereços são somadas ao valor base antes de serem mapeadas na memória física localizações de endereços maior que o valor limite indicam erro Desvantagem: necessárias uma adição e uma comparação a cada referência à memória 15
Relocação e Proteção (3) Exemplo: Partição n 100 Base Partição 1 S.O. 200 100 0 100 Limite (comprimento da partição) Todo endereço na memória gerado automaticamente tem o conteúdo do registrador Base adicionado a ele antes de ser enviado para a memória Endereços são checados contra o registrador limite Hardware protege esses registradores contra acessos indevidos 16
Troca de Processos (1) Alterações na alocação de memória à medida que processos entram e saem da memória Regiões sombreadas correspondem a regiões de memória não utilizadas naquele instante Desvantagem: Memória muito fragmentada. Requer compactação de memória (pouco utilizada => muito processamento) 17
Troca de Processos (2) Quanto de memória alocar para um processo?? a) Alocação de espaço para uma área de dados em expansão b) Alocação de espaço para uma pilha e uma área de dados, ambos em expansão 18
Gerenciamento de Memória com Mapas de Bits (1) (a) (b) Mapa de bits Memória é dividida em unidades de alocação Um bit corresponde a uma unidade de alocação (0 se livre e 1 se ocupada) Como trazer um processo com K unidades para a memória? a) Parte da memória com 5 segmentos de processos e 3 segmentos de memória livre pequenos riscos simétricos denotam as unidades de alocação regiões sombreadas denotam segmentos livres b) Mapa de bits correspondente 19
Gerenciamento de Memória com Mapas de Bits (2) Gerenciamento de memória com mapas de bits Qual deve ser o tamanho da unidade de alocação? (grande x pequeno) Vantagem do mapa de bits Forma simples de gerenciamento (o tamanho do mapa de bits depende do tamanho da memória e do tamanho da unidade de alocação) Desvantagem do mapa de bits Busca é lenta quando se precisa de um número consecutivo de bits vazios (para acomodar um processo de k unidades) 20
Gerenciamento de Memória com Lista Encadeada (1) Gerenciamento de Memória com Lista Encadeada Lista de segmentos (Processo-P, Vazio-H, endereço de início, comprimento, ponteiro para próximo) 21
Gerenciamento de Memória com Lista Encadeada (2) Antes do Processo X terminar Depois de X terminar Quatro combinações de vizinhança para o processo X em término de execução 22