Gerenciamento De Memória
Artigo: Gerenciamento De Memória. Pesquise 862.000+ trabalhos acadêmicosPor: JR2014 • 5/6/2014 • 1.932 Palavras (8 Páginas) • 303 Visualizações
Gerenciamento de Memória
Conceito:
O gerenciamento da memória principal é um dos fatores mais importantes no projeto de um sistema operacional, pois deve manter na memória principal o maio número de processos, e maximizar o seu compartilhamento.
O conceito básico do gerenciamento de memória e tornar os processos do sistema operacional mais rápido e de acesso instantâneo, dessa forma os programas deixam de ser armazenados em memórias secundárias, como disco ou fitas e passam a ficar armazenados na memória principal. Como o tempo de acesso à memória secundária é muito maior ao tempo de acesso à memória principal, o sistema operacional deve buscar reduzir o número de operações de E/S à memória secundária, caso contrário podem ser ocasionados sérios problemas no desempenho do sistema.
A gerência de memória deve tentar manter na memória principal o maior número de processos residentes, permitindo maximizar o compartilhamento do processador e demais recursos computacionais. Mesmo na ausência de espaços livres, o sistema deve permitir que novos processos fossem aceitos e executados. Isso e possível graças ao mecanismo chamado SWAPPING(E a realocação de um processo para a memória secundária e quando surgem um espaço livre esse processo passa novamente para a memória principal).
1.1 Técnica de Gerenciamento de Memória
Quando o sistema operacional gerencia a memória do computador, duas grandes tarefas precisam ser cumpridas.
1. Cada processo deve ter memória suficiente para ser executado. Ele não pode utilizar a memória de outro processo e outro processo também não pode utilizar a sua memória.
2.Os diferentes tipos de memória no sistema devem ser bem utilizados para que cada processo seja executado de forma eficaz.
Para realizar a primeira tarefa, o sistema operacional tem de definir os limites de memória para cada tipo de software e aplicativo.
1.2 Técnica de Gerenciamento de Memória Virtual
Como um exemplo, vamos criar um pequeno sistema imaginário com 1 Gigabyte (1.000 megabytes) de memória RAM. Durante o processo de boot (inicialização), o sistema operacional do nosso computador imaginário vai utilizar toda a memória disponível. Depois ele "recua" o suficiente para atender às necessidades do próprio sistema operacional. Vamos supor que o SO precise de 300 megabytes para rodar. Agora, o sistema operacional vai para o fim da memória RAM e distribui essa memória para diversos drivers necessários para controlar os subsistemas do computador. No nosso computador imaginário, os drivers ocupam 200 megabytes. Agora que o sistema operacional foi completamente carregado, existem 500 megabytes disponíveis para os processos dos aplicativos.
Quando os aplicativos começam a ser carregados na memória, eles são carregados em blocos. O tamanho desses blocos é determinado pelo sistema operacional. Se o tamanho do bloco é 2 megabytes, todo processo carregado receberá um pedaço da memória que é múltiplo de 2 megabytes. Os aplicativos serão carregados nestes tamanhos fixos de blocos. Os blocos iniciarão e terminarão nos limites estabelecidos por palavras de 4 ou 8 bytes. Esses blocos e limites organizam o carregamento dos aplicativos, impedindo sobreposição. Depois que o processo estiver concluído, a pergunta que nos resta é: o que se pode fazer quando o espaço de 500 megabytes for ocupado?
Na maioria dos computadores, é possível adicionar mais memória, além da capacidade original. Por exemplo, você pode expandir a memória RAM de 1 para 2 Gigabytes. Isto funciona, mas custa caro. Este fato também ignora um dado importante da computação: a maioria da informação que um aplicativo armazena na memória não está sendo usada o tempo inteiro. Como um processador só pode acessar um local da memória por vez, a maior parte da memória RAM não é utilizada. Como o espaço de disco rígido é mais barato do que a memória RAM, mover a informação da memória RAM para o disco rígido é uma solução sem custo algum. Esta técnica é conhecida como gerenciamento de memória.
1.3 Gerenciamento de Memória:
Muito se discute sobre o espaço de endereçamento de memória nos sistemas de 32 e 64 bits. Em um sistema de 32 bits, existe um total de 4GB de espaço de endereço virtual disponível (2^32 = 4GB) dos quais, por padrão, 2GB é alocado para o kernel e os outros 2GB é alocado para a memória do modo de usuário. Os componentes internos de dados, drivers de dispositivos, cache do sistema de arquivos, pilhas do kernel e estruturas de código de sessão são todos mapeados pelo kernel.
Antes do Windows Vista e Windows Server 2008, o gerenciador de memória determinava no momento da inicialização o quanto do espaço de endereço deveria ser atribuído a diferentes necessidades. No entanto, isso levou a situações em que um espaço determinado se esgotasse, enquanto em outra área havia bastante espaço livre. Quando isso ocorria, algumas vezes o sistema ou aplicação parava de responder e ocorriam falhas. Para resolver isso, é utilizado o recurso Dynamic Kernel Address Space, em versões de 32 bits do Windows Server 2008.
O gerenciador dinâmico de memória trata o espaço de endereço do kernel, alocando e desalocando espaços para usos diversos, atendendo as necessidades do sistema. Como resultado, a quantidade de memória virtual sendo usada no kernel irá aumentar e diminuir com base na atividade do sistema. Assim, a necessidade de ajuste manual é reduzida, dada as melhorias incorporadas ao sistema operacional.
Em todas as versões do Windows anteriores ao Windows Vista/2003, quando uma página física (tipicamente com 4KB) que foi atribuída a um processo e foi requisitada pelo sistema, o gerenciador de memória iria colocar a página no final da lista de espera. Se o processo necessitar acessar a página novamente, o gerenciador de memória recuperará a página alocada na lista de espera e irá reajustá-lo de volta para o processo. Se um processo necessita de acesso a uma nova página de memória física, o gerenciador de memória irá alocar essa página na frente da lista de espera. Assim, todas as páginas na lista de espera são tratadas igualmente, usando somente a ordem na qual eles foram colocados na lista para classificá-las.
Começando com o Windows Vista, cada página de memória tem uma prioridade que varia de zero a sete. A lista de espera é dividida em outras oito listas, onde cada lista lida
...