quarta-feira, 9 de janeiro de 2008

Sobre o registro do Windows

Essa é uma mensagem que recebi como resposta de um amigo no grupo de discussão que frequento da U-Br:

From: "Miles #MiLesJ#" <_______@_______.____>
Subject: Re: Troca de HD: Windows x Linux (uma comparação)
Date: Wed, 09 Jan 2008 15:26:07 -0200
Sender: miles@host.vtnc.org
User-Agent: Thunderbird 2.0.0.9 (X11/20071115)
Newsgroups: u-br.comp.hardware,u-br.comp.so.linux,u-br.comp.so.windows.xp
Organization: http://u-br.net/ - http://vtnc.org/

Dâniel Fraga wrote:
> Eu gostei do Clonezilla.. ele faz um bom trabalho, aceita
> vários tipos de sistemas de arquivo, inclusive NTFS claro.

Um bom programa de "clonagem" deveria ser capaz de clonar *qualquer*
sistema de arquivos. Acho que o que você se refere não é quanto à
clonagem em si, mas a recursos extras, como redimensionamento de
partição, certo?

> O que reclamei foi da MountedDevices do WinXP... isso é algo
> ilógico,

O MountedDevices em si não é ilógico. Você foi vítima de um dos defeitos
inerentes de design do registro do Windows, que o Windows vem carregando
desde que o registro foi inventado. Você foi vítima do famoso "trancar a
chave dentro da gaveta".

Um dos maiores inimigos do Windows hoje é o seu legado. Muitas coisas,
incluindo o registro, foram projetados inicialmente com critérios
fracos, logo nas primeiras versões do Windows, e essa bagagem vai sendo
arrastada até as versões atuais.

O registro é um imenso banco-de-dados em forma de árvore que é
armazenado em dois grandes arquivos (um para o sistema, e outro para o
usuário). Um BD em forma de árvore, que é fundamental para o
funcionamento do sistema, seria lógico fazê-lo sobre o próprio sistema
de arquivos do sistema operacional, mas na época em que foi criado, nós
só tínhamos o sistema FAT como opção, que tinha inúmeras limitações
(lento, setores muito grandes para informações muito pequenas, busca em
diretório O(n), só 8+3 caracteres nos nomes dos arquivos, etc). Então
não tinha outra saída a não ser criar na forma de um arquivo mesmo.

Dentro dos arquivos de registro, há um outro sistema de arquivos
desenvolvido adequadamente para armazenar as chaves (rápido, com vários
índices, busca O(1), nomes longos, etc). Daí você tem o problema da
dupla fragmentação. Sucessivas criações e remoções de chaves no registro
fazem com que o registro em si se fragmente, internamente. E os próprios
arquivos de registro ao crescerem se fragmentam no sistema de arquivos
onde estão contidos. Isso causava um impacto de desempenho terrível,
especialmente nas primeiras versões do Windows. Fora se você tiver o
azar de ter um único arquivo danificado no sistema (o registro), você
perdia a funcionalidade do sistema inteiro.

O registro melhorou muito, especialmente na série NT, mas ainda carrega
defeitos inerentes de seu legado, simplesmente porque a Microsoft não
pode simplesmente reprojetar tudo e fazer algo novo. Ela tem que manter
compatibilidade, para que as atualizações sejam o mais indolores o
possível; tanto para os usuários, quanto para os programas que rodam
sobre a plataforma. Além disso, a Microsoft não gastaria um dólar a mais
reprojetando um recurso a menos que fosse de vital necessidade... então
deixa funcionando como está e vai consertando como pode.

Tenho certeza que se o registro fosse projetado hoje, especialmente com
a experiência que a Microsoft adquiriu em sistemas operacionais e
bancos-de-dados (SQL Server), certamente seria algo muito mais sólido,
provavelmente feito sobre o próprio sistema de arquivos. Isso teria
inúmeras vantagens no sentido de não criar fragmentação adicional, não
criar "espaço-livre-mas-não-disponível", não necessitar de ferramentas
especiais para editar e copiar dados, poder usar as mesmas ACLs que o
resto do sistema para controlar o acesso sobre as chaves, etc...

> algo que o XP poderia apagar no início já que não faz
> diferença alguma para efeito de boot.

Ilógico seria apagar essa chave a cada boot. Há um sentido dessa chave
existir. Se ela fosse perdida a cada boot, o Windows perderia todas as
montagens feitas pelo usuário.

O que te aconteceu foi semelhante a ter um /home montado em /dev/hda1 e
você mudou o disco para /dev/hdb1, numa analogia.

--
"The percentage of working hardware in the world is constant." --
Turtle's Law

Nenhum comentário: