Antes de prosseguir, uma ressalva. Pois acontece que, mesmo restringindo-nos
apenas ao universo da linha PC, as coisas hoje em dia estão complicadas.
Antigamente tudo era muito simples: arquivos eram arquivos e todo
mundo sabia como se dispunham no disco. Mas agora há os modernos
“sistemas de arquivos” do OS/2 e Windows NT - HPFS e NTFS respectivamente
- com suas novas regras para nomes de arquivos e maneiras novas
de organizar os discos. Pois bem: visando simplificar as coisas,
vamos discutir apenas o sistema de arquivos usado pelo DOS, conhecido
por “FAT” (adiante veremos o porquê desse nome). Mais tarde, onde
couber, mencionaremos as diferenças mais importantes em relação
aos novos sistemas de arquivos. Isto posto, ao trabalho.
Como
vimos semana passada, todo arquivo é um conjunto de bytes gravados
em um ou mais setores do disco. Como cada setor tem exatos 512 bytes,
todo arquivo maior que isso necessariamente se espalhará por mais
de um setor. E a questão era, justamente, como encontrar esses setores
no disco para recuperar as informações.
Vocês
já devem ter notado que, em informática, tudo é muito organizadinho.
O que torna fácil encontrar as coisas. Tomemos como exemplo nosso
disquete de 1,44Mb. Ele tem dois lados (ou faces) que nunca são
confundidos porque são numerados: lado 1 e lado 2. Em cada um deles
há oitenta trilhas, também numeradas de zero a 79. Em cada trilha
há 18 setores, numerados de 1 a 18. Não me perguntem por que cargas
d’água a numeração das faces e setores começa em “um” e a das trilhas
em “zero”, que não faço a menor idéia (na verdade, ninguém faz,
já que não há nenhuma lógica nisso; assim é porque foi convencionado
que assim fosse e temos conversado; e, pensando bem, é bom que assim
seja, senão não haveria Trilha Zero...)
Achar
o primeiro lado e a primeira trilha é fácil, porque sempre há uma
referência evidente: o lado um é o da etiqueta e a trilha zero a
mais externa. Mas que ponto de referência deve-se tomar para encontrar
o setor um, se os setores se sucedem em uma mesma circunferência?
Simples: no disco metálico situado no lado oposto à etiqueta de
um disquete de 3,5” há um pequeno retângulo excêntrico, próximo
ao orifício circular central. Sua posição permite encontrar o primeiro
setor (nos discos de 5”1/4 o referencial é um pequeno orifício na
superfície do próprio disco, detectado por uma célula fotoelétrica
no interior do drive; é por isso que a capa plástica dos disquetes
de 5”1/4 tem aquele pequeno orifício circular próximo ao grande
orifício central). Pronto: agora fica fácil encontrar um setor por
seu número e pelos números da trilha e face onde ele se localiza
- da mesma forma que e fácil encontrar um apartamento por seu número
e pelos números do andar e prédio onde ele está situado.
Semana
passada usávamos como exemplo um arquivo que ocupava onze setores.
Manda a lógica que um arquivo assim se espalhe por onze setores
sucessivos. Supondo que o primeiro seja, digamos, o setor 12 da
trilha 20 do lado 1, o último seria o setor 4 da trilha 21 do mesmo
lado 1 (se não entendeu porque, pense como as trilhas de dezoito
setores se dispõem sobre a face do disco). Se fosse assim, tudo
o que se precisaria saber para encontrar todo um arquivo seria seu
primeiro setor e o número de setores que ocupa. Mas infelizmente
não é. E a razão é simples: discos magnéticos são reutilizáveis
e neles pode-se gravar, remover e regravar arquivos.
Não
percebeu o que uma coisa tem a ver com a outra? Então veja lá: imagine
que você gravou no disco, um após o outro, três arquivos: o arquivo
Alfa ocupando vinte setores, o Beta ocupando cinco e o Gama ocupando
dez setores. Imagine ainda que esses tenham sido os primeiros arquivos
gravados no disco. Nesse caso, como todos os setores estão disponíveis,
a lógica é obedecida e os arquivos são gravados em setores sucessivos:
o Alfa ocupa os vinte primeiros setores disponíveis, o Beta os cinco
setores seguintes e o Gama os dez setores imediatamente depois destes.
Agora,
suponha que o arquivo Beta tenha perdido o interesse e seja removido
do disco. Com isso, entre os arquivos Alfa e Gama “esvaziaram-se”
cinco setores, que tornam-se disponíveis para receber novos dados.
Pronto: está armada a arapuca. Pois se agora for gravado um novo
arquivo, o Delta, com, por exemplo, oito setores, eles já não mais
serão sucessivos: os cinco setores iniciais serão gravados nos cinco
primeiros setores vagos do disco (aqueles situados entre os arquivos
Alfa e Gama) e os três últimos serão gravados nos próximos setores
disponíveis (que se situam logo após o arquivo Gama). O arquivo
Delta ficará, então, “fragmentado” no disco: parte antes, parte
depois dos setores ocupados pelo arquivo Gama. E quanto mais você
grava, remove e regrava arquivos, espalhando setores livres entre
setores ocupados do disco, maior é a tendência de fragmentar arquivos.
Em discos rígidos, então, onde o entra-e- sai de arquivos é enorme,
a fragmentação é inevitável (e prejudicial: quanto mais fragmentados
estiverem os arquivos, maior o tempo gasto para acessá-los, já que
a cabeça de leitura/gravação tem que “saltar” de trilha em trilha
pelos setores nelas espalhados; por isso existem programas cuja
única finalidade é “desfragmentar” discos, lendo os arquivos fragmentados
e regravando-os em setores sucessivos).
Devido
à fragmentação, para recuperar os dados não basta saber onde o arquivo
começa e por quantos setores ele se estende: há que saber onde encontrar
cada setor. Semana que vem veremos como é engenhosa a maneira com
que isso é feito.
B.
Piropo