http://www.ricardobarcelar.com - Aula 5 1. TROCA (Swapping) Em sistemas operacionais que operam em lotes muito efetivo utilizar parties fixas; cada job carregado em uma partio quando chega ao comeo da fila e permanece na memria at que termine. Com sistemas de compartilhamento de tempo ou computadores grficos pessoais esta estratgia no pode ser utilizada, pois muitas vezes no h memria suficiente para armazenar todos os processos ativos. Dessa forma, os processos em excesso so mantidos no disco e trazidos de l para execuo dinamicamente. 1.1. Multiprogramao com Parties Variveis Como visto em sistemas multiprogramados um processo no pode invadir a memria de outro processo; No caso das parties variveis a alocao da memria dinmica, ou seja, alterada medida que os processos entram e saem da memria. A vantagem a melhor utilizao da memria em relao s parties fixas; e a desvantagem que as trocas de processos deixam muitos espaos vazios na memria fragmentando-a. Para este problema possvel a reorganizao da memria, contudo esse processo muito demorado. Dois pontos devem ser considerados nas parties variveis: a quantidade de memria que deve ser alocada a um processo quando ele for criado. Se o processo no puder crescer ento a alocao simples, ou seja, o SO aloca somente o necessrio. Soluo alternativa prevenir ou alocar uma memria extra para o seu possvel crescimento. Pode-se criar uma memria para variveis dinmicas que so alocadas e desalocadas (Heap), e outra (Stack) para variveis locais comuns e endereos de retorno. Para que seja possvel a alocao dinmica de memria o SO precisa gerenciar esse processo, usando duas formas para fazer isso: - Gerenciamento de Memria com Mapa de Bits; e - Gerenciamento de Memria com Listas Encadeadas.
SISTEMAS OPERACIONAIS ABERTOS
Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
O nmero, o tamanho e a localizao das parties variam dinamicamente medida que os
processos entram e saem da memria: Esta entrada e sada de dados da memria podem formar buracos, formando o que conhece por Fragmentao externa.
Uma soluo para a fragmentao externa a compactao da memria, no entanto se o
processo crescer durante o tempo de execuo outra soluo a alocao dinmica da memria. Contudo, se no houver espao suficiente esta movimentao vai causar um erro denominado
overhead.
SISTEMAS OPERACIONAIS ABERTOS
Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
1.2. Gerenciamento de Memria com Mapa de Bits
Este tipo de gerenciamento consiste em: - Dividir a memria em unidades de alocao (o tamanho desta unidade pode variar de poucos bytes a vrios kilobytes. - Associar a cada unidade de alocao um bit de controle que diz se aquela unidade est alocada ou no (0 para no alocada e 1 para alocada). - O conjunto de todos os bits de controle denominado Mapa de Bits. Para alocar a memria para um processo o SO deve, inicialmente, percorrer o mapa de bits em busca de uma seqncia de 0s que represente um espao de memria capaz de suportar o processo, que pode ser muito demorado.
SISTEMAS OPERACIONAIS ABERTOS
Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
1.2.1. Tamanho da unidade de alocao
Quanto menor a unidade de alocao, maior ser o mapa de bits e maior o tempo de procura do SO em busca de espao disponvel para carregar o processo; Contudo, maior ser o aproveitamento da memria. Quanto maior a unidade de alocao, menor ser o mapa de bits e menor ser o tempo de procura do SO em busca de espao disponvel para carregar o processo. Contudo, menor ser o aproveitamento da memria, pois na ltima posio sempre poder sobrar muito espao da unidade de alocao. 1.3. Gerenciamento de Memria com Listas Encadeadas Este tipo de gerenciamento consiste em: - Manter uma lista encadeada que represente a situao da memria; - Cada n da lista pode representar um processo na memria ou um espao na memria; - Cada n vai ter dois vizinhos, que representaro exatamente a situao da vizinhana daquele n na memria, ou seja: - Se o n representa um espao em branco os seus vizinhos devero representar dois processos, pois na memria, um espao em branco sempre delimitado por processos; - Se o n representa um processo, os seus vizinhos podero ser espaos em branco ou processos, dependendo da situao da memria.
SISTEMAS OPERACIONAIS ABERTOS
Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com 1.3.1. Algoritmos Utilizados no Gerenciamento de Memria com Listas Encadeadas Firstfit: O gerenciador de memria procura na lista encadeada um n que represente um segmento de memria livre suficientemente grande para suportar o processo que deve ser carregado. Ento o segmento de memria quebrado em duas partes, uma com o processo e o que sobrar em um novo n que representa um segmento livre; Nextfit: Funciona como o FirstFit, contudo quando encontra um segmento de memria apto ele guarda a posio e na prxima vez que for chamado comea a busca a partir daquele ponto; Bestfit: Este algoritmo vasculha a lista toda procura de um espao que se ajuste o mais perfeitamente possvel ao tamanho do processo. o algoritmo que mais desperdia memria dos trs at aqui citados; Worst fit: Vasculha a lista procura do maior espao disponvel, j que tomando o maior espao possvel, o restante do espao ainda grande o suficiente para acomodar um novo processo. Na verdade, a simulao mostrou que esta abordagem no leva a bons resultados. 1.4. Alocao de Espao de Troca (swap) Espao de troca o espao ocupado no disco pelos processos que a esto guardados, pois foram retirados da memria devido a uma troca. Os algoritmos para gerenciar o espao alocado em disco para swap so os mesmos apresentados para o gerenciamento de memria. A diferena que em alguns sistemas, cada processo tem no disco um espao reservado para o mesmo e na memria ele constantemente mudado de lugar. Alm disso, como os discos so dispositivos de bloco, a quantidade de espao reservado para os processos no disco dever ser mltipla do tamanho do bloco.