CONHECENDO MEMÓRIA FÍSICA E LÓGICA
Por: Jose.Nascimento • 4/11/2017 • 2.752 Palavras (12 Páginas) • 422 Visualizações
...
- PARTIÇÕES FIXAS
Sistemas operacionais de multiprogramação permitem que mais de um processo seja solicitado e carregado na memoria, porém enquanto é feito a solicitação e alocação de um processo a um bloqueio das funções aguardando um sinal de ação por meio do E/S da parte do um processo alocado lá anteriormente. E aí então a CPU poderá ser utilizada novamente.
Assim, cada processo já fica listado e organizado na CPU evitando desperdícios de ciclo de processamento. Porém para que a multiprogramação seja realmente efetuada a CPU se divide em inúmeras partições de tamanhos diferentes e cada programa então é alocado em uma partição em fila, ele fica no qual se enquadre exatamente ou o mínimo onde tenha o mínimo possível de espaço capaz de deixar que ele se aloque. Como são partições fixas o espaço não utilizado é desperdiçado e esse fato é conhecido como fragmentação interna.
Além deste problema, pode ocorrer também de um processo não atender ao tamanho das partições existentes, exemplo: Um processo de 110Kbytes tentando se alocar em uma partição de 25Kbyte e outra de 100Kbyte, e como elas não somam-se o processo não é carregado até que qualquer partição maior ou igual a 110Kbytes fique livre. Este problema é conhecido como fragmentação externa pois a memoria não se alocou inicialmente e precisou esperar execução de outro serviço de tamanhão igual ou próximo que se encaixe no mesmo padrão. Praticamente todos os processos de partição fixa possui desperdícios pois os processos nem sempre são iguais ao tamanho da partição.
1.5 PARTIÇÕES VARIAVEIS
Como nas partições fixas temos o processo que é carregado na primeira memoria que seja maior ou igual livre, sofremos com o desperdício de espaços valiosos que podiam ser destinados a novos processos, por isso foram criadas as partições variáveis que molda cada partição de acordo com os processos, assim deixando cada partição flexível de acordo com a necessidade de cada processo não perdendo espaços de memória tornando a técnica de gerencia de memoria muito mais eficiente e versátil diferente das partições fixas.
Nesta partição o SO cria uma lista de espaços livres de memória física. Quando um processo é criado ele percorre esta lista de espaços livres até encontrar a partição maior ou igual ao seu tamanho, ao encaixar-se o que sobrou volta para a lista de espaços deixando aquele processo encaixado exatamente no tamanho que ira usar. O espaço livre que voltou para a lista fica disponível para outro processo/programa. As 4 formas de organização dessas listas são:
- First-Fit: Faz a utilização da primeira partição da qual o tamanho seja o suficiente
- Best-Fit: Utiliza a partição que sobrar o menor espaço
- Worst-Fit: Utiliza o espaço do qual a sobra de espaço é menor, criando inúmeras partições de uma mesma ou uma grande outra partição que pode vir a ser Best-Fit de um outro processo
- Circular-Fit: Tem a mesma funcionalidade de uma First-Fit porém utiliza a próxima partição, espaço livre ou sobra que o processo anterior não utilizou.
Diferente da partição fixa, varias partições podem somar com sobras, partições com partições ou sobras com sobras pois a ideia geral é a utilização do máximo possível de espaço criando um método renovável. Como o espaço de cada partição é utilizado totalmente pelo processo não existe fragmentação interna porém alocar pequenas partições de poucos bytes ocasiona uma sobrecarga dentro de uma mesma memória. Alguns sistemas utilizam blocos de 32Bytes e cada bloco é chamado de “paragrafo”, e desta forma a unidade do bloco passa a ser paragrafo e não o seu tamanho em bytes. Se o processo não chega próximo dos 32Bytes então possui uma defasagem no paragrafo e então ainda assim um espaço pode ser desperdiçado. Por exemplo, se uma arquitetura exigir 4Bytes inteiros que ocupem uma posição de endereço par e considerando que seja uma memória de 1GByte, então são necessários 30 bits para endereçar um byte especifico. Porém apenas 25 endereçam o paragrafo, logo está em aberto.
Como as partições são organizadas em lista, cada uma é endereçada por um descritor que informa tamanho e aponta para o local certo a ser alocada. Cada um destes espaços então tem sua própria memoria para saber onde se aloca. Por causa do problema de tamanho nas partições, a fragmentação externa é um caso grave. Com um fluxo de uso e liberação de espaço, muitos dos mesmos ficam em aberto em vários locais da memoria, isso causa uma impressão de que o local não está sendo preenchido como deveria. A solução estão seria a compactação destas regiões porém gastaria muito do processador a todo momento reorganizar os espaços em aberto e uni-los num local só para utilização, isso levaria muito tempo portanto o recurso não é utilizado.
- SWAPPING
Mesmo com o crescimento da tecnologia para aprimorar os processos anteriores, ainda sim era necessário criar uma maneira de fazer que com os processos utilizassem totalmente a memoria com um menor custo e maior agilidade. Porém em determinados momentos a memoria chegava a um gargalo e não tinha como executar outros processos e então foi criado o Swapping, que nada mais é do que a transição entre memoria primaria e secundaria.
Nas partições fixas e variáveis o processo ficava alocado até o fim de sua execução, mesmo que estivesse esperando por um outra ação, como leitura ou gravação de um dado. No caso o swap era utilizado para os programas/processos que estavam esperando por uma memoria livre. Desta forma o swap pegaria um programa residente e o transfere da memoria primaria para a secundaria (swap out) e posteriormente ao fim dos processos em espera ele era devolvido a memoria principal (swap in) de maneira com que sua execução não fosse atrapalhada de maneira alguma.
A escolha de qual processo receberia swap seria por prioridade ( qual programa será utilizado, se ele é muito utilizado ou pouco utilizado, tamanho de requisição ), para evitar uso de swap desnecessário. Para que um swap aconteça é necessário que o sistema tenha um Loader de relocação que possui um registrador especial chamado registrador de relocação. Ele grava o programa e sua posição, a cada transição de principal para secundaria , vice e versa ele grava todas as mudanças para no momento em que o programa que receber seu ultimo swap para então ser executado até o fim, se aloque na memoria principal indiferente
...