Gerenciamento de Memória - Capítulo 7 - Sistemas Operacionais Prof. Dr. José Carlos Becceneri Luciana Sêda Cardoso.

Slides:



Advertisements
Apresentações semelhantes
SISTEMAS OPERACIONAIS
Advertisements

INTRODUÇÃO À COMPUTAÇÃO Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
DESENVOLVIMENTO DE SISTEMAS PARA INTERNET
Arquitetura e organização de computadores
Barramentos Introdução.
Gerenciamento de Memória
Ambientes Operacionais
Gerenciamento de memória
Arquitetura de Sistemas Operacionais Francis Berenger Machado
SSC541 - SISTEMAS OPERACIONAIS I Aula 12 – Gerenciamento de Memória
SSC SISTEMAS OPERACIONAIS I Aula 10 – Gerenciamento de Memória
SSC SISTEMAS OPERACIONAIS I Aula 15 – Gerenciamento de Memória
SSC541 - SISTEMAS OPERACIONAIS I Aula 13 – Gerenciamento de Memória
Memória.
LPG - I: Alocação Dinâmica de Memória - Ponteiros
Gerência de Memória.
Gerência de Memória Sistemas Operacionais I
Arquitetura de Computadores
Linguagens de Programação
Sistemas Operacionais Turmas MBI1 e NBI2. Prof: Marcelo Mendes.
Debian Gerência de Memória.
Threads.
Sistemas Operacionais I
Sistemas Operacionais I
Gerência de Memória.
Sistemas Operacionais I
Capítulo 9: Memória Virtual
Sistemas Operacionais Gerenciamento de Memória
Fundamentos da Arquitetura de Computadores
Representação de Instruções
Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
Gerência de Memória Fundamentos Swapping Alocação Contígua de memória
SISTEMAS OPERACIONAIS
Gerência de Memória Virtual
Sistemas Operacionais
SISTEMAS OPERACIONAIS I
Sistemas Operacionais
SISTEMAS OPERACIONAIS I Memória Virtual e Paginação
SISTEMAS OPERACIONAIS I
Sistemas Operacionais
Sistemas Operacionais
Capítulo 8: Memória principal
Processos.
Bruno C. Bourbon Jarbas J. de O. Júnior {bcb, cin.ufpe.br
DEPARTAMENTO DE INFORMÁTICA UFPE GRECO Gerenciamento de Memória.
Sistemas Operacionais
Capítulo 8: Memória Principal
Infra-Estrutura de Software Gerenciamento de Memória.
Gerenciamento de Memória
Memória Virtual O problema é que temos um espaço limitado de memória RAM e, cada vez mais, os aplicativos consomem partes maiores dela. E o que o processador.
Gerenciamento de Memória Sistemas Recentes
Bruno Iran Ferreira Maciel
Sistemas de Arquivos Sistemas Operacionais Profa. Priscila Facciolli
Memória Virtual.
MEMÓRIAS.
Gerência de Memória Sidney Cunha de Lucena Baseado no livro
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Gerenciamento de Memória Capítulo Gerenciamento básico de memória 3.2 Troca de processos.
Gerência de Memória. Memória Considerações: Recurso caro e escasso; Programas só executam se estiverem na memória principal; Quanto mais processos residentes.
Sistemas Operacionais Gerência de Memória Funções básicas (número, tamanho e segurança) Alocação contígua simples Técnica de overlay Alocação particionada.
Hierarquia de Memória – Parte 2 Prof. André Luis M. Silva
Estruturas de Sistemas Operacionais. Componentes Comuns do Sistema Administração de Processos Administração da Memória Principal Administração do Armazenamento.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Transcrição da apresentação:

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.

Técnica de Endereçamento -> Imagem do Processo

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çã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çã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 2 U (bloco de maior tamanho que pode ser alocado) Se um pedido de tamanho s é tal que 2 U-1 < s ≤ 2 U, Então: o bloco completo 2 U é 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

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 Endereço físico Tabela de Página

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

Segmento 0 Segmento 3 Segmento 1 Segmento 4 Segmento 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 uma Tabela de Segmento BaseLimite

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 1 Endereço físico Tabela de Segmento SegmentoOffset LimiteBase +

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.