Micro Cosmo
Volte
16/10/95

< Despedaçando Arquivos >


Semana passada vimos que o número total de setores dos discos de grande capacidade é enorme. E que se o sistema operacional distribuisse esses setores individualmente pelos arquivos, a FAT ficaria imensa, pois teria que conter uma entrada para cada setor. O que faria com que os acessos a discos ficassem insuportavelmente lentos.

Note que a causa da lentidão seria exclusivamente o tamanho excessivo da FAT, não o número de setores. E é fácil entender porque: cada vez que se grava ou modifica um arquivo é preciso atualizar duas vezes todas as entradas da FAT que correspondem a seus fragmentos (uma vez para cada cópia da FAT - e garanto que você ainda lembra que são duas). E sempre que lê um arquivo o sistema precisa consultar todas as entradas da FAT correspondentes a ele para poder localizá-las no disco e juntar os “pedaços” do arquivo. O que consome tempo, especialmente em um disco muito fragmentado.

Será que você seria capaz de engendrar uma solução para esse problema? Se pensar um pouco, tenho certeza que sim. Quer uma pista? Pois leia novamente esse parágrafo aí de cima e note que quando me referi às partes que compõem um arquivo eu escrevi “pedaços” e não “setores”. Percebeu a diferença?

Pois é isso mesmo: despedaçar arquivos em partes maiores que um setor. Veja lá: vamos pegar o mesmo exemplo da semana passada, um disco rígido de 320 Mb e seus 655 360 setores. Agora, suponha que nesse disco os arquivos não mais são divididos em setores, mas em “pedaços” maiores. Por exemplo, de dezesseis setores cada. Assim, o menor pedaço de um arquivo ocuparia 8K (não esqueça que cada setor tem sempre 512 bytes, ou meio K). Então um arquivo de 51K ocuparia sete pedaços. Os seis primeiros, com seus 48K, seriam integralmente usados pelo arquivo. Que, no entanto, ocuparia menos da metade do último pedaço: apenas os 3K que não couberam nos demais. O resto (no caso, 5K) seria desperdiçado, já que nada poderia ser ali gravado, pois nesse disco nenhum arquivo (nem pedaço de arquivo) pode ocupar menos de dezesseis setores, ou 8K.

Um evidente desperdício. Mas com uma vantagem: como nessa hipótese não há “pedaço” de arquivo menor que 16 setores e cada entrada da FAT corresponde a um “pedaço”, a FAT ficaria sensivelmente menor. De fato, a FAT de nosso disco de 320Mb teria apenas 40 960 entradas (e você sabe porque, naturalmente: basta dividir o total de setores por dezesseis). Um número que, expresso na base 2, cabe com folga em 16 bits, ou dois bytes. E como em discos rígidos maiores de 16Mb o sistema operacional sempre usa dois bytes por entrada de FAT, essa FAT ocupará apenas 81 920 bytes, ou 160 setores. Um negócio perfeitamente manejável. Cuja atualização consumiria um tempo mais que aceitável.

Como você já deve ter percebido, é justamente isso o que acontece. Na verdade, esses pedaços chamam-se “unidades de alocação de arquivos” (em inglês, “clusters”). Seu tamanho varia com a capacidade dos discos. Na ocasião devida eu não disse por amor à simplificação, mas até mesmo disquetes apelam para esse artifício (discos de 1,2Mb e 1,44Mb subdividem os arquivos em setores individuais mas, paradoxalmente, os disquetes de 360K e 720K, assim como os de 2,88Mb, subdividem os arquivos em unidades de alocação - ou “pedaços” - de no mínimo dois setores). Já os discos rígidos de até 16Mb usam unidades de alocação de oito setores, ou 4K (sim, eu sei, essa é uma informação de utilidade meramente histórica - ou você ainda tem por aí um disco rígido de menos de 16Mb?) Daí até 128Mb, as unidades de alocação ocupam quatro setores, ou 2K (está certo: parece estranho, mas diminuiram). Depois, até 256Mb, novamente oito setores. Daí até 512Mb, os discos rígidos usam unidades de alocação de dezesseis setores, ou 8K (o que confere veracidade a nosso exemplo hipotético lá de cima). Nos discos maiores que 512Mb e até 1Gb as unidades de alocação ocupam 32 setores, ou 16K. E, finalmente, daí até 2Gb, as unidades de alocação se estendem por incríveis 32 setores, ou 16K.

Esse negócio, eu sei, é um tanto complicado. E, olhado assim sem muita atenção, parece o tipo da coisa que pode-se certamente viver a vida toda sem saber. O exemplo ideal para o termo “perfunctório” (cuidado para não deixar cair o dicionário no pé, que o bicho pesa).

De fato, tanto quanto eu saiba, até hoje ninguém morreu por ignorar o que sejam unidades de alocação de arquivos. Provavelmente jamais morrerá. E eu não gastaria seu precioso tempo com o tema não fosse por um importante detalhe: o conceito de “slack space”.

Nosso assunto da semana que vem.

B. Piropo