Baixe o app para aproveitar ainda mais
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
Compartilhar