Buscar

Gerenciamento de memória


Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Continue navegando


Prévia do material em texto

Gerenciamento de memória
A memória é um recurso muito importante do sistema operacional. No entanto deve ser gerenciada com cuidado. Os programas tem-se expandir mais rápido que as memória e ocupar todo o espaço disponível nelas.
As memória são classificadas por hierarquia que são: memória cache, memoria principal, disco magnéticos e fita magnéticas. A parte do sistema operacional que gerencia a memória é denominada por gerenciador de memória. E sua função é controlar as partes que estão em uso ou livre para alocar recursos, o gerenciador também gerencia a troca de processos entre memória e disco.
Os sistemas de gerenciamento de memória se dividem em duas categorias:monoprogramação sem troca de processos ou paginação e multiprogramação que troca de processos e paginação.
Monoprogramação sem troca de processos :no sistema de monopragramação a memória é compartilhada entre o sistema operacional e o programa que é são executados um por vez. Quando um usuário requisita um programa ele solicitado do disco e executado na memória principal, após finalizar o programa e requisitar outro, ele logo é alocado na posição do programa anterior.
Multiprogramação que troca processos e paginação: A multiprogramação com partições fixa permite vários processos na memória simultaneamente. Única maneira de torna-la mais eficiente é dividir a memória em n partições, ao chegar um processo ele logo é armazenado em uma das partições que o cabe o suficiente. As desvantagens da ordenação em filas é quando, a fila para pequena partição está cheia e a partição maior está vazia. A solução seria colocar todos os Jobs em filas, assim que fossem escalonado seriam posicionados em qualquer partição seja grande ou pequena. Outra solução seria alocar pelos menos uma partição para execução de Jobs pequenos sem necessidade de alocar partições maiores. 
A multiprogramação melhora o uso da cpu; em modo genérico um processo permanece 20 segundos em execução quando está na memória, com 5 processos simultâneo na memória. Mas não é realista pois trata de probabilidade. Um processo quando está na memória pode gastar 80 a 20 por cento da cpu, enquanto aguarda uma entrada ou saída por parte do usuário deixado a cpu ociosa. O que se quer enfatizar é a validade da multiprogramação como mecanismo de compartilhamento da CPU entre diversos Processos.
Alguns processos que são executados na memória as vezes ocupa espaços maiores do que deveriam, no entanto eles são mantidos no disco e trazido dinamicamente a memória para a execução; essa estratégia é chamada de troca de processos ou swapping que consiste em trazer processos na memória para ser executados durante um tempo e então devolve-los ao disco, e quando o processos são realocados novamente na memória cada um deles estará em endereço diferente, está estratégia permite uma flexibilidade para memoria melhorando a utilização dela e evitando partições amaradas a processos.
Um processo com tamanho fixo quando criado ocupara o seu espaço especifico na memória, mas quando um processo pode se e expandir ele ocupara espaço disponível na memória, se não mais processos poderão ser criados e colocados em disco, no entanto se o disco estiver cheio o processo terá que esperar ou se exterminado.
Memória virtual: os programadores eram obrigados a lidar com programas maiores que a memória, no entanto a única solução seria dividir o programa em módulo ou overlay. Após um overlay terminasse de executar na memória, ele chamava outro overlay para dar continuidade, que eram mantidos e carregados ou removidos assim que necessário. No entanto essa divisão de módulo eram os programadores que faziam, tornando o trabalho lento e enfadonho; que logo atribuíram essa tarefa ao computador fazer. Essa método ficou conhecido como memória virtual ou seja o programa pode exceder o tamanho da memória mas o sistema operacional mantinha parte do programa na memória e outra em disco. A memória virtual também é possível em sistema multiprogramação pois dividem partes de programas simultâneo na memória.
A maioria do sistema de memória virtual utiliza uma técnica chamada de paginação que consiste que o programas a ser criado ele são endereçados. Estes endereços são denominados de endereços virtuais que contém espaços de endereçamentos. Esses programas pode ser armazenados no disco no entanto a vantagem de desvantagem: travamentos e diminuição da vida útil do disco rígido, por outro lado impede o congelamento do sistema e guarda detalhes sobre erros críticos.
Segmentação: até agora discutimos uma memória virtual unidimensional pois o endereçamento da memória vai de 0 a algum endereço máximo um após o outro.	Um solução é promover a máquina um endereçamento completamente independente chamado de segmentos. Cada segmentos é constituído de uma sequência linear de endereços de 0 a algum máximo. Cada um deles contém diferentes tamanhos durante a execução também pode variar. Crescer ou reduzir sem afetar uns ao outro. É preciso enfatizar que um segmento é um entidade lógica a qual o programador o usa como entidade lógica. Uma memória segmentada tem outras vantagens além de simplificar o tratamento das estruturas de dados que estão crescendo ou se reduzindo A segmentação também facilita o compartilhamento de procedimentos ou dados entre vários processos, exemplo comum é a biblioteca compartilhada.
Técnica de gerência de memória onde programas são divididos em segmentos de tamanhos variados cada um com seu próprio espaço de endereçamento.
A principal diferença entre a paginação e a segmentação é a alocação da memória de maneira não fixa, a alocação depende da lógica do programa. O mapeamento é feito através das tabelas de mapeamento de segmentos. Os endereços são compostos pelo número do segmento e um deslocamento dentro do segmento. Cada entrada na tabela mantém o endereço físico do segmento, o tamanho do segmento, se ele está ou não na memória e sua proteção. O sistema operacional mantém uma tabela com as áreas livres e ocupadas da memória. Somente segmentos referenciados são transferidos para a memória principal. Ocorre fragmentação externa. Sistemas que implementam a segmentação com paginação. Cada segmento é dividido fisicamente em páginas. O endereço é formado pelo número do segmento, número da página dentro desse segmento e o deslocamento dentro dessa página.