Registry + ControlSet's

ControlSet… uma das sub chaves que devemos conhecer do nosso sistema Operativo.

Esta é uma chave do Windows que existe no registry.
Os conjuntos de chaves começadas por ControlSet são extremamente importantes.
É aqui que temos guardadas todas as configurações do nosso Windows.

Aqui podemos encontrar os serviços, drivers e outro tipo de informação.
Estas chaves estão dentro da chave de registo HKEY_LOCAL_MACHINESYSTEM.
Podem existir várias entradas deste tipo dependendo do número de alterações que fizemos no nosso sistema.
Uma instalação normal do Windows tem 4 control Set.

ControlSet002
ControlSet
ControlSet001
clone

O ControlSet001 são as definições da última vez em que fizemos logon.
O ControlSet002 é conhecido como o ultimo controlSet conhecido em boas condições ou mesmo o ultimo controlset que foi usado para arranque no Windows com sucesso.

O ControlSet é apenas um apontador para um dos 2 anteriores.

O Clone é um “clone” do CurrentControlSet e é criado cada vez que o nosso computador arranca na fase de inicialização do Kernel.

Existe outra chave relacionada com estas. É a chave Select, também está localizado dentro da chave System e contem os seguintes valores:
Current
Default
Failed
LastKnownGood

Cada um destes valores contem uma REG_DWORD que aponta para um dos Controlset.
Por exemplo, se o valor está definido 0x1, então o CurrentControlSet está a apontar para ControlSet001. Á semelhança do LastKnownGood se estiver configurado para 0x2, então o last known good control set é o ControlSet002.
O valor por defeito normalmente é o corrente e o Failed é um apontador para um ControlSet que não conseguiu arrancar com sucesso.

O mais fiável é o CurrentControlSet.
Se necessitarmos de ver ou alterar definições esta é a chave que devemos procurar. Se por algum motivo as nossas alterações não funcionarem sempre podemos arrancar com a lastknown good configuration, mas para isso é importante não fazermos logon logo, visto ser nesse momento em que o Windows substitui os controlSet existentes. Devemos esperar sempre um pouco pelo menos até já não existir tanta actividade nos discos. Caso contrário podemos ter problemas em recuperar o Windows caso um dos seus serviços / drivers provoque um erro que nos impeça de fazer logon. Pois podemos perder a Last Known Good Configuration.

Windows 2003 x32 com 8Gb de Ram!!!

Isto pode parecer estranho mas numa das ultimas aulas ao falar com um formando ( e graças a este) lembrei-me de uma coisa que não é muito documentada e que seria interessante colocar aqui.

Como colocar o windows 2003 x32 a funcionar com mais de 4Gb de RAM.

É claro que isto não é suportado pela microsoft e pode haver possibilidades de existirem erros não documentados devido á forma como o SO vai usar a memoria.

Existe uma forma de colocar o windows a utilizar mais do que os 4gb possíveis nos sistemas de 32 bits.

A microsoft tem o PAE ( Physical Address Extension ) e o AWE ( Address Windowing Extensions )

o PAE é usado pelos IA32 para endereçar mais de 4Gb de memória

Para activar o PAE é necessário adicionar o /PAE no boot.ini file.

Se um servidor usar memorias tipo “hot-add” então o PAE é automaticamente activado.

Tipicamente o PAE usa-se quando temos uma taxa de ocupação de memoria grande.
Um processo típico pode ocupar no máximo cerca de 2Gb de RAM num sistema a 32bits, isto provoca que quando existem muitos processos a usarem muita ram se tenha que paginar muita informação na paging file.
Isto aliado ao facto do windows dividir a memoria em 2 partes uma para o kernel e outra para o user. Piora em muito a performance dos nossos servidores. Porque no máximo apenas podemos ter 4Gb de Ram ocupados.
E os processos que podem usar mais de 4Gb de RAM?

Ao colocarmos o /3Gb switch estamos a permitir que um processo possa usar mais de 2 Gb de Ram do Sistema operativo, mas contudo este programa concorre com outros e a probabilidade de ter parte dessa alocação de memória fetia na memória virtual é elevada, o que o pode tornar muito lento.
Aqui entra o PAE. Quando temos esta entrada activa e em conjunto com o AWE podemos usar mais do que os 4Gb de ram se a nossa máquina os tiver disponíveis.

O AWE é usado de outra forma, é utilizado ao nivel das API’s (Applicarion programming Interfaces). Ou seja é um conjunto de API’s ao gestor de memória que permite que os programas enderecem mais do que os 4gb disponíveis através dos normais 32bits de endereçamento.
AWE permite os programas reservarem memória como memória não paginada e depois dinamicamente mapear porções da memoria não paginada para o conjunto de memória utilizada pelo programa.
Este processo permite a programas que usen intensivamente a memoria para colocar dados ( como base de dados) que possam reservar memoria em vez de terem de usar a memória virtual.
Isto melhora a performance.
O excesso da memória acima dos 4gb é reportado ao gestor de memoria e ás funções de AWE pelo PAE.
Sem o PAE o AWE não conseguiria reservar o excesso de memoria a cima dos 4GB.

[operating systems]
multi(0)disk(0)rdisk(0)partition(2)WINDOWS=”Windows Server 2003, Enterprise” /fastdetect /PAE

Sumarizando o PAE é uma função que permite ao windows 2000 e windows 2003 dar mais memoria para o gestor de memoria utilizar.
Transpondo assim o limite dos 4gb.
Os programas não percebem que a memoria que estão a usar está acima dos 4gb da mesma forma que eles não entendem quando estão a usar a Swapfile.

O AWE é uma API que permite os programas reservar memoria. A memoria é não paginada e é apenas acessível a esse programa.

No fim se tiverem possibilidade de utilizar um SO a 64 bits tem mais sorte e menos trabalho 🙂