370 likes | 500 Views
Gerenciamento de Memória - Capítulo 7 - . Sistemas Operacionais Prof. Dr. José Carlos Becceneri Luciana Sêda Cardoso. Sumário. Definição Requisitos Técnicas de Gerenciamento de Memória. Gerenciamento de Memória.
E N D
Gerenciamento de Memória- Capítulo 7 - Sistemas Operacionais Prof. Dr. José Carlos Becceneri Luciana Sêda Cardoso
Sumário • Definição • Requisitos • Técnicas de Gerenciamento de Memória
Gerenciamento de Memória • Principal 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.
Requisitos • Relocação • Proteção • Compartilhamento • Organização lógica • Organização física
Requisito - Relocação • Capacidade 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 é executado • O 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.
Requisito - Proteção • Cada processo deve ser protegido contra interferências não desejáveis de outros processos de forma acidental ou intencional • Processos 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ógica • Capacidade 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 simples • Segmentação simples • Paginação de Memória Virtual • Segmentaçã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 sistema • Ponto 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ção • Partiçã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âmica • Partições são criadas dinamicamente, de forma que cada processo é alocado dentro da partição do mesmo tamanho do processo • Ponto forte: Não tem fragmentação interna e usa de forma mais eficiente a memória • Ponto fraco: Uso ineficiente do processador por necessitar de compactação para solucionar a fragmentaçãoexterna (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ção • O 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ória • Best-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 Buddy • O 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 Simples • A 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 0 0 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: Endereço lógico 0 0 0 0 0 1 0 1 1 1 0 1 1 1 1 0 Tabela de Página 0 0 0 0 1 0 1 1 0 0 0 1 1 0 2 0 1 1 0 0 1 Endereço físico 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0
Segmentação Simples • Cada 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 interna • Ponto fraco: Tem uma pequena quantidade de fragmentação externa
Exemplo de Segmentação 1400 Segmento 0 Sub-rotina 2400 3200 Segmento 3 pilha 4300 Segmento2 Programa principal 4700 Segmento 4 Tabela de símbolos 5700 6300 Segmento 1 Variáveis Globais 6700
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 uma Tabela de Segmento 0 1 2 3 4
Tradução do endereço lógico para o endereço físico é feito pelo hardware do processador , da seguinte forma: Segmento Offset Endereço lógico 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 0 Tabela de Segmento 0 001011101110 0000010000000000 + 1 011110011110 0010000000100000 Limite Base Endereço físico 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0
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.