·

Engenharia de Software ·

Arquitetura de Computadores

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta

Texto de pré-visualização

SISTEMAS SISTEMAS OPERACIONAIS OPERACIONAIS SISTEMAS SISTEMAS OPERACIONAIS OPERACIONAIS Parte 08 Memória Conceitos Básicos Professor Eduardo Xavier Parte 08 Memória Conceitos Básicos Professor Eduardo Xavier Introdução Introdução Gerenciamento de memória tem como função Mapear regiões da memória livre ou em uso Alocar e liberar memória para processos Gerenciar a troca de informações entre a memória principal e o disco quando a memória principal não for grande o suficiente para comportar todos os processos Introdução Introdução Organização Hierárquica de Memória O armazenamento de dados é realizado em diferentes tipos de dispositivos devido a quatro fatores básicos Tempo de acesso Velocidade de operação Custo por unidade de armazenamento Capacidade de armazenamento Introdução Introdução Organização Hierárquica de Memória Os projetistas de SO e de hardware determinam quanto de cada tipo de memória é necessário para que o sistema seja eficiente sem deixar de ser economicamente viável As dificuldades tecnológicas envolvidas no processo de construção dos dispositivos de armazenamento assim como o custo envolvido fizeram com que os dispositivos de armazenamento assumissem uma hierarquia de uso Introdução Introdução Organização Hierárquica de Memória Os projetistas de SO e de hardware determinam quanto de cada tipo de memória é necessário para que o sistema seja eficiente sem deixar de ser economicamente viável As dificuldades tecnológicas envolvidas no processo de construção dos dispositivos de armazenamento assim como o custo envolvido fizeram com que os dispositivos de armazenamento assumissem uma hierarquia de uso Introdução Introdução Organização Hierárquica de Memória Introdução Introdução Organização Hierárquica de Memória Armazenamento Interno Posições de memória disponíveis internamente no processador para agilizar sua manipulação É constituído de registradores do processador e de seu cache interno Possui as maiores velocidades de acesso os menores tempos de acesso e o maior custo de fabricação Introdução Introdução Organização Hierárquica de Memória Armazenamento Primário São posições de memória externa diretamente acessíveis pelo processador São circuitos integrados de memória como por exemplo DRAM SDRAM EPROM O armazenamento primário é considerado um caso intermediário no que diz respeito a velocidade de acesso e tempo de acesso mas seu custo ainda é elevado embora menor que o do armazenamento interno Introdução Introdução Organização Hierárquica de Memória Armazenamento Secundário São posições de memória externa que não podem ser acessadas diretamente pelo processador Para que o processador tenha acesso a elas devem ser movidas para o armazenamento primário antes de sua utilização Exemplo discos rígidos HDs É a forma de armazenamento que possui a maior capacidade tamanho porém sua velocidade é a menor dos três tipos de armazenamento Preocupações do Gerenciamento Preocupações do Gerenciamento de Memória de Memória Tentar manter na memória principal o maior número de processos residentes visando maximizar o uso do processador e o compartilhamento de recursos Gerenciar o espaço ocupado e o espaço livre disponível sem falhas Oferecer meios para a execução de programas que sejam maiores que a memória física disponível Em ambientes multiprogramáveis oferecer proteção aos espaços alocados na memória por cada processo Alocação Contígua Simples Alocação Contígua Simples É uma ideia bem antiga mas ainda está presente até hoje em sistemas monoprogramáveis A memória principal é dividida em duas partes Uma para o sistema operacional Outra para o programa do usuário que está executando no momento O desenvolvedor deve estar preocupado em fazer caber a aplicação inteira nesta área Alocação Contígua Simples Alocação Contígua Simples O usuário tem contrôle sobre toda a memória inclusive a parte do SO Para evitar acidentes alguns SOs implementam uma proteção por meio de um registrador que delimita a fronteira entre a área do SO e a área da aplicação Em caso de invasões acidentais ou propositais é gerado um erro de violação de acesso Alocação Contígua Simples Alocação Contígua Simples Apesar de fácil de ser implementada essa não é uma abordagem eficiente Apenas um usuário por vez faz uso dos recursos do SO A memória não utilizada por este usuário não pode ser aproveitada para outra coisa Técnica de Overlay Técnica de Overlay Na alocação contígua todo o programa deve caber na memória Para ultrapassar essa barreira de tamanho usase a técnica de overlay que divide o programa em módulos independentes O módulo principal fica sempre na memória Uma referencia a um outro módulo faz com que este seja carregado na área de overlay se já não estiver lá O programador define a área de overlay via programação O tamanho da área de overlay é igual ao tamanho do maior módulo A técnica pode causar problemas de desempenho em aplicações mal projetadas Alocação Particionada Estática Alocação Particionada Estática Criada com os primeiros sistemas multiprogramados essa técnica funciona dividindose a memória em porções de tamanho fixo chamadas de partições O tamanho de cada partição é definido na inicialização do sistema de acordo com a conveniencia do ambiente Este tamanho não mudará até uma nova inicialização Inicialmente os programas só podiam ser carregado em uma partição específica mesmo que as demais partições estivessem vazias Isso era uma limitação dos compiladores e montadores da época Nas versões posteriores isso foi superado com a adoção de código relocável que usa referências dinâmicas a partir do endereço inicial do programa e não endereços físicos fixos da memória O gerenciamento de memória mantém uma tabela com os endereços de início de cada partição seu tamanho e se está em uso Com essa tabela é possível calcular endereços dinâmicos para cada programa Alocação Particionada Estática Alocação Particionada Estática Alocação Particionada Estática Alocação Particionada Estática Alocação particionada estática ABSOLUTA e Alocação particionada estática RELOCÁVEL Alocação Particionada Estática Alocação Particionada Estática Fragmentação interna Em boa parte das vezes o programa que está executando não tem o tamanho exato de sua partição A diferença de tamanho gera fragmentação interna da memória Alocação Particionada Dinâmica Alocação Particionada Dinâmica A alocação particionada estática apresentava diversos problemas e uma nova solução foi criada para aumentar a eficiência de compartilhamento da memória e lidar melhor com a fragmenteção A alocação particionada dinâmica ou variável eliminou o conceito de partições de tamanho fixo Cada programa passa a alocar uma partição extamente do tamanho que precisar o que resolve o problema de fragmentação interna Porém um outro tipo de fragmentação passa a ocorrer por conta dos buracos deixados por programas que já executaram e liberaram os endereços das partições que alocaram quando estavam em execução Chamamos a esse problema de fragmentação externa Alocação Particionada Dinâmica Alocação Particionada Dinâmica Alocação Particionada Dinâmica Alocação Particionada Dinâmica Fragmentação Externa Alocação Particionada Dinâmica Alocação Particionada Dinâmica Como resolver a fragmentação externa Solução 1 Unificar espaços livres adjacentes na medida em que os programas forem encerrando É uma solução mais simples porém com resultados mais limitados Alocação Particionada Dinâmica Alocação Particionada Dinâmica Como resolver a fragmentação externa Solução 2 Reorganizar todo o espaço de memória existente Inclusive o espaço ocupado por outros programas É uma solução que oferece resultados mais completos porém é mais complexa e dispendiosa Estratégias de Alocação de Partição Estratégias de Alocação de Partição A melhor estratégia de alocação de partição depende de vários fatores mas o principal é o tamanho do programa O sistema operacional mantém uma lista com o endereço e o tamanho de todas as áreas livres disponíveis Existem três estratégias básicas para a alocação de memória de partição BestFit WorstFit FirstFit Estratégias de Alocação de Partição Estratégias de Alocação de Partição Estratégia BestFit O sistema escolhe o espaço que melhor se ajusta ao programa ou seja o que deixa o menor espaço sem utilização A lista de endereços livres está ordenada por tamanho para reduzir o tempo de busca Desvantagem a longo prazo aumenta a quantidade de pequenos fragmentos não utilizáveis Estratégias de Alocação de Partição Estratégias de Alocação de Partição Estratégia WorstFit O sistema escolhe o espaço que pior se ajusta ao programa ou seja o que deixa o maior espaço sem utilização Permite um número maior de programas serem carregados diminuindo assim o impacto da fragmentação Estratégias de Alocação de Partição Estratégias de Alocação de Partição Estratégia FirstFit O sistema escolhe o espaço que o primeiro espaço livre que se ajusta ao programa sem se importar se é a melhor ou pior escolha A lista de espaços livres está ordenada por ordem de endereços A tendência é encontrar os maiores espaços nos endereços mais altos É a estratégia mais rápida Swapping Swapping Em um sistema de Processamento em Lotes a organização de memória em partições fixas é simples e eficiente Desde que jobs suficientes possam ser mantidos na memória de modo que o processador fique ocupado todo o tempo não existe razão para usar outra organização mais complexa Em sistemas de tempo compartilhado a situação é diferente Normalmente existem mais usuários do que memória para manter todos os seus processos programas É necessário manter os processos em excesso no disco Para executar tais processos é necessário que eles sejam trazidos para a memória principal O movimento de processos da memória principal para o disco e viceversa é denominado de SWAPPING Swapping Swapping Nos particionamentos estático e dinâmico um programa permanece na memória principal até o final da sua execução inclusive nos momentos em que espera um evento como uma operação de leitura ou gravação em periféricos Em outras palavras o programa somente sai da memória principal quando tivesse terminada sua execução O swapping permite que programas sejam retirados da memória principal durante sua execução sob certas condições O swapping pode ser usado em ambientes com partições de tamanho variável O movimento de processos ocorre da seguinte forma SWAP OUT Mover um programa da memória principal para o disco SWAP IN Voltar do disco para a memória principal Conceito Memória Principal Sistema Operacional Programa A Programa B Programa E Programa G Swap out Arquivo de Swap Programa A Programa H Programa E Área Livre Swapping Swapping O algoritmo de escolha do processo que deve ser retirado da memória deve priorizar os processos com menores chances de serem executados O sistema deve prover relocação dinâmica de programas para que os programas movidos não sejam dependendtes de endereços fixos da memória Assim podem ser movidos para qualquer endereço livre sem erros Isso pode se resolver cm um registrador especial Registrador de Relocação que guarda o rndereço inicial de carregamento do programa A apartir dele é possível calcular os endereços de cada instrução somandose esse valor A grande desvantagem do swapping é o aumento da quantidade de operações de entradasaída no disco Swapping Swapping Registrador de relocação Referências Bibliográficas Referências Bibliográficas Arquitetura de Sistemas Operacionais Francis Machado Luiz Maia 4a Edição Capítulo 9 Gerência de Memória