Escolar Documentos
Profissional Documentos
Cultura Documentos
Gerência de Memória II
Gerência de Memória II
Gerência de Memória
Introdução
Edson Moreno
edson.moreno@pucrs.br
http://www.inf.pucrs.br/~emoreno
Slides baseados nas apresentações dos prof. Tiago Ferreto e Alexandra Aguiar
Conceitos básicos
Memória principal
Central em sistemas de computador
Seletor
Seleciona o espaço da memória correspondente ao endereço
Conceitos básicos
Memória
0
1
2
3
Seletor
Registrador 4 Registrador
de endereço intermediário
…
N-2
N-1
Requisitos de gerenciamento de memória
Relocação
Processo pode estar em qualquer posição da memória
Proteção
Processos tem de ter espaço reservado
Compartilhamento
Deve haver espaço comum entre processos
Organização lógica
Organização intemediária dada pela visão de hw e sw
Organização física
Organização a ser tomada para, por exemplo, transferência de
dados entre a memória secundária e a principal
Relocação
Quando o programa é carregado na memória o verdadeiro
(absoluto) endereço de memória é determinado
Proteção de acesso
11
MMU
Relocação
Requisitos: Proteção
Funcionalidade
Evitar o acesso não desejado ou indevido de outros processos
Acesso pode alterar bytes armazenados no espaço do processo
Acesso pode ocorrer de forma acidental ou intencional
Recurso utilizado
Registradores de limite inferior e superior
Demarcam o início e o fim do espaço de endereçamento de um
processo
Funcionamento
se (endereço a ser acessado < registrador de limite inferior) então
gera interrupção - endereço ilegal
se (endereço a ser acessado > registrador de limite superior) então
gera interrupção - endereço ilegal
acessa memória[end]
Proteção de acesso
Recursos utilizados
Funcionamento
se (endereço a ser acessado > registrador limite) então
gera interrupção - endereço ilegal
senão end = end + regbase
acessa memória[end]
Requisitos: Compartilhamento
Funcionalidade
Permitir a vários processos que acessem uma mesma porção de
memória
Característica do software
Programas são escritos em módulos
Módulos podem ser escritos e compilados independentemente
A cada módulo pode-se aplicar diferentes níveis de proteção
Imutáveis: Apenas leitura, apenas execução
Mutáveis: Permite escrita
Responsabilidade:
Não pode ser deixada ao programador
Memória disponível pode ser insuficiente para a carga de um processo
Solução por parte do programador partiria da exploração de overlaying
o Overlay: uso de um mesmo espaço de memória para diferentes
módulos e dados, carregados conforme necessário
Dinamicidade em ambientes de multiprogramação causa imprevisibilidade
Em tempo de compilação o programador não sabe
o Quanto espaço terá disponível em memória
o Onde terá espaço disponível na memória
Monoprogramação
Cenário
Existe um único processo em execução na memória
Permite o uso de toda a parte que resta da memória
A memória é dividida
Sistema operacional
Processo do usuário
Monoprogramação
Formas de organizar a memória
Multiprogramação
Existem vários processos na memória
Coexistência de processos
Aptos à executar
Em execução
Particionamento da memória
Dá suporte à multiprogramação
Consequência
Fragmentação interna:
Ocorre quando o tamanho da partição é maior que o tamanho do processo
Espaço que sobra dentro da partição quando processo é alocado na partição
Fragmentação externa:
Detectado quando existem partições livres que, se combinadas, poderiam ser
usadas por um processo que está aguardando
Partições fixas
Proposta de solução para fragmentações
Emprego de partições de tamanhos distintos, mas fixos
Exemplo da figura
Processos de até 16M podem ser acomodados
Processos menores podem ser acomodados nas partições menores,
reduzindo a fragmentação interna
Partições fixas
Algoritmo de alocação
Partições de tamanho equivalentes
Trivial: Havendo espaço disponível, aloca-se para o processo em carga
Desvantagens
O número de processos ativos é limitados pelo número de partiçoes
Partiçoes são definidas durante o tempo de geração do sistema
Processos muito pequenos não usam o espaço eficientemente
Em ambos os métodos (tamanhos iguais ou diferentes)
P3
Consome tempo e gasta tempo de CPU
(18M)
Empty (4M)
Partições variáveis
Alocação de partições
Sistema operacional deve decidir qual bloco livre será associado
a um processo
Algoritmos de alocação
Best-fit
First-fit
Next-fit
Worst-fit
Partições variáveis
Best-fit
Escolhe-se a partição onde o processo deixa o menor espaço sem utilização
Escolhe o bloco cujo tamanho é o mais próximo do requisitado
Nesse algoritmo
Desempenho ruim quando todos os blocos tem de ser avaliados
Objetivo é garantir a melhor escolha de partição livre
Otimização
A lista de áreas livres está ordenada por tamanho
Diminuindo o tempo de busca por uma área desocupada.
Desvantagem do algoritmo
Escolha da partição mais aproximada resulta em pequenas partições livres
Tendência é ter grande quantidade de pequenas áreas livres não-contíguas
Aumentando o problema da fragmentação.
Nesse algoritmo
A lista de áreas livres deve estar ordenada por tamanho para otimizar busca
Comparado ao best-fit
Reduz (não elimina) o problema da fragmentação
Partições variáveis
First-fit
Busca por espaço livre
Varre a memória do início
Escolhe o primeiro bloco disponível que seja grande o suficiente
Next-fit
Similar ao First-fit
Diferença está na busca, que ocorre a partir do endereço da última posição alocada
Exercícios
1) Considere um sistema cuja gerência de memória é feita através de
partições variáveis. Nesse momento, existem as seguintes
lacunas: 10k, 4k, 20k, 18k, 7k, 9k, 12k e 13k, nessa ordem.
Quais espaços serão ocupados pelas solicitações: 5k, 10k e 6k,
nessa ordem, se:
37
Resposta 1
Lacunas: 10k, 4k, 20k, 18k, 7k, 9k, 12k e 13k
Solicitações: 5k, 10k e 6k
First-fit: Next-fit:
* 5k, 4k, 20k, 18k, 7k, 9k, 12k e 13k * 5k, 4k, 20k, 18k, 7k, 9k, 12k e 13k
* 5k, 4k, 10k, 18k, 7k, 9k, 12k e 13k * 5k, 4k, 10k, 18k, 7k, 9k, 12k e 13k
* 5k, 4k, 4k, 18k, 7k, 9k, 12k e 13k * 5k, 4k, 10k, 12k, 7k, 9k, 12k e 13k
Best-fit: Worst-fit:
*10k, 4k, 20k, 18k, 2k, 9k, 12k e 13k * 10k, 4k, 15k, 18k, 7k, 9k, 12k e 13k
*(0k), 4k, 20k, 18k, 2k, 9k, 12k e 13k * 10k, 4k, 15k, 8k, 7k, 9k, 12k e 13k
*(0k), 4k, 20k, 18k, 2k, 3k, 12k e 13k * 10k, 4k, 9k, 8k, 7k, 9k, 12k e 13k
Exercícios
2) Considere novamente um sistema cuja gerência de memória é
feita através de partições variáveis. Nesse momento, existem as
seguintes lacunas: 10k, 4k, 20k, 18k, 7k, 9k, 12k e 13k, nessa
ordem. Quais espaços serão ocupados pelas solicitações: 15k, 4k e
8k, nessa ordem, se:
First-fit: Next-fit:
* 10k, 4k, 5k, 18k, 7k, 9k, 12k e 13k * 10k, 4k, 5k, 18k, 7k, 9k, 12k e 13k
* 6k, 4k, 5k, 18k, 7k, 9k, 12k e 13k * 10k, 4k, 5k, 14k, 7k, 9k, 12k e 13k
* 6k, 4k, 5k, 10k, 7k, 9k, 12k e 13k * 10k, 4k, 5k, 14k, 7k, 1k, 12k e 13k
Best-fit: Worst-fit:
* 10k, 4k, 20k, 3k, 7k, 9k, 12k e 13k * 10k, 4k, 5k, 18k, 7k, 9k, 12k e 13k
* 10k, 0k, 20k, 3k, 7k, 9k, 12k e 13k * 10k, 4k, 5k, 14k, 7k, 9k, 12k e 13k
* 10k, 0k, 20k, 3k, 7k, 1k, 12k e 13k * 10k, 4k, 5k, 6k, 7k, 9k, 12k e 13k
Exercício
• Um sistema utiliza alocação particionada dinâmica como
mecanismo de gerência de memória. O sistema operacional
aloca uma área de memória total de 50Kb e possui, inicialmente,
os processos da tabela a seguir: 5 Kb Processo A
3 Kb Processo B
10 Kb Livre
6 Kb Processo C
26 Kb Livre
• Realize as operações abaixo seqüencialmente, mostrando o estado
da memória após cada uma delas. Resolva a questão utilizando as
estratégias best-fit, worst-fit e first-fit.
a) alocar uma área para o programa D que possui 6 Kb;
128
AK 128 K 256 K 512 K
Exemplo
Árvore de representação do Buddy