Sítio do Piropo

B. Piropo

< PC@World >
Volte
07/1997

Porque o DOS não Reconhece Discos Maiores que 2 Gb

 

Antigamente a capacidade dos discos rígidos de nossos micros andava pela casa dos poucos Mb. Agora, já são comuns discos rígidos de três ou mais Gb. Tudo bem: como a voracidade por espaço em disco dos programas modernos é notória, quanto maiores os discos rígidos melhor. Sem esquecer que espaço em disco é como dinheiro: por mais que se tenha, jamais parece bastante e nunca sobra, pois cedo o tarde se arranja o que fazer com ele. Portanto, nada temos contra os gigantescos discos modernos. Exceto por um detalhe. Pois acontece que quem usa DOS, Windows 3.x ou a versão original de Windows 95 e tenta instalar um bicho deste em sua máquina tem uma desagradável surpresa: discos maiores de 2Gb são solenemente ignorados pelo sistema operacional. A que se deve esta limitação? Bem, para a entendermos precisamos conhecer alguns detalhes sobre a forma pela qual os discos são organizados por aqueles sistemas operacionais. Que usam um sistema de arquivos denominado FAT.

Já sabemos que nossos micros armazenam dados digitalizados sob a forma de arquivos que podem ocupar um ou mais setores do disco. E sabemos que quem administra o disco é o sistema de arquivos, que distribui os arquivos em uma organização hierárquica perfeitamente definida. Mas como o sistema operacional consegue encontrar no disco os setores que compõem um determinado arquivo?

Bem, para poder, mais tarde, encontrar um arquivo, no momento em que ele é gravado o DOS anota em uma tabela o local onde a gravação está sendo feita. Como a menor unidade de alocação de arquivo é um cluster, não é preciso se preocupar com os setores: basta anotar os clusters. E para identificá-los, o DOS os numera seqüencialmente, começando no segundo setor da trilha zero (o primeiro setor é o chamado "setor de boot" e usado para fins específicos, por isto não é incluído em nenhum cluster) e seguindo adiante, grupando setores em clusters e numerando os clusters em ordem crescente, cluster a cluster, até acabar a trilha. Quando então passa para a trilha seguinte e assim sucessivamente até acabar o disco. Portanto, cada cluster recebe um número único e inconfundível, que permite encontrá-lo mais tarde.

Pois bem: quando o DOS recebe a solicitação para gravar um arquivo, procura no disco rígido por um cluster vazio (não ocupado pelos demais arquivos) e ali começa a gravação. Se o arquivo não cabe em um único cluster, a gravação prossegue nos clusters seguintes, ou seja, naqueles que ocupam os setores seguintes da mesma trilha enquanto houver setores vazios. Por esta razão, os primeiros arquivos a serem gravados nos discos rígidos vão sempre ocupando setores vizinhos e sucessivos. No entanto, na medida que arquivos desnecessários vão sendo removidos, o espaço que eles ocupavam vai sendo disponibilizado para a gravação de novos arquivos. Como o DOS inicia sempre a gravação de novos arquivos pelo cluster de número mais baixo, cedo ou tarde acontecerá o inevitável: um arquivo grande começa a ser gravado no espaço liberado por um pequeno arquivo removido e o novo arquivo não "cabe" no espaço deixado pelo anterior. Mas isto não é problema: quando o espaço consecutivo acaba, o DOS "pula" o trecho ocupado e procura pelo primeiro cluster livre mais adiante, prosseguindo a gravação. Um arquivo destes chama-se "arquivo fragmentado".

Com o tempo, o disco vai sendo ocupado por arquivos, fragmentados ou não. E quando é necessário lê-los, eles sempre podem ser encontrados: basta consultar a tabela e procurar pelos números de cada um dos clusters que o compõem. Esta tabela é tão importante que emprestou seu nome ao próprio sistema de arquivos. Ela se chama FAT, iniciais de File Allocation Table (ou tabela de alocação de arquivos, em inglês).

A FAT dos discos modernos destina dezesseis bits para armazenar o número de cada cluster (a dos discos antigos destinava apenas doze bits). Portanto, nenhum número de cluster poderá exceder ao maior valor que pode ser contido em dezesseis bits. Este valor expresso no sistema binário é 1111111111111111, que no sistema decimal corresponde a 65.535. A conseqüência prática disto é que nenhum disco pode contar mais que 65.536 clusters (65.535 + 1, já que a numeração começa no cluster zero).

Ora, mas para reduzir o desperdício de espaço em disco, o próprio DOS limitou em 64 setores o maior cluster admissível. E como o tamanho do setor é fixo e corresponde sempre a 512 bytes, um cluster de 64 setores ocupa 32 kb.

A conclusão é óbvia: se o maior cluster ocupa 32 kb e o número máximo de clusters é de 65.536, o maior disco rígido que o DOS é capaz de reconhecer é aquele que contém o número máximo dos maiores clusters, ou seja: 2.097.152 kb (65.536 clusters x 32 kb/cluster). Que corresponde exatamente a 2 Gb.

E não há nada que se possa fazer para alterar este limite.

Exceto, é claro, mudar de sistema de arquivos.

B. Piropo