GERENCIA DE MEMORIA
Introdução e funções básicas Idealmente os programadores querem uma memória que seja • Grande. • Rápida. • Não Volátil. • Baixo custo. Infelizmente a tecnologia atual não comporta tais memórias. A maioria dos computadores utiliza Hierarquia de Memórias
que combina: Uma pequena quantidade de memória cache, volátil, muito
rápida e de alto custo. Uma grande memória principal (RAM), volátil, com centenas de
MB ou poucos GB, de velocidade e custo médios. • Uma memória secundária, não volátil em disco, com
gigabytes (ou terabytes), velocidade e custo baixos.
• Historicamente, a memória principal sempre foi vista como um recurso escasso e caro.
• Desenvolver SO´s que não ocupam muito espaço na memória e, ao mesmo tempo, otimizem a utilização dos recursos computacionais.
• Sistemas Monoprogramáveis • Gerência de memória não é muito complexa. • Sistemas Multiprogramáveis • Gerência de memória é crítica devido à necessidade de
se maximizar o número de usuários e aplicações utilizando eficientemente o espaço da memória principal.
• Em geral, programas são armazenados em memórias secundárias.
• Processador somente executa instruções localizadas na memória principal,por isso o SO deve sempre transferir programas da memória secundária para a memória principal antes de serem executados.
funções básicas do gerenciamento de memória
• A gerência de memória deve tentar manter na memória principal o maior número de processos residentes, permitindo maximizar o compartilhamento do processador e mais recursos computacionais.
• Mesmo na ausência de espaço livre, o sistema deve permitir que novos processos sejam aceitos e executados (swapping)
• A gerência de memória deve permitir a execução de programas que sejam maiores que a memória física disponível Implementada através de técnicas como:
– Overlay– Memória virtual• Em um ambiente de multiprogramação, o
sistema operacional deve proteger as áreas de memória ocupadas por cada processo, além da área onde reside o próprio sistema.
Gerenciador de memória
• Responsável por alocar e liberar espaços na memória para os processos em execução.
• Responsável por gerenciar o chaveamento entre a memória principal e o disco, e memória principal e memória cache.
Alocação Contígua Simples
• Implementada nos primeiros SO´s. • Ainda está presente em alguns sistemas
monoprogramáveis. • Memória principal é subdividida em duas áreas. 1.Sistema Operacional. 2.Programa do usuário. • Usuário tem controle sobre toda a memória principal,
podendo ter acesso a qualquer região de memória. • Os programas são limitados ao tamanho da área de
memória principal disponível ao usuário.
Técnicas de Over lay• O programa alocado na memória é dividido
em módulos, de forma que seja possível a execução independente de cada módulo, utilizando uma mesma área de memória.
• Pode trazer implicações no desempenho das aplicações, devido à possibilidade de transferência excessiva dos módulos entre a memória principal e secundária.
Alocação Particionada Estática• Nos primeiros sistemas multiprogramáveis, a memória
era dividida em pedaços de tamanho fixo, chamados partições.
• O tamanho das partições, estabelecido na fase de inicialização do sistema, era definido em função do tamanho dos programas que executariam no ambiente.
• Sempre que fosse necessária a alteração do tamanho de uma partição, o sistema deveria ser desativado e reinicializado com uma nova configuração.
• Esse tipo de gerência de memória é conhecido como alocação particionada estática ou fixa.
Alocação Par ticionada EstáticaAbsoluta
• Inicialmente, os programas só podiam ser carregados e executados em apenas uma partição específica, mesmo se outras estivessem disponíveis
Alocação Particionada EstáticaRelocável
• No código relocável, todos os programas podem ser executados a partir de qualquer partição.
Tabela de Alocação de Partições
• Para manter o controle sobre quais partições estão alocadas, a gerência de memória mantém uma tabela com o endereço inicial de cada partição, seu tamanho e se está em uso.
Proteção na Alocação Particionada
• Neste esquema de alocação de memória a proteção baseia-se em dois registradores, que indicam os limites inferior e superior da partição onde o programa está sendo executado.
Fragmentação Interna
• Tanto nos sistemas de alocação absoluta quanto nos de alocação relocável os programas, normalmente, não preenchem totalmente as partições onde são carregados.
• Este tipo de problema, decorrente da alocação fixa das partições, é conhecido como fragmentação interna.
• Exemplo de sistema operacional que implementou esse tipo de gerência de memória é o OS/MFT da IBM
Alocação Particionada Dinâmica
• Na alocação particionada dinâmica, ou variável, cada programa utilizaria o espaço necessário, tornando essa área sua partição.
Fragmentação Externa
• Um diferente tipo de fragmentação começará a ocorrer, quando os programas forem terminando e deixando espaços cada vez menores na memória, não permitindo o ingresso de novos programas.
Estratégias de Alocação dePartição
• Os sistema operacionais implementam, basicamente, três estratégias para determinar em qual área livre um programa será carregado para execução.
• A melhor estratégia depende de uma série de fatores, sendo o mais importante o tamanho dos programas processados no ambiente.
Best - fit
• A melhor partição é escolhida, ou seja, aquela em que o programa deixa o menor espaço sem utilização.
• Neste algoritmo, a lista de áreas livres está ordenada por tamanho, diminuindo o tempo de busca por uma área desocupada.
Worst - fit
• A pior partição é escolhida, ou seja, aquela em que o programa deixa o maior espaço sem utilização.
First - fit
• A primeira partição livre de tamanho suficiente para carregar o programa é escolhida.
• Nesse algoritmo, a lista de áreas livres está ordenada por endereços crescentemente
• Das três estratégias apresentadas, a first-fit é a mais rápida, consumindo menos recursos do sistema.
Swapping
• A técnica de swapping foi introduzida para contornar o problema da insuficiência de memória principal.
• O algoritmo de escolha do processo a ser retirado da memória principal deve priorizar aquele com menores chances de ser escalonado.
• Os primeiros sistemas operacionais que implementaram esta técnica surgiram na década de 1960, como o CTSS do MIT e OS/360 da IBM
Exercícios
1- Quais as funções básicas da gerência de memória?2- Qual a diferença entre fragmentação interna e externa
da memória principal?3- Qual a limitação da alocação particionada estática
absoluta em relação à alocação estática relocável?4- Considere um sistema computacional com 40 Kb de
memória principal e que utilize um sistema operacional de 10 kb que implemente alocação contígua de memória. Qual a taxa de subutilização da memória principal para um programa que ocupe 20 Kb de memória?
Correção dos exercicios
1- Quais as funções básicas da gerência de memória?R: Maximizar o número de processos na memória,
permitir a execução de programas maiores que a memória física,compartilhamento de dados na memória e proteção da memória utilizada por cada processo e pelo sistema operacional.
• 2- Qual a diferença entre fragmentação interna e externa da memória principal?
• R: Fragmentação interna ocorre em espaços livres e contíguos na memória principal que são pré-alocados por processos,não possibilitando, portanto, o uso por outros processos. Fragmentação externa ocorre em espaços livres e contínuos,porém tão pequenos que não possibilitam a alocação de programas por processos.
• 3- Qual a limitação da alocação particionada estática absoluta em relação à alocação estática relocável?
• R: A grande diferença entre a alocação particionada estática absoluta e a alocação estática relocável é o local na memóriaprincipal onde programa é carregado. Na alocação absoluta, um programa pode apenas ser carregado a partir de um único endereço, consequentemente em uma única partição. Na alocação relocável, um programa pode ser carregado a partir de qualquer endereço ou partição.
• 4- Considere um sistema computacional com 40 Kb de memória principal e que utilize um sistema operacional de 10 kb que implemente alocação contígua de memória. Qual a taxa de subutilização da memória principal para um programa que ocupe 20 Kb de memória?
• R: Considerando que o sistema operacional e o programa somados ocupam ¾ da memória principal, temos 25% de subutilização da memória. Ou seja: 10Kb.