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; Memória principal Sistema Operacional Área de Programas do usuário - Sem proteção, pois um usuário pode acessar a área do Sistema Operacional.
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. - 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 do Módulo Principal Área de Overlay 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. Reg Memória principal Sistema Operacional - Programas não ocupam totalmente o espaço das partições, gerando uma fragmentação interna. 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. -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 A 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 Sistema Operacional Memória principal Sistema Operacional programa A programa B Swap Out Swap In programa A programa H programa E programa G B B programa E 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.