Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais Gerenciamento Básico de Memória Parte I Prof. Sílvio Fernandes UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIA DA COMPUTAÇÃO Introdução Idealmente, o que todo programador deseja é dispor de uma memória que seja Grande Rápida Não volátil O gerenciador de memória trata a hierarquia de memórias 2 Introdução A maioria dos computadores modernos possui uma hierarquia de memória combinando Uma pequena quantidade de memória cache volátil, muito rápida e muito cara Uma quantidade mediana de memória principal (RAM), ainda volátil e com preço e velocidades também medianos Uma grande quantidade de memória secundária (disco), não volátil, de baixo custo e lenta Cabe ao SO coordenar a utilização delas 3 Introdução A parte do SO que gerencia (parcialmente) isso é o gerenciador de memória Sua função Manter o controle de quais partes da memória estão em uso quais não estão Alocar memória aos processos que eles precisam Liberar memória quando estes terminam Gerenciar a troca de processos ou parte deles (swapping) entre memória e disco quando a memória principal não é suficiente para todos os processos 4 Introdução Geralmente o nível mais baixo (cache) é gerenciado pelo hardware Gerenciamento de memória evoluiu juntamente com o SO Sem abstração de memória Com abstração de memória Memória virtual 5 Sem abstração de memória Quando um programa executava uma instrução MOV REGISTER1, 1000 O computador movia do end. 1000 para o registrador A memória física era um conjunto de endereços de 0 a um máximo Outro programa não podia executar pois poderia acessar mesmas posições de memória 6 Sem abstração de memória Três modelos de memória com apenas memória física 7É possível que um erro no programa de usuário apague o SO Para obter paralelismo só com múltiplos threads Fonte: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3. ed., Prentice Hall, 2009 Executando múltiplos programas sem abstração de memória Sem memória é possível executar múltiplos programas simultaneamente Há apenas 1 programa na memória Troca de processos (swapping) Os primeiros IBM 360 resolviam dividindo a memória em blocos de 2 KB e a cada um atribuída uma chave de proteção de 4 bits Essa solução tinha a desvantagem de como fazer a relocação 8 Executando múltiplos programas sem abstração de memória 9 Fonte: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3. ed., Prentice Hall, 2009 Executando múltiplos programas sem abstração de memória Relocação estática Somar as referencias a endereços das instruções a constante relativa ao endereço inicial onde o programa foi carregado Problema em instruções MOV REGISTER1, 28 Onde 28 é uma constante e não um endereço 10 Abstração de memória: espaços de endereçamento Para que múltiplas aplicações estejam na memória sem interferência mútua é preciso: Proteção e relocação O IBM 360 resolvia o 1º. problema com as chaves de proteção mas não a relocação Como o conceito de processo crio um tipo de CPU abstrata -> o espaço de endereçamento cria um tipo de memória abstrata para abriga- los 11 Abstração de memória: espaços de endereçamento Espaço de endereçamento: é o conjunto de endereços que um processo pode usar para endereçar a memória Cada processo tem seu próprio espaço, independente dos outros (exceto no compartilhamento) Dar a cada programa seu próprio espaço é Endereço 28 em um programa significa uma localização física diferente do endereço 28 de outro programa 12 Abstração de memória: espaços de endereçamento Registradores-base e registradores-limite Solução simples da relocação dinâmica 13 Fonte: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3. ed., Prentice Hall, 2009 Reg- base Reg- limite Reg- base Reg- limite Abstração de memória: espaços de endereçamento Registradores-base e registradores-limite Solução simples da relocação dinâmica 14 Fonte: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3. ed., Prentice Hall, 2009 16384 32764 Reg- base Reg- limite Processo 1 executando Processo executa: JMP 28 Hardware executa JMP 16412 Abstração de memória: espaços de endereçamento Registradores-base e registradores-limite Solução simples da relocação dinâmica 15 Fonte: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3. ed., Prentice Hall, 2009 0 16380 Reg- base Reg- limite Processo 2 executando Abstração de memória: espaços de endereçamento Troca de Memória Às vezes não há memória principal suficiente para conter todos os processos ativos, de modo que os excedentes devem ser mantidos em disco e trazidos dinamicamente para a memória a fim de serem executados Há dois métodos para isso: Troca de processos (swapping) Memória virtual 16 Abstração de memória: espaços de endereçamento Troca de Processos 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 17 Fonte: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3. ed., Prentice Hall, 2009 Abstração de memória: espaços de endereçamento Troca de Processos Registradores-base e registradores-limites funcionam bem aqui Deixam muitos espaços vazios na memória Usar técnica de compactação de memória Não é usada em virtude do tempo de processamento Ex: Uma máquina com 1GB de memória e que possa copiar 4 bytes em 20 ns gastaria ceca de 5 s para compactar toda memória 18 Abstração de memória: espaços de endereçamento Troca de Processos Um ponto importante é a quantidade de memória que deve ser alocada a um processo Com um tamanho fixo a alocação é simples Se a área de dados do processo puder crescer, problemas poderão ocorrer 19 Abstração de memória: espaços de endereçamento Troca de Processos 20 Fonte: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3. ed., Prentice Hall, 2009 Gerenciando a memória livre Gerenciamento com mapa de bits A memória é dividida em unidades de alocação, a qual é associado um bit no mapa de bits indicando se está ocupada ou não 21 Fonte: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3. ed., Prentice Hall, 2009 Gerenciando a memória livre Gerenciamento com lista encadeada Cada elemento dessa lista especifica um segmento de memória disponível (H) ou de memória alocada ao processo (P) o endereço onde se inicia o segmento e um ponteiro para o próximo elemento da lista 22 Gerenciando a memória livre Gerenciamento com lista encadeada Pode-se usar diversos algoritmos para gerenciamento usando lista encadeada O algoritmo mais simples é o first fit (primeiro que couber) O gerenciador procura ao longo da lista por um segmento livre que seja suficientemente grande para esse processo O next fit (próximo que couber) é uma variação do first fit Sempre é memorizada a posição em que encontra o segmento de memória disponível, não precisando percorrer toda lista quando se quer alocar 23 Gerenciando a memória livre Gerenciamento com lista encadeada O best fit (melhor que couber) Percorre toda lista e escolhe o menor segmento de memória livre suficiente ao processo O worst fit (pior que couber) Sempre escolhe o maior segmento de memóriadisponível de modo que, quando dividido, o segmento disponível restante fosse suficientemente grande para ser útil depois O quick fit (o que mais rápido couber) Mantém listas separadas por tamanhos de segmentos de memória disponível em geral mais solicitados 24 Referências TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3. ed., Prentice Hall, 2009. 25
Compartilhar