gerenciamento de memória - capítulo 7 - sistemas operacionais prof. dr. josé carlos becceneri...
TRANSCRIPT
Gerenciamento de Memória
- Capítulo 7 - Sistemas OperacionaisProf. Dr. José Carlos Becceneri
Luciana Sêda Cardoso
SumárioDefinição
Requisitos
Técnicas de Gerenciamento de Memória
Gerenciamento de MemóriaPrincipal operação – trazer programas para dentro da memória principal para ser executados pelo processador.
Dividir dinamicamente a parte “User” da memória principal de forma que acomode vários processos.
Alocar a memória de forma eficiente para empacotar tantos processos na memória quanto possível para evitar que o processador fique ocioso.
Deve ser capaz de rodar um programa em que seu tamanho seja maior que o disponível pela memória real.
RequisitosRelocaçãoProteçãoCompartilhamentoOrganização lógicaOrganização física
Requisito - RelocaçãoCapacidade de mover um programa de uma região da memória principal para uma outra sem invalidar as referencias de memória dentro do programa;O programador não sabe onde o programa é colocado na memória quando ele é executadoO hardware do processador e o SO devem ser capazes de traduzir os endereços de referencia de memória no código do programa para o endereço físico da memória.
Técnica de Endereçamento -> Imagem do Processo
Requisito - ProteçãoCada processo deve ser protegido contra interferências não desejáveis de outros processos de forma acidental ou intencionalProcessos não devem ser capazes de referenciar localizações de memória de outro processo sem permissão;O hardware é responsável por fazer a verificação, caso a violação ocorra, o mesmo deve abortar tais instruções no ponto da execução;O SO não pode prever todas as referencias de memória que o programa fará (custo muito alto).
Requisito - Compartilhamento
Permitir que vários processos acessem a mesma área de memória principalÉ vantajoso, que : processos que são executados em um mesmo
programa acessem a mesma cópia do programa e
Processos que estão cooperando em uma mesma tarefa compartilhem acesso a uma mesma estrutura de dados
Deve permitir o compartilhamento sem comprometer o requisito de proteção
Requisitos - Organização LógicaCapacidade de manipular com programas e dados do usuário organizado em módulos
Memória -> seqüências de Bytes e palavras Programas -> módulos
Vantagens: Módulo podem ser escritos e compilados
independentemente, as referencias de um módulo para o outro são resolvidas em tempo de execução;
Com um overhead adicional, diferentes graus de proteção (read only, execute only) podem ser dados para diferentes módulos
É possível introduzir mecanismo de compartilhamento entre módulos
Requisito – Organização Física
Organização da memória do computador: Dois níveis:
Memória principal -> mais rápida, volátil e custo alto
Memória secundária -> lenta, armazenamento permanente e barata
Capacidade de mover informações entre os 2 níveis de memória
Técnicas de Gerenciamento de Memória
Partição de memória Partição fixa Partição dinâmica Sistema Buddy
Paginação simplesSegmentação simplesPaginação de Memória VirtualSegmentação de Memória Virtual
Partição Fixa Memória principal é dividida dentro de um no. de partições estáticas (tamanho igual ou diferente). O processo é carregado dentro de uma partição de tamanho = ou >.Ponto forte: Simples de implementar, pouco overhead no sistemaPonto fraco: Fragmentação interna -> Uso ineficiente da memória principal. Qualquer programa, não importando o quanto pequeno é, ocupa uma partição na memória.
Algoritmo de LocaçãoPartição de tamanho igual: todas as partições com o mesmo tamanho, não importa qual partição é usada;Partição de tamanho diferente: Dois caminhos:
Uma fila para cada partição -> Processos são atribuídos de forma a minimizar o desperdício de memória na partição
Uma única fila para todas as partições ->Os processos são atribuídos a partição de menor tamanho disponível no momento.
Partição Fixa (cont.)
Desvantagens: No. de partições especificadas no tempo de
geração do sistema -> limita o no. de processos ativos dentro do sistema
Tamanho das partições são setadas no tempo de geração do sistema -> jobs pequenos utilizam os espaços das partições de forma ineficiente
Usada com sucesso: Mainframe da IBM e Os/MFT(Multiporgramação com no. fixo de tarefa)
Partição DinâmicaPartições são criadas dinamicamente, de forma que cada processo é alocado dentro da partição do mesmo tamanho do processoPonto forte: Não tem fragmentação interna e usa de forma mais eficiente a memóriaPonto fraco: Uso ineficiente do processador por necessitar de compactação para solucionar a fragmentação externa (memória vai ficando cheia de vários buracos)
Usada com sucesso: Mainframe da IBM e Os/MFT(Multiporgramação com no. variável de tarefa)
Algoritmo de LocaçãoO SO deve decidir qual bloco livre a ser alocado ao processo de forma eficiente.
Três algoritmos podem ser usados: First-fit : Procura dentro da memória a partir o inicio
e escolhe o primeiro bloco que é grande o suficiente para o processo a ser alocado;
Next-fit: Inicia a procura a partir do local onde foi feito a ultima locação e escolhe o bloco que é grande o suficiente para o processo a ser alocado
Best-fit: Escolhe o bloco que mais se aproxima do tamanho requerido;
Qual deles é o melhor?First-fit :
Mais rápido e o melhor Ele gera no inicio da memória pequenas partições livres que
necessitam ser pesquisadas a cada passo subseqüente do first-fit
Next-fit: Freqüentemente aloca blocos livres no fim da memória Como resultado, blocos grandes de memória são quebrados
rapidamente em blocos menores Compactação mais freqüente é requerida para obter grandes
blocos no fim da memóriaBest-fit:
Tem a pior performance Procura pelo menor bloco que satisfaça o requisito Como resultado, a memória principal é rapidamente
quebrada em blocos muito pequenos que não podem satisfazer um pedido de alocação, exigindo assim uma compactação freqüente
Sistema BuddyO espaço disponível total da memória é tratado como um único bloco de 2U (bloco de maior tamanho que pode ser alocado)
Se um pedido de tamanho s é tal que 2U-1 < s ≤ 2U,
Então: o bloco completo 2U é alocado Senão: O bloco é divido em 2 “buddies” iguais. A divisão
continua até que o bloco encontrado seja > ou = ao s requerido.
Uma forma modificada deste sistema é usada para alocação de memória no kernel do UNIX. Também tem sido usado em aplicações de sistemas paralelos (alocação e liberação de programas paralelos).
Paginação SimplesA memória é divida em pequenos pedaços de tamanho igual chamados frames. Cada processo é dividido em pequenos pedaços de tamanho igual ao do frame chamado pages. Quando um processo é carregado na memória, todas as suas páginas são carregadas dentro dos frames disponíveis, e uma tabela de página é setada. Os frames usados não precisam estar em seqüência.
Ponto forte: Não tem fragmentação externa
Ponto fraco: tem uma pequena quantidade de fragmentação interna.
Como o SO controla as páginas alocadas e os frames livres?
O SO usa: Conceito de endereço lógico; Mantém ma tabela de frames livres ; Mantém uma tabela de pagina para cada processo,
contendo a localização do frame para cada pagina do processo.
Dentro do programa, cada endereço lógico consiste: um número de pagina + um offset da pagina
Exemplo: Endereço lógico= Page 1 e offset
478 0 0 00 0 1 0 1 1 1 0 1 1 1 1 0
Tradução do endereço lógico para o endereço físico é feito pelo hardware do processador , da seguinte forma:
0 0 00 0 1 0 1 1 1 0 1 1 1 1 0
0 0 10 1 0 0 1 1 1 0 1 1 1 1 0
0 0 10 0 10 0 10 1 00 1 01 0 1
Endereço lógico
012
Endereço físico
Tabela de Página
Segmentação SimplesCada processo é dividido em um número de segmentos de tamanho desigual (limitado pelo tamanho máximo). Um processo é carregado na memória, todos os seus segmentos são carregados dentro de partições dinâmicas que não necessitam ser continuas.Ponto forte: Não tem fragmentação internaPonto fraco: Tem uma pequena quantidade de fragmentação externa
Segmento 0
Segmento 3
Segmento 1
Segmento 4
Segmento2
14002400
3200
43004700
570063006700
Exemplo de Segmentação
Sub-rotina
Tabela de símbolos
pilha
Programa principal
Variáveis Globais
Como o SO controla os segmentos alocados e blocos
livres?O SO mantém:
Conceito de endereço lógico mantém uma tabela de blocos livres ; mantém uma tabela de segmentos para cada processo, contendo a endereço
inicial na memória principal (base) + o tamanho do segmento (limite).
Exemplo de umaTabela de Segmento
Base Limite1400 10006300 4004300 4003200 11004700 1000
01234
Tradução do endereço lógico para o endereço físico é feito pelo hardware do processador , da seguinte forma:
0 0 10 0 0 1 0 1 1 1 1 0 0 0 0
0 0 01 0 0 1 1 0 0 0 1 0 0 0 0
0010111011100000010000000000011110011110
Endereço lógico
01
Endereço físico
Tabela de Segmento
Segmento Offset
0010000000100000Limite Base
+
Memória Virtual - Paginação
É igual a paginação simples, exceto que não necessita ser carregada todas as páginas do processo. Paginas não residentes que são necessárias, são trazidas mais tarde automaticamente.
Ponto forte: Não tem fragmentação externa; Alto grau de multiprogramação; Espaço para grandes processos virtuais.
Ponto fraco: Overhead no gerenciamento complexo de memória.
Memória Virtual - Segmentação
É igual a segmentação simples, exceto que não necessita ser carregada todas os segmentos do processo. Segmentos não residentes que são necessárias, são trazidas mais tarde automaticamente.
Ponto forte: Não tem fragmentação interna; Alto grau de multiprogramação; Espaço para grandes processos virtuais; Suporte de proteção e compartilhamento.
Ponto fraco: Overhead no gerenciamento complexo de memória.