Sítio do Piropo

B. Piropo

< PC@World >
Volte
06/1997

Os Clusters e o Desperdício de Espaço em Disco

 

O DOS é um sistema operacional que subdivide os discos magnéticos em trilhas e setores. Embora o número e tamanho das trilhas varie conforme a capacidade do disco, o tamanho do setor é fixo e invariável e corresponde sempre a 512 bytes (portanto dois setores correspondem a 1 kb). Assim, em um disco de, digamos, 512 Mb de capacidade, cabem 1.048.576 setores (512 Mb x 1024 kb/Mb x 2 setores/kb). Se, para gravar e ler arquivos, o sistema operacional os subdividisse em setores, teria que administrar um número enorme de subdivisões.

Para contornar este inconveniente os responsáveis pelo desenvolvimento do DOS decidiram reduzir o número de subdivisões grupando setores em conjuntos que, do ponto de vista do sistema de arquivos, se comportam como unidades indivisíveis. E denominaram estes conjuntos de "clusters" (que em inglês significa "cacho", no sentido de cacho de uva). Portanto, do ponto de vista do DOS, um cluster é a menor quantidade de bytes que pode ser destinada a um arquivo, ou seja, a unidade de alocação de espaço em disco. Quando um arquivo precisa ser gravado, o DOS fornece a ele um determinado número de clusters - que é necessariamente um número inteiro, pois é impossível alocar menos espaço que o correspondente a um cluster.

O tamanho do cluster varia com a capacidade do disco. Em disquetes, cada cluster ocupa dois setores (portanto tem capacidade para armazenar 1 kb). Nos discos rígidos modernos o tamanho dos clusters varia de acordo com a tabela:

Capacidade do disco ou partição
Tamanho do cluster
Capacidade do cluster
menor que 128 Mb
4 setores
2 kb
de 128 Mb a 256 Mb (exclusive)
8 setores
4 kb
de 256 Mb a 512 Mb (exclusive)
16 setores
8 kb
de 516 Mb a 1 Gb (exclusive)
32 setores
16 kb
de 1 Gb até 2 Gb
64 setores
32 kb

Grupar setores em clusters tem a vantagem de reduzir o número de subdivisões do disco rígido, facilitando assim a organização do disco e a gravação e leitura dos arquivos. Mas traz como desvantagem um razoável desperdício de espaço em disco, desperdício tanto maior quanto maior for a capacidade do disco.

Este desperdício deriva de que, sendo o cluster a menor quantidade de bytes em que pode ser subdividido um arquivo, nenhum arquivo pode ocupar menos de um cluster (pois o sistema operacional não tem meios de localizar "meio cluster" no disco). Em razão disto, sempre que o tamanho do arquivo não é um múltiplo exato do tamanho do cluster, desperdiça-se algum espaço. Um exemplo: suponha que é preciso gravar um arquivo de, digamos, 40 kb em um disco rígido de 850 Mb de capacidade. Consultando a tabela vemos que em um disco destes cada cluster ocupa 32 setores, logo sua capacidade é 16 kb. Para saber quantos clusters o arquivo ocupará, basta dividir o tamanho do arquivo pelo tamanho do cluster. O resultado é 2,5 (ou seja, dois clusters e meio). Ora, como o sistema não pode alocar "meio cluster", destinará ao arquivo três clusters inteiros. Destes, os dois primeiros serão totalmente ocupados, mas do terceiro apenas metade será usada pelo arquivo. Sobra então toda a outra metade, que não pode ser atribuída a nenhum outro arquivo.

No caso de arquivos pequenos, o desperdício é inevitável. Por exemplo: naquele mesmo disco, o sistema é obrigado a destinar 16 kb (um cluster) a um arquivo que contenha apenas um único byte, desperdiçando assim 16.383 bytes (16 kb - 1 byte). Em discos maiores que 1 Gb, cujos clusters ocupam 64 setores, um arquivo de um único byte desperdiça 34.815 bytes (32 kb - 1). É claro que nem sempre o único (ou o último) cluster do arquivo usa só um byte e, por outro lado, em arquivos que ocupem exatamente um cluster (ou um múltiplo inteiro do tamanho do cluster), nenhum espaço será desperdiçado. Mas usando um raciocínio simples, é fácil estimar o total de espaço esperdiçado em um determinado disco.

O raciocínio é o seguinte: como todo arquivo deve ocupar um número inteiro de clusters, na medida que os arquivos forem se acumulando no disco, em média cada arquivo desperdiçará meio cluster (pense um pouco, divida diferentes tamanhos de arquivos tomados ao acaso pelo tamanho do cluster, examine os restos destas divisões, compare-os com o tamanho do cluster e logo verá o porquê desta afirmativa). Portanto, estatisticamente, em um determinado momento, o espaço total esperdiçado em um disco é igual ao número de arquivos que ele contém multiplicado pela metade da capacidade de um cluster. Um desperdício que, em discos maiores que 1 Gb que contenham grande número de pequenos arquivos, chega facilmente a muitas dezenas de Mb

A soma de todo espaço esperdiçado em um disco recebe o nome de "slack space" ("slack", em inglês, significa "folga", "sobra"). Nos discos modernos, de grande capacidade e, portanto, de clusters grandes, o slack space pode representar um sério inconveniente.

Um inconveniente que a indústria está tratando de contornar. Tanto assim que ele ocorre apenas no sistema de arquivos usado pelo velho DOS, conhecido por FAT. Os sistemas modernos, como Windows NT, OS/2 e a versão de Windows 95 conhecida por OSR2 (Windows95 OEM Service Realease 2, Versão 4.00.1111, DOS 7.1, ou versão 950b) trataram de evitar este problema usando sistemas de arquivos próprios (NTFS, HPFS e FAT32, respectivamente), que não padecem deste inconveniente.

 

B. Piropo