Gerência  de Memória Ernesto Massa
Memória Considerações: Recurso  caro  e  escasso ; Programas só executam se estiverem na memória principal; Quanto mais processos  residentes  na memória principal, melhor será o  compartilhamento  do processador; Necessidade de uso otimizado; O S.O. não deve ocupar muita memória; “ É um dos fatores mais importantes em um projeto de S.O.”.
Gerenciamento de Memória Algumas funções do Gerenciador de memória: Controlar  quais as unidades de memória estão ou não estão em uso, para que sejam alocadas quando necessário; Liberar  as unidades de memória que foram desocupadas por um processo que finalizou; Tratar do  Swapping  entre memória principal e memória secundária. Transferência temporária de processos residentes na memória principal para memória secundária.
Gerenciamento de Memória Técnicas de Alocação de Memória: Alocação Contígua Simples; Alocação Particionada Estática; Alocação Particionada Estática Absoluta; Alocação Particionada Estática Relocável; Alocação Particionada Dinâmica.
Alocação Contígua Simples Alocação implementada nos primeiros sistemas e ainda usada nos monoprogramáveis; A Memória é dividida em duas áreas:  Área do Sistema Operacional Área do Usuário Um usuário não pode usar uma área maior do que a disponível; Sem proteção: Um usuário pode acessar a área do Sistema Operacional. Memória principal  Sistema  Operacional Área de Programas  do usuário
Alocação Contígua Simples Registrador de proteção delimita as áreas do  sistema operacional  e do  usuário ; Sistema verifica acessos à memória em relação ao  endereço do registrador ; A forma de alocação era simples, mas não permitia utilização eficiente de processador e memória; Memória principal  Sistema  Operacional Área de Programas  do usuário Reg
Alocação Contígua Simples Programas de usuário  limitados  pelo tamanho da memória principal disponível.  Solução:  Overlay Dividir o programa em módulos; Permitir execução  independente  de cada módulo, usando a mesma área de memória; Área de Overlay Área de memória comum onde módulos  compartilham  mesmo espaço. Memória principal  Sistema  Operacional Área de Overlay Área do  Módulo  Principal A B C
Alocação Particionada Multiprogramação . Necessidade do uso da memória por vários usuários simultaneamente. Ocupação mais eficiente do processador; A memória foi dividida em pedaços de tamanho fixo chamados  partições ; O tamanho de cada partição era estabelecido na  inicialização  do sistema; Para alteração do particionamento, era necessário uma nova inicialização com uma nova configuração.
Alocação Particionada Estática Alocação Particionada Estática  Absoluta : Compiladores gerando  código absoluto ; Endereços relativos ao início da memória; Programas exclusivos para  partições específicas . Alocação Particionada Estática  Relocável : Compiladores gerando  código relocável ; Endereços relativos ao início da partição; Programas podem rodar em  qualquer partição .
Alocação Particionada Estática Proteção: Registradores com limites inferior e superior de memória acessível. Programas não ocupam totalmente o espaço das partições, gerando uma  fragmentação interna .  Memória principal  Sistema  Operacional Partição C Partição A Reg Reg Partição B
Alocação Particionada Dinâmica Não existe o conceito de partição dinâmica. O espaço utilizado por um programa  é  a sua partição. Não ocorre fragmentação interna. Ao terminarem, os programas deixam espalhados espaços  pequenos de memória, provocando a  fragmentação externa . Memória principal  Sistema  Operacional Processo E Processo A Processo C Processo F
Alocação Particionada Dinâmica Soluções: Reunião  dos espaços contíguos. Relocação Dinâmica : Movimentação dos programas pela memória principal. Resolve o problema da fragmentação. Consome recursos do sistema Processador, disco, etc.  Memória principal  Sistema  Operacional Processo E Processo A Processo F
Gerência de Memória Mapeamento de bits:  Cada bit representa uma unidade de alocação; Raramente é utilizado atualmente. É muito lenta. Mapeamento da Memória com listas ligadas : Header P/B início tamanho P/B início tamanho P: Processo B: Buraco
Gerência de Memória Mapeamento da Memória com listas ligadas: Best-Fit  (melhor alocação): Espaço mais próximo do tamanho do processo; Tempo de busca grande; Provoca fragmentação. Worst-Fit  (pior alocação): Cria o maior espaço possível; Tempo de busca grande; Não apresenta bons resultados. First-Fit  (primeira alocação): Melhor performance. Next-Fit  (proxima alocação): Performance inferior ao First-Fit.
Gerência de Memória Considerações sobre Mapeamento da Memória com listas ligadas : Todos melhoram em performance se existirem listas distintas para processos e espaços, embora o algoritmo fique mais complexo. Listas ordenadas por tamanho de espaço melhoram a performance.
Swapping Os processos ficavam na memória principal, mesmo se bloqueados pela espera de algum evento. Solução:  Swapping . Técnica para resolver problema de processos que aguardam por espaço livre adequado; Processos não ficam mais na memória o tempo todo.
Swapping Um processo residente na memória é levado para o disco ( Swapped-Out ), dando lugar a outro; O processo Swapped-Out retorna à memória ( Swapped-In ), sem “perceber” o que ocorreu. programa B programa A programa E programa A programa G Sistema Operacional Memória principal programa H programa E programa A B B Swap In Swap Out Sistema Operacional programa B
Swapping Problema gerado pelo Swapping: Relocação  de processos:  O  tempo  gasto com relocação é alto; Um mesmo processo sendo Swapped-Out repetidas vezes gera um alto consumo de CPU.
Swapping Vantagens da técnica de  Swapping : Permite maior  compartilhamento  da memória; Aumento no  Throughput  (quantidade de processos executados por unidade de tempo); Eficiente para sistemas com poucos usuários e pequenas aplicações; Problema: custo do Swapping (in/out).

