Buscar

Gerencia de memorias

Prévia do material em texto

*
Autor : Manoel S. Neto - Prof. Esp. Redes de Computadores
*
A memória era um recurso escasso e caro.
O SO precisava ser otimizado de forma barata.
O gerenciamento é simples nos monoprogramáveis e crítica nos multiprogramáveis.
O SO transfere a execução do programa para a memória principal.
Deve-se manter na memória principal o maior número de processos residentes, permitindo maximizar o compartilhamento do processador e demais recursos computacionais. 
Mesmo não havendo espaço livre, o sistema deve permitir que novos processos sejam aceitos e executados. 
Ela deve permitir a execução de programas maiores do que a memória física disponível.
*
Alocação Contígua Simples
Implementado nos primeiros sistemas operacionais .
A memória principal é dividida em duas partes, uma para o sistema operacional e a outra para o programa do usuário. 
O programador não deve ultrapassar o espaço de memória disponível.
O usuário tem total controle sobre toda a memória, exceto naquela área onde reside o sistema operacional, cujo endereçamento é protegido por um registrador, impedindo acesso indevido pelo usuário.
Não permite a utilização eficiente dos recursos do sistema, pois apenas um usuário pode dispor destes recursos, gerando um desperdício de espaço de memória.
*
Segmentação de Programas - Overlay
Divide o programa em módulos independentes, executados na mesma área de memória.
Quando um módulo estiver na memória para execução, o outro não necessariamente precisa estar presente.
Precisa ter um módulo principal comum aos outros módulos, que precisa estar na memória durante todo o tempo da execução do programa.
Utiliza uma área de memória comum para armazenar o módulo principal do programa e uma outra área na mesma memória, chamada área de overlay(tamanho definido pelo programador), que será compartilhada entre os módulos adjacentes. 
Sempre que um dos módulos for referenciado no módulo principal, o sistema o carregará da memória secundária para a área de overlay, sobrepondo o módulo antigo na memória.
Vantagem: pode-se poder executar programas maiores do que a memória física disponível.
*
Alocação Particionada Estática
Início do ambiente multiprogramável.
A memória tinha a identidade do programa.
Partes fixas de memória – partições.
Seu tamanho era definido na inicialização do sistema, de acordo com a necessidade do programa.
A mudança do tamanho implicava em reboot na máquina.
O Programa só poderia ser carregado por uma partição específica, mesmo que houvessem outras disponíveis.
Seus endereços de memória físicos eram específicos do código.
*
Alocação Particionada Estática Relocável
A quantidade de memória é lida no início da execução do programa e o programa utilizava o espaço necessário.
Os endereços ofertados não eram mais fixos.
A alocação é em qualquer partição livre, independente do endereço inicial e da partição para a qual o código foi criado. 
Em ambas as alocações, o programa deixa espaços livres de memória espalhados gerando uma Fragmentação.
Redução da fragmentação x Aumentar divisão de memória.
Reúne os blocos livres adjacentes, formando uma grande área livre, que se transforma em uma nova partição.
Realoca todas as partições ainda ocupadas para a parte inicial da memória, eliminando os blocos livres entre elas, formando uma grande área livre no final da memória, que podia ser distribuída entre os processos ainda por executar. 
*
Alocação Particionada Dinâmica com realocação
Redução da fragmentação x Aumentar divisão de memória.
Fim das partições de tamanho fixo. 
O programa utiliza o espaço necessário à sua execução, tornando esse espaço a sua partição .
Reúne os blocos livres adjacentes, formando uma grande área livre, que se transforma em uma nova partição.
Realoca todas as partições ainda ocupadas para a parte inicial da memória, eliminando os blocos livres entre elas, formando uma grande área livre no final da memória, que podia ser distribuída entre os processos ainda por executar. 
*
Estratégias de Alocação de Partição
Utilizadas para reduzir o problema da fragmentação.
Best-fit: a partição que deixa o menor espaço sem utilização.
Worst-fit: aloca o programa na pior partição, ou seja, aquela que deixa o maior espaço livre. Aproveita primeiro as partições maiores que servirão para seus acessos, não importando se outros irão precisar do recurso.
First-fit: Aloca o programa na primeira partição que o couber, independente do espaço livre que vai deixar, é a mais rápida, consumindo menos recursos do sistema.
*
Técnicas de Alocação de Memória - Swapping
O SO escolhe entre os processos alocados que não tem previsão de utilizar a CPU nos próximos instantes e fornece seu espaço a outra que terá alocação imediata.
O fornecedor é enviado a uma área de swap(troca).
Antes de chegar a vez do fornecedor, ele é realocado e outro irá para seu lugar.
Problema: provoca um número excessivo de acesso à memória secundária (disco), levando o sistema a uma queda de desempenho.
*
Técnicas de Alocação de Memória – Memória Virtual
Combina o uso das memórias principal e secundária dando ao usuário a impressão de que existe muito mais memória do que a capacidade real de memória principal. 
Não utiliza o endereço físico, mas sim o virtual.
Mais processos compartilham a memória principal, pois apenas uma parte deles estará residente.
Alguns termos já conhecidos que abordam este processo:
Espaço de endereço virtual e real
Mapeamento
Tabela de Endereçamento de Páginas: divide os endereçamentos em blocos chamados de páginas que podem ser reais(frames) ou virtuais - Paginação.
TLB’s: memória cache da memória virtual

Continue navegando