Compartilhar via


Gerenciador de Memória no Windows Server 2008

O Gerenciador de memória no Windows Server 2008 foi aprimorado para proporcionar melhor desempenho, escalabilidade, segurança e confiabilidade nas seguintes áreas:

  • Suporte para sistema dinâmico de endereçamento, incluindo o sistema de atribuição de endereço por demanda e suporte para os registros muito grandes;
  • Suporte à arquitetura de memória não-uniforme (NUMA) e sistemas com grandes demanda de memória;
  • Melhorias no acesso de E/S;
  • Melhorias de desempenho geral, incluindo otimizações no buffer e melhorias nas estruturas internas de dados e desempenho de algoritmos.

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 com as páginas de uma prioridade diferente. Quando o gerenciador de memória quer usar uma página da lista de espera, ele toma primeiramente as páginas que possuem baixa prioridade. A prioridade de uma página geralmente é semelhante à prioridade do thread na qual ela foi atribuída. Se essa mesma página for compartilhada, então a prioridade mais elevada será usada. Por padrão, os processos têm um valor de prioridade de página igual a cinco, no entanto, existem funções que permitem que aplicativos possam alterar as prioridades das páginas.

O benefício real das prioridades de memória entra em jogo quando as aplicações podem ter conhecimento das prioridades relativas das páginas. Um exemplo disso seria o recurso SuperFetch no Windows Vista, que é um recurso que executa tarefas em segundo plano, com baixa prioridade e geralmente usado quando o computador está ocioso, tornando o sistema notavelmente mais veloz. Tecnologia essa que foi empregada nas versões futuras do Windows, tanto na família de servidores quanto na família de desktops.

Esse artigo foi originalmente escrito por:

Adriel Gavazza Ventura
Microsoft Certified Professional
www.itprogroup.com.br - Comunidade Técnica