Gerência de Memória

  • 1.
    Gerência deMemória Ernesto Massa
  • 2.
    Memória Considerações: Recurso caro e escasso ; Programas só executam se estiverem na memória principal; Quanto mais processos residentes na memória principal, melhor será o compartilhamento do processador; Necessidade de uso otimizado; O S.O. não deve ocupar muita memória; “ É um dos fatores mais importantes em um projeto de S.O.”.
  • 3.
    Gerenciamento de MemóriaAlgumas funções do Gerenciador de memória: Controlar quais as unidades de memória estão ou não estão em uso, para que sejam alocadas quando necessário; Liberar as unidades de memória que foram desocupadas por um processo que finalizou; Tratar do Swapping entre memória principal e memória secundária. Transferência temporária de processos residentes na memória principal para memória secundária.
  • 4.
    Gerenciamento de MemóriaTécnicas de Alocação de Memória: Alocação Contígua Simples; Alocação Particionada Estática; Alocação Particionada Estática Absoluta; Alocação Particionada Estática Relocável; Alocação Particionada Dinâmica.
  • 5.
    Alocação Contígua SimplesAlocação implementada nos primeiros sistemas e ainda usada nos monoprogramáveis; A Memória é dividida em duas áreas: Área do Sistema Operacional Área do Usuário Um usuário não pode usar uma área maior do que a disponível; Sem proteção: Um usuário pode acessar a área do Sistema Operacional. Memória principal Sistema Operacional Área de Programas do usuário
  • 6.
    Alocação Contígua SimplesRegistrador de proteção delimita as áreas do sistema operacional e do usuário ; Sistema verifica acessos à memória em relação ao endereço do registrador ; A forma de alocação era simples, mas não permitia utilização eficiente de processador e memória; Memória principal Sistema Operacional Área de Programas do usuário Reg
  • 7.
    Alocação Contígua SimplesProgramas de usuário limitados pelo tamanho da memória principal disponível. Solução: Overlay Dividir o programa em módulos; Permitir execução independente de cada módulo, usando a mesma área de memória; Área de Overlay Área de memória comum onde módulos compartilham mesmo espaço. Memória principal Sistema Operacional Área de Overlay Área do Módulo Principal A B C
  • 8.
    Alocação Particionada Multiprogramação. Necessidade do uso da memória por vários usuários simultaneamente. Ocupação mais eficiente do processador; A memória foi dividida em pedaços de tamanho fixo chamados partições ; O tamanho de cada partição era estabelecido na inicialização do sistema; Para alteração do particionamento, era necessário uma nova inicialização com uma nova configuração.
  • 9.
    Alocação Particionada EstáticaAlocação Particionada Estática Absoluta : Compiladores gerando código absoluto ; Endereços relativos ao início da memória; Programas exclusivos para partições específicas . Alocação Particionada Estática Relocável : Compiladores gerando código relocável ; Endereços relativos ao início da partição; Programas podem rodar em qualquer partição .
  • 10.
    Alocação Particionada EstáticaProteção: Registradores com limites inferior e superior de memória acessível. Programas não ocupam totalmente o espaço das partições, gerando uma fragmentação interna . Memória principal Sistema Operacional Partição C Partição A Reg Reg Partição B
  • 11.
    Alocação Particionada DinâmicaNão existe o conceito de partição dinâmica. O espaço utilizado por um programa é a sua partição. Não ocorre fragmentação interna. Ao terminarem, os programas deixam espalhados espaços pequenos de memória, provocando a fragmentação externa . Memória principal Sistema Operacional Processo E Processo A Processo C Processo F
  • 12.
    Alocação Particionada DinâmicaSoluções: Reunião dos espaços contíguos. Relocação Dinâmica : Movimentação dos programas pela memória principal. Resolve o problema da fragmentação. Consome recursos do sistema Processador, disco, etc. Memória principal Sistema Operacional Processo E Processo A Processo F
  • 13.
    Gerência de MemóriaMapeamento de bits: Cada bit representa uma unidade de alocação; Raramente é utilizado atualmente. É muito lenta. Mapeamento da Memória com listas ligadas : Header P/B início tamanho P/B início tamanho P: Processo B: Buraco
  • 14.
    Gerência de MemóriaMapeamento da Memória com listas ligadas: Best-Fit (melhor alocação): Espaço mais próximo do tamanho do processo; Tempo de busca grande; Provoca fragmentação. Worst-Fit (pior alocação): Cria o maior espaço possível; Tempo de busca grande; Não apresenta bons resultados. First-Fit (primeira alocação): Melhor performance. Next-Fit (proxima alocação): Performance inferior ao First-Fit.
  • 15.
    Gerência de MemóriaConsiderações sobre Mapeamento da Memória com listas ligadas : Todos melhoram em performance se existirem listas distintas para processos e espaços, embora o algoritmo fique mais complexo. Listas ordenadas por tamanho de espaço melhoram a performance.
  • 16.
    Swapping Os processosficavam na memória principal, mesmo se bloqueados pela espera de algum evento. Solução: Swapping . Técnica para resolver problema de processos que aguardam por espaço livre adequado; Processos não ficam mais na memória o tempo todo.
  • 17.
    Swapping Um processoresidente na memória é levado para o disco ( Swapped-Out ), dando lugar a outro; O processo Swapped-Out retorna à memória ( Swapped-In ), sem “perceber” o que ocorreu. programa B programa A programa E programa A programa G Sistema Operacional Memória principal programa H programa E programa A B B Swap In Swap Out Sistema Operacional programa B
  • 18.
    Swapping Problema geradopelo Swapping: Relocação de processos: O tempo gasto com relocação é alto; Um mesmo processo sendo Swapped-Out repetidas vezes gera um alto consumo de CPU.
  • 19.
    Swapping Vantagens datécnica de Swapping : Permite maior compartilhamento da memória; Aumento no Throughput (quantidade de processos executados por unidade de tempo); Eficiente para sistemas com poucos usuários e pequenas aplicações; Problema: custo do Swapping (in/out).