Sistemas Operacionais GERÊNCIA da MEMÓRIA MACHADO/MAIA: CAPÍTULO 09 Prof. Pedro Luís Antonelli Anhanguera Educacional Gerenciamento da Memória Programas precisam ser trazidos para a memória para serem executados. É neste momento que programas transformam-se em processos. Como sabemos, os computadores utilizam uma hierarquia de memória em sua organização, combinando memórias voláteis e não-voláteis, tais como: memória cache, memória principal e memória secundária. Gerenciamento da Memória Ao sistema operacional é destinada a função de coordenar e gerenciar a utilização dessas memórias de forma eficiente. Este serviço é implementado pelo sistema operacional através do gerenciador de memória. Memórias - Hierarquia Hierarquia da memória Gerenciamento da Memória As funções básicas de um Gerenciador de Memória são: -Transferir programas da memória; secundária para a memória principal; -Reduzir o número de operações de E/S nesta transferência (pois a memória secundária é lenta); -Manter na memória o maior número possível de processos residentes, maximizando a utilização de recursos; Gerenciamento da Memória -Permitir que novos programas sejam aceitos mesmo que não exista espaço livre de memória; -Permitir a execução de programas maiores do que a memória física; -Proteger as áreas de memória ocupadas por cada processo; -Oferecer mecanismos de compartilhamento de dados e informações. Gerenciamento da 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, pois 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 - Proteção - Registrador de proteção delimita as áreas do sistema operacional e do usuário; Reg - 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 Alocação Contígua Simples - Overlay - Programas de usuário limitados pelo tamanho da memória principal disponível. Memória principal Sistema Operacional - 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 do Módulo Principal - Área de Overlay Área de Overlay – Área de memória comum onde módulos compartilham mesmo espaço. A B C Alocação Particionada - Multiprogramação : Com a multiprogramação começou a existir a 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 Alocação Particionada Estática Alocação Particionada Estática Absoluta: – Compiladores gerando código absoluto, ou seja os endereços são 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, ou seja 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 Reg Sistema Operacional Reg Partição A Partição B Partição C Alocação Particionada Dinâmicamente - Não existe o conceito de partição fixa, e sim que o espaço utilizado por um programa é a sua partição. Memória principal Sistema Operacional -Não ocorre fragmentação interna. Processo A - Ao terminarem, os programas deixam espalhados espaços pequenos de memória, provocando a fragmentação externa. Processo C Processo F Processo E Alocação Particionada Dinâmicamente - 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 tais como tempo de processamento, uso de discos, etc. Memória principal Sistema Operacional Processo A Processo F Processo E Alocação Particionada Dinâmicamente Uma das grandes vantagens desta estratégia é que a flexibilidade obtida melhora bastante a utilização da memória, evitando desperdícios de espaço. Por outro lado, a gerência dos espaços vazios é mais complicada, bem como a alocação e liberação das partições. O sistema operacional mantém uma lista de espaços livres na memória física. . Estratégias de Alocação de Memória Sempre que um novo processo é criado esta lista é percorrida e será usada uma lacuna maior ou igual ao tamanho do processo em questão. Existem algumas técnicas para percorrer esta lista: – Best-Fit (melhor alocação); – Worst-Fit (pior alocação); – First-Fit (primeira alocação); Estratégias de alocação de partição - Best-fit (melhor alocação): A melhor partição é escolhida, ou seja a que o Programa deixa o menor espaço sem utilização. - Espaço mais próximo do tamanho do processo; - Tempo de busca grande; - Provoca fragmentação. Estratégias de alocação de partição - Worst-fit (pior alocação): A pior partição é escolhida, ou seja, a que o programa deixa o maior espaço sem utilização. - Cria o maior espaço possível; - Tempo de busca grande; - Não apresenta bons resultados . Estratégias de alocação de partição - First-fit (primeira alocação): Escolhe a primeira partição livre de tamanho - suficiente para carregar o programa. É a estratégia mais rápida, portanto com a melhor performance Técnica de Swapping - Introduzida para contornar o problema de insuficiência de memória principal. - Permite o compartilhamento da memória principal e maior utilização dos recursos do SO. - Técnica aplicada a gerência de memória para programas que esperam por memória livre para serem executados. Técnica de Swapping • O sistema escolhe um processo residente, que é transferido da memória principal para a memória secundária (Swap out), geralmente um disco. • Posteriormente, o processo é carregado de volta da memória secundária para a memória principal (Swap In) e pode continuar sua execução como se nada tivesse ocorrido Técnica de Swapping Memória principal Sistema Operacional programa A Swap Out programa A Swap In programa B programa H programa E programa E B programa G Sistema Operacional B programa A programa B Técnica de 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. BIBLIOGRAFIA • MACHADO, F. B. & MAIA, L. P., Arquitetura de Sistemas Operacionais, 4 Edição, São Paulo, LTC, 2007. • TANENBAUM, A. S. Sistemas Operacionais Modernos: 2ª edição, São Paulo, editora Prentice Hall, 2003. • SILBERSCHATZ, A. Sistemas Operacionais – Conceitos: São Paulo, editora LTC, 2004.