Gerenciamento de memória Qual é mesmo o tópico?....
Gerenciamento de memória Computadores hoje possuem 100 vezes mais memórias que o maior computador da década de 60. Sobre memórias sempre dizemos “que quanto mais, melhor”...sempre... RAM ROM HD
Gerenciamento de Memória O que é gerenciamento de memória ? Parte do sistema operacional responsável em  particionar a memória para acomodar múltiplos processos, essa memória deve ser alocada de forma eficiente afim de acomodar o número máximo de processos
Gerenciamento de Memória A multiprogramação implica em manter-se vários processos em memória. A memória necessita ser alocada de forma eficiente para permitir o máximo possível de processos Existem diferentes técnicas para gerência de memória, que dependem do hardware do processador.
Gerenciamento de Memória processador virtual memória virtual arquivos memória perene read, write copy i) visão do usuário endereço de memória física processador real mapeamento de endereços memória principal memória auxiliar endereço virtual swapping ii) visão do projetista do SO
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
Gerenciamento de Memória
Gerenciamento de Memória Duas grandes Classes As que movem processos de um lado para o outro...(entre memória principal e o disco durante execução) E aquelas que não o fazem. As memórias que não fazem paginação/troca são mais simples... Vamos a elas...
Monoprogramação Um programa por vez Não havia troca/paginação Quando o SO está organizado dessa maneira, somente um processo por vez pode estar em execução.
Monoprogramação
Multiprogramação Partições Fixas da memória (possivelmente desiguais) Múltiplos processos Pelo Sistema operacional Fila de entrada para ocupar a memória Pode ser por tamanho do job Pode ser sem classificação
Multiprogramação
Quais os problemas gerados pela multiprogramação? Isso mesmo.... Realocação e Proteção. Pode ficar a vontade para pesquisar....
Gerenciamento de Memória Realocaçã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.
Gerenciamento de Memória 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).
Gerenciamento de Memória 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
Gerenciamento de Memória 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
Gerenciamento de Memória 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
Troca As vezes a memória principal não é suficiente para armazenar todos os processos Troca entre disco rígido e memória intenso. Duas estratégias Troca (trazer o processo inteiro para execução) Memória Virtual (execução mesmo que parcialmente na memória principal).
Troca
Então o meu computador faz troca-troca? Hummmm...... É possível realizar compactação de memória? Os processos são criados com tamanhos fixos, mas temos variáveis dinâmicas (heap). Um processo pode “crescer” na memória? Recomendo a leitura sobre pilhas!
Memória Virtual É o tamanho combinado do programa, dos dados e da pilha pode exceder a quantidade de memória física disponível para ele. Um programa de 16 Mb pode ocupar um região de 4 Mb. Disco é mais lento que a RAM
Memória Virtual Paginação  Páginas – espaço do endereço virtual que é dividido para receber dados. Mapeamento de Páginas e Molduras. Bit de mapeamento (presente/ausente) X Interrupção em caso de falha de página Tabela de Páginas Multiníveis
 
 
Memória Virtual Algoritmos de substituição de Paginas Problema de desempenho caso o programa for muito utilizado O melhor algoritmo é fácil de descrever amas impossível de por em prática. Não há como saber se página será novamente referenciada.  Realizar  pesquisa sobre os algoritmos  NUR (Não recente usado) First-in/First-out (primeiro a entrar primeiro a sair) Second Chance (segunda-chance)  Clock MRU (menos recente usado)
Memória Virtual FIFO Imagina que você tem um programa que irá começar a rodar neste instante e ocupará boa parte da sua memória.  A mais antiga das aplicações que esta rodando esta no topo da lista. Na ocorrência de uma falta de página, a primeira aplicação a dar espaço será a mais antiga.
Segmentação Memória Virtual é unidimensional. Endereço vai de ZERO a algum lugar (end. Maximo). Ou seja, todo o seu programa deve estar alocado uma porção contínua na memória. Segmentação é a possibilidade de dar espaços independentes para que cada tabela do programa possa usar. Pode crescer ou diminuir de tamanho sem afetarem uns aos outros.
Segmentação
Segmentação
Segmentação Biblioteca Compartilhada Vários programas acessam o segmento que será uniforme para ambos os softwares

