Gerência de Recursos
Gerência de Memória
Alocação Particionada Dinâmica
• Na alocação particionada dinâmica ou variável, foi eliminado o conceito de partições de tamanho fixo.
• Nesse esquema, cada programa utilizara o espaço necessário, tornando essa área sua partição.
Alocação Particionada Dinâmica
Memória PrincipalMemória Principal
Sistema OperacionalSistema Operacional
4 Kb
1 Kb
3 Kb
5 Kb
2 Kb
15 Kb
Programa C
Programa B
Programa A
Programa EBA
2 Kb
E
3 Kb
C
1 Kb 4 Kb
Alocação Particionada Dinâmica
• A principio, o problema da fragmentação interna está resolvido, porém, nesse caso, existe um problema que não é tão obvio quanto no esquema anterior.
• Um tipo diferente 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.
Alocação Particionada Dinâmica
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
D
6 Kb
Alocação Particionada Dinâmica
• Mesmo existindo espaço o exemplo anterior não será executado pois precisa de 6 Kb para ser carregado, este problema se chama fragmentação externa.
• Existem duas soluções para isto:– Primeira solução = conforme os programas
terminam, apenas os espaços livres adjacentes são reunidos, produzindo áreas livres de tamanho maior. Caso o programa C termine, uma área de 8 Kb será criada.
Alocação Particionada Dinâmica
Memória PrincipalMemória Principal
Sistema OperacionalSistema Operacional
8 Kb
4 Kb
3 Kb
5 Kb5 Kb
Programa C
Programa APrograma A
Alocação Particionada Dinâmica
– Segunda solução = envolve a relocação de todas as partições ocupadas, eliminando todos os espaços entre elas e criando uma única área livre contígua.
– Para que este processo seja possível, énecessário que o sistema tenha a capacidade de mover os diversos programas na memória principal.
Alocação Particionada Dinâmica
Memória PrincipalMemória Principal
Sistema Operacional
Relocação
Sistema Operacional
4 Kb
3 Kb
12 Kb
5 Kb
Programa C
Programa C
Programa A
Programa A
Estratégias de Alocação de Partição
• Os SO’s implementam, basicamente, três estratégias para determinar em qual área livre um programa será carregado para execução.
• Essas estratégias tentam evitar ou diminuir o problema da fragmentação externa.
Estratégias de Alocação de Partição
• A melhor estratégia a ser adotada por um sistema depende de uma série de fatores, sendo o mais importante o tamanho dos programas processados no ambiente.
• Independentemente do algoritmo utilizado, o sistema possui uma lista de áreas livres, com o endereço e tamanho de cada área.
Alocação Particionada Dinâmica
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
Áreas livresÁrea livre 1
Área livre 2
Área livre 3
Tamanho
1 4 Kb
2 5 Kb
3 3 Kb
Estratégias de Alocação de Partição
• Best-fit– A melhor partição é escolhida, ou seja, aquela
em que o programa deixa menor espaço sem utilização.
– Nesse algoritmo, a lista de áreas livres estáordenada por tamanho, diminuindo o tempo de busca por uma área desocupada.
– Uma grande desvantagem desse método éconseqüência do próprio algoritmo. Como éalocada a partição que deixa a menor área livre, a tendência é que cada vez mais a memória fique com pequenas áreas livres.
Alocação Particionada Dinâmica
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
F
1 Kb
Sistema Operacional
2 Kb
Programa C
Programa F
Programa A
Área livre
Best-fit
Estratégias de Alocação de Partição
• Worst-fit– A pior partição é escolhida, ou seja, aquela em
que o programa deixa o maior espaço sem utilização.
– Apesar de utilizar as maiores partições, a técnica deixa espaços livres maiores que permitem a um maior número de programas utilizar a memória, diminuindo o problema de fragmentação.
Alocação Particionada Dinâmica
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
F
1 Kb
Sistema Operacional
4 Kb
Programa C
Programa A
Área livre
Programa F(b) Worst-fit
Estratégias de Alocação de Partiçã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 crescentemente por endereços.– Como o método tenta primeiro utilizar as áreas
livres de endereços mais baixo, existe uma grande chance de se obter uma grande partição livre nos endereços de memória mais altos.
– Na média esta é a mais Rápida.
Alocação Particionada Dinâmica
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
F
1 Kb
Sistema Operacional
3 Kb
Programa C
Programa A
Área livre
Programa F
First-fit
Swapping
• Mesmo com o aumento da eficiência da multiprogramação e, particularmente, da gerência de memória, muitas vezes um programa não podia ser executado por falta de uma partição livre disponível.
• A técnica de swapping foi introduzida para contornar o problema da insuficiência de memória principal.
Swapping
• Em todos os esquemas apresentados anteriormente, um processo permanecia na memória principal até o final da sua execução, inclusive nos momentos em que esperava por um evento, como uma operação de leitura ou gravação.
• O swapping é uma técnica aplicada àgerência de memória para programas que esperam por memória livre para serem executados.
Swapping
• Nesta situação, o sistema escolhe um processo residente, que é transferido da memória principal para a memória secundária (swap out), geralmente 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.
SwappingMemória Principal
Memória Principal
SistemaOperacional
SistemaOperacional
Programa A
Programa A
Programa G
Área LivreSwap in
Swap out
Arquivode Swap
Programa E
Programa E
Programa B
Programa H
H
B
B
Swapping
• O algoritmo de escolha do processo a ser retirado da memória principal deve priorizar aquele com menores chances de ser executado, para evitar o swapping desnecessário de um processo que seráexecutado logo em seguida.
• Os processos retirados da memória estão geralmente no estado de espera, mas existe a possibilidade de um processo no estado de pronto também ser selecionado.
Swapping
• Para que a técnica de swapping seja implementada, é essencial que o sistema ofereça um loader que implemente a relocação dinâmica de um programa.
• O conceito de swapping permite maior compartilhamento da memória principal e, conseqüentemente, maior utilização dos recursos do sistema computacional.
Swapping
• Seu maior problema é o elevado custo das operações de entrada/saída (swap in/out).
• Em situações críticas, quando há pouca memória disponível, o sistema pode ficar quase que dedicado à execução de swapping, deixando de realizar outras tarefas e impedindo a execução dos processos residentes.
Swapping
• Os primeiros SO’s que implementaram está técnica surgiram na década de 1960, como o CTSS do MIT e OS/360 da IBM.
• Com a evolução dos SO, novos esquemas de gerência de memória passaram a incorporar a técnica de swapping, como a gerência de memória virtual.
Recommended