Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O....

21
Gerência de Memória

Transcript of Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O....

Page 1: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Gerência de Memória

Page 2: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Alocação Contígua Simples

• Implementada nos primeiros S.O.• Monoprogramáveis• Programador se preocupa em não ultrapassar a memória disponível.• O usuário tem controle sobre toda a memória principal.

Page 3: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Alocação Contígua Simples

• Implementação para proteção através de um registrador que delimita as áreas do S.O. e usuário.

•Caso o programa do usuário não preencha totalmente, existirá um espaço de memória livre sem utilização.

Page 4: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Técnica de Overlay

A técnica é dividir o programa em módulos, de forma que seja possível a execução independente de cada módulo, utilizando uma mesma área de memória.

Page 5: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Alocação Particionada

Podem ser:Estática – tamanho fixo (partições)

AbsolutaRelocável

Dinâmica – tamanho variável

Page 6: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Alocação Particionada Estática

O tamanho das partições é estabelecido na fase da inicialização do sistema, era definido em função do tamanho dos programas que executariam no ambiente.Caso fosse necessária a alteração do tamanho da partição, o sistema deveria ser reiniciado com uma nova configuração.

Page 7: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Alocação Particionada EstáticaAlocação Particionada Estática AbsolutaOs programas só podiam ser carregados e executados em apenas uma partição específica, mesmo se outras estivessem disponíveis, que eram as limitações dos compiladores e montadores.

Todas as referências a endereços no programa são posições físicas na memória principal

Page 8: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Alocação Particionada EstáticaAlocação Particionada Estática RelocávelTodas as referências a endereços no programa são relativas ao início do código e não a endereços físicos de memória. Podendo os programas ser executados em qualquer partição.

Page 9: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Alocação Particionada EstáticaAlocação Particionada Estática RelocávelPara manter o controle das partições, 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.

Page 10: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Alocação Particionada EstáticaAlocação Particionada Estática RelocávelNeste 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.

Page 11: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Alocação Particionada EstáticaAlocação Particionada Estática RelocávelNormalmente os programas não preenchem totalmente as partições onde são carregados, ocasionando a fragmentação interna.

Page 12: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Alocação Particionada Dinâmica

• Eliminado o conceito de partição de tamanho fixo• Eliminado o problema de fragmentação interna

Page 13: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Alocação Particionada DinâmicaUm 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, chamada fragmentação externa.

Page 14: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Alocação Particionada DinâmicaPrimeira solução para fragmentação externaConforme os programas terminam, apenas os espaços livres adjacentes são reunidos, produzindo áreas livres de tamanho maior.

Page 15: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Alocação Particionada DinâmicaSegunda solução para fragmentação externaEnvolve a relocação de todas as partições ocupadas, eliminando os espaços entre elas e criando uma única área livre contígua, chamado de alocação particionada dinâmica com relocação.

Page 16: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Estratégias de Alocação de PartiçãoOs sistemas operacionais implementam três estratégias para determinar em qual área livre o programa será carregado para execução.

Page 17: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Estratégias de Alocação de PartiçãoBest-fitA melhor partição é escolhida, ou seja, aquela em que o programa deixa o menor espaço sem utilização. Possui uma lista de áreas livres ordenadas por tamanho, diminuindo o tempo de busca por uma área desocupadaDesvantagem: pequenas áreas não-contíguas, aumentado a fragmentação

Page 18: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Estratégias de Alocação de PartiçãoWorst-fitA pior partição é escolhida, ou seja aquela que o programa deixa o maior espaço sem utilização. Diminuindo a fragmentação.

Page 19: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Estratégias de Alocação de PartiçãoFirst-fitA primeira partição livre de tamanho suficiente para carregar o programa é escolhida. A lista de áreas livres está ordenada crescentemente por endereço. É a mais rápida, consumindo menos recursos do sistema.

Page 20: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Swapping

Introduzida para contornar o problema da insuficiência de memória principal.É uma técnica aplicada à gerencia de memória para programas que esperam por memória livre para serem executados.

Page 21: Gerência de Memória. Alocação Contígua Simples Implementada nos primeiros S.O. Monoprogramáveis Programador se preocupa em não ultrapassar a memória disponível.

Swapping

O sistema escolhe um processo residente, que é transferido da memória principal para memória secundária (swap out), geralmente disco.

Posteriormente é carregado de volta para a memória principal (swap in) e pode continuar sua execução como se nada tivesse ocorrido.