Gerenciamento memoria

  • 1.
    Gerenciamento de memóriaQual é mesmo o tópico?....
  • 2.
    Gerenciamento de memóriaComputadores hoje possuem 100 vezes mais memórias que o maior computador da década de 60. Sobre memórias sempre dizemos “que quanto mais, melhor”...sempre... RAM ROM HD
  • 3.
    Gerenciamento de MemóriaO que é gerenciamento de memória ? Parte do sistema operacional responsável em particionar a memória para acomodar múltiplos processos, essa memória deve ser alocada de forma eficiente afim de acomodar o número máximo de processos
  • 4.
    Gerenciamento de MemóriaA multiprogramação implica em manter-se vários processos em memória. A memória necessita ser alocada de forma eficiente para permitir o máximo possível de processos Existem diferentes técnicas para gerência de memória, que dependem do hardware do processador.
  • 5.
    Gerenciamento de Memóriaprocessador virtual memória virtual arquivos memória perene read, write copy i) visão do usuário endereço de memória física processador real mapeamento de endereços memória principal memória auxiliar endereço virtual swapping ii) visão do projetista do SO
  • 6.
    Gerenciamento de MemóriaIdealmente, 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.
  • 8.
    Gerenciamento de MemóriaDuas grandes Classes As que movem processos de um lado para o outro...(entre memória principal e o disco durante execução) E aquelas que não o fazem. As memórias que não fazem paginação/troca são mais simples... Vamos a elas...
  • 9.
    Monoprogramação Um programapor vez Não havia troca/paginação Quando o SO está organizado dessa maneira, somente um processo por vez pode estar em execução.
  • 10.
  • 11.
    Multiprogramação Partições Fixasda memória (possivelmente desiguais) Múltiplos processos Pelo Sistema operacional Fila de entrada para ocupar a memória Pode ser por tamanho do job Pode ser sem classificação
  • 12.
  • 13.
    Quais os problemasgerados pela multiprogramação? Isso mesmo.... Realocação e Proteção. Pode ficar a vontade para pesquisar....
  • 14.
    Gerenciamento de MemóriaRealocaçã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.
  • 15.
    Gerenciamento de MemóriaProteçã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).
  • 16.
    Gerenciamento de MemóriaCompartilhamento 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
  • 17.
    Gerenciamento de MemóriaOrganizaçã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
  • 18.
    Gerenciamento de MemóriaOrganizaçã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
  • 19.
    Troca As vezesa memória principal não é suficiente para armazenar todos os processos Troca entre disco rígido e memória intenso. Duas estratégias Troca (trazer o processo inteiro para execução) Memória Virtual (execução mesmo que parcialmente na memória principal).
  • 20.
  • 21.
    Então o meucomputador faz troca-troca? Hummmm...... É possível realizar compactação de memória? Os processos são criados com tamanhos fixos, mas temos variáveis dinâmicas (heap). Um processo pode “crescer” na memória? Recomendo a leitura sobre pilhas!
  • 22.
    Memória Virtual Éo tamanho combinado do programa, dos dados e da pilha pode exceder a quantidade de memória física disponível para ele. Um programa de 16 Mb pode ocupar um região de 4 Mb. Disco é mais lento que a RAM
  • 23.
    Memória Virtual Paginação Páginas – espaço do endereço virtual que é dividido para receber dados. Mapeamento de Páginas e Molduras. Bit de mapeamento (presente/ausente) X Interrupção em caso de falha de página Tabela de Páginas Multiníveis
  • 24.
  • 25.
  • 26.
    Memória Virtual Algoritmosde substituição de Paginas Problema de desempenho caso o programa for muito utilizado O melhor algoritmo é fácil de descrever amas impossível de por em prática. Não há como saber se página será novamente referenciada. Realizar pesquisa sobre os algoritmos NUR (Não recente usado) First-in/First-out (primeiro a entrar primeiro a sair) Second Chance (segunda-chance) Clock MRU (menos recente usado)
  • 27.
    Memória Virtual FIFOImagina que você tem um programa que irá começar a rodar neste instante e ocupará boa parte da sua memória. A mais antiga das aplicações que esta rodando esta no topo da lista. Na ocorrência de uma falta de página, a primeira aplicação a dar espaço será a mais antiga.
  • 28.
    Segmentação Memória Virtualé unidimensional. Endereço vai de ZERO a algum lugar (end. Maximo). Ou seja, todo o seu programa deve estar alocado uma porção contínua na memória. Segmentação é a possibilidade de dar espaços independentes para que cada tabela do programa possa usar. Pode crescer ou diminuir de tamanho sem afetarem uns aos outros.
  • 29.
  • 30.
  • 31.
    Segmentação Biblioteca CompartilhadaVários programas acessam o segmento que será uniforme para ambos os softwares