Respostas
Resposta:Na memória principal residem os programas em execução.
Memória secundária são mecanismos de armazenamento permanente, são mais abundantes e baratas.
Para um programa ser executado deve ser carregado na memória principal.
Gerenciamento complexo em sistemas multiprogramáveis com múltiplos usuários utilizando-a eficientemente.
9.2 – Alocação Contígua Simples
Implementada nos primeiros Sistemas Operacionais e ainda existentes em alguns sistemas monoprogramáveis.
Memória dividida em duas partes, Sistema Operacional e programa do usuário.
O programador tem controle sobre toda a memória principal, podendo acessar qualquer posição da memória, inclusive onde está residente o Sistema Operacional.
Um mecanismo de proteção utilizado é delimitar a área do Sistema Operacional que delimita a área do mesmo.
Fácil implementação e código reduzido, porém Ineficiência no uso do processador e da memória pois apenas um usuário pode dispor desse recurso.
Programas limitados ao tamanho da memória disponível.
Overlay (sobreposição) – Solução encontrada para dividir o programa em partes (módulos), de forma que pudessem executar independentemente uma da outra, utilizando uma mesma área de memória.
A definição das áreas de Overlay são de responsabilidade do programador através de comandos específicos da linguagem utilizada.
9.3 – Alocação Particionada
A eficiência da multiprogramação exige que vários programas estejam na memória ao mesmo tempo, vindo a necessidade de organização da memória.
9.3.1 – Alocação Particionada Estática:
Divisão da memória em tamanhos fixos (partições) definidos na inicialização do Sistema em função dos programas que executariam no ambiente.
A alteração do tamanho de uma partição necessita a inicialização do Sistema Operacional.
Os programas só podiam executar em uma das partições, mesmo com outras disponíveis.
Limitações impostas pelos compiladores e montadores que geravam apenas códigos absolutos.
Posteriormente, evolução dos compiladores, linkers e loaders com geração de código realocável, sendo que os programas puderam ser carregados em qualquer partição (alocação particionada estática realocável).
Surgimento da tabela de partições com informações de tamanho, uso e delimitações.
Proteção da memória através de dois registradores, início e fim da partição.
Os programas não preenchiam totalmente as partições onde eram carregados.
Problemas de fragmentação.
9.3.2 – Alocação Particionada Dinâmica
Aumento do grau de compartilhamento diminuindo o problema da fragmentação.
Partições sem tamanho fixo, onde cada programa utiliza o espaço que necessita.
Existe ainda o problema de fragmentação, conforme os programas vão terminando e deixando espaços cada vez menores.
Soluções para resolver o problema de fragmentação:
Primeira – Reunir os espaços adjacentes, produzindo um único espaço de tamanho maior.
Segunda – Realocação de todas as partições ocupadas, eliminando todos os espaços entre elas (alocação dinâmica com realocação), porém, aumentando a complexibilidade do algoritmo e consumindo mais recursos do sistema.
9.3.3 – Estratégias para Escolha da Partição
Função para determinar em qual partição livre um programa será carregado para execução.
Função de evitar, ou diminuir, o problema da fragmentação antes que ele ocorra.
O tamanho do programa é o fator mais importante para a adoção da melhor estratégia.
Best-fit:
Escolhe a melhor partição, ou seja, aquela que o programa deixa o menor espaço sem utilização.
Lista de áreas livres alocada por tamanho, diminuindo o tempo de busca
Desvantagem de deixar pequenas áreas não contíguas, aumentando o problema da fragmentação.
Worst-fit:
Escolhe a pior partição, ou seja, aquela que o programa deixa o maior espaço sem utilização.
Diminui o problema de fragmentação, deixando espaços livres maiores que permitem a um maior número de programas utilizar a memória.
First-fit:
Escolhe a primeira partição livre de tamanho suficiente para carregar o programa
Lista de áreas livres ordenada por endereços crescentemente.
Grande chance de se obter uma grande partição livre nos endereços de memórias mais altos.
Mais rápida e consome menos recursos do sistema.
9.4 – Swapping
Tenta resolver o problema de insuficiência da memória para todos os usuários.
Aloca espaço para programas que esperam por memória livre para serem processados.
O sistema escolhe um programa residente, que é levado da memória para o disco (swap out), retornando posteriormente para a memória principal (swap in) como se nada tivesse ocorrido.
Explicação: