Semana passada comentamos que a forma pela qual o sistema operacional
controla o conteúdo dos discos fica mesmo interessante ao se começar
a destrinchar o que acontece quando arquivos começam a ser removidos
e novos arquivos são gravados no disco. E hoje você vai entender
porque.
Tomemos
como exemplo um arquivo que ocupe três setores sucessivos do disco,
digamos os setores 35, 36 e 37. Sua entrada de diretório contém,
além das outras informações que já sabemos, o nome do arquivo e
o número do setor 35, ou seja, ela “aponta” para o primeiro setor
ocupado pelo arquivo. Na 35ª entrada da FAT, por sua vez, encontraremos
o número 36 (ou ela “aponta” para o setor 36, o próximo ocupado
pelo arquivo). A 36ª contém o número 37 e a 37ª o código que indica
ser este o último setor do arquivo. E isso é o que basta para localizar
todo o arquivo no disco.
Agora,
imagine que você mandou remover (ou “apagar”, ou “deletar”) o arquivo.
Será preciso remover do disco todas as informações referentes ao
arquivo? Claro que não. Para que? Basta indicar que aquele arquivo,
teoricamente, “morreu”. E para isso basta tomar duas providências:
encher com zeros as três entradas da FAT (35, 36 e 37) correspondentes
aos setores ocupados pelo arquivo, para indicar que agora estão
livres e prontos para receber novos dados, e marcar como livre a
entrada do diretório previamente ocupada pelo arquivo. E o sistema
operacional é tão preguiçoso que, para assinalar que uma entrada
de diretório está livre, preenche apenas seu primeiro byte com um
código indicador de entrada livre. E temos conversado.
Note
que todo o conteúdo do arquivo permaneceu intocado no disco, já
que o sistema nem se deu ao trabalho de mexer nos três setores que
ele ocupava: apenas marcou como livre as entradas correspondentes
da FAT, preenchendo-as com zeros. E todas as informações contidas
na entrada do diretório ainda continuam lá, com exceção de um único
byte, o primeiro. Se você pensar um pouco vai entender porque os
utilitários que permitem recuperar arquivos “apagados” do disco
podem reconstituir todas as informações, exceto a primeira letra
do nome do arquivo...
Agora,
levemos a imaginação ainda adiante e vamos supor que todos os setores
iniciais do disco estejam ocupados, do primeiro até o de número
50 (com exceção dos setores 35 a 37, que pertenciam ao arquivo removido
e estão disponíveis para receber novos dados). E que você mandou
gravar um novo arquivo que vai ocupar dez setores.
O
sistema, diligentemente, vai procurar pelo primeiro setor livre,
ou seja, pela primeira entrada da FAT preenchida com zeros. Encontra
a de número 35 e, por isso, determina que este será o primeiro setor
a ser ocupado pelo arquivo. Depois, o sistema procura pela primeira
entrada livre de diretório, encontra aquela que antes correspondia
ao arquivo que foi removido e a sobrescreve com as informações referentes
ao novo arquivo, gravando ali que o primeiro setor ocupado pelo
arquivo será o de número 35.
E
os demais? Bem, sabemos que os de número 36 e 37, antes ocupados
pelo arquivo removido, também estão livres. Portanto, os três primeiros
setores do novo arquivo serão 35, 36 e 37 (e só quando eles forem
gravados é que as informações do arquivo anterior serão perdidas,
sobrescritas pelas do novo arquivo; por isso os utilitários de recuperação
de arquivos, como o comando “UNDELETE”, só funcionam enquanto novos
arquivos não forem gravados). Mas, daí em diante, o primeiro setor
livre é o de número 51. Resultado: nosso novo arquivo ocupará os
setores 35 a 37 e “pulará” um monte de setores, acomodando o restante
de seus bytes nos setores 51 a 57.
E
como ficarão as entradas da FAT? Bem, sabemos que cada uma conterá
o número do próximo setor ocupado pelo arquivo. Então responda depressa:
qual será o conteúdo das entradas da FAT número 37 e 57? Se você
respondeu que a entrada 37 conterá o número 51 (do setor que sucede
ao setor 37) e a entrada 57 conterá o código de último setor (por
razões mais que óbvias) ganhou dez e foi aprovado com distinção
e louvor nas disciplinas diretório e FAT. Se errou, não fique triste:
a coisa é mesmo um pouco complicada. Se tiver muito interesse no
assunto, leia de novo com calma as duas últimas colunas. Se não,
simplesmente deixe pra lá: a coisa é interessante pela maneira engenhosa
pela qual os arquivos são inventariados, mas seu conhecimento decididamente
não é indispensável para se tornar um bom micreiro.
Como
o diretório raiz, a FAT também ocupa alguns setores do disco. E
é tão importante (por razões óbvias: um único byte corrompido na
FAT deita a perder no mínimo um arquivo inteiro) que o sistema exagera:
mantém duas cópias idênticas da FAT, ambas atualizadas cada vez
que algum arquivo é gravado, alterado ou removido do disco. Assim,
se algo de errado acontecer e a primeira cópia for corrompida, ela
pode ser recomposta a partir da segunda (o curioso é que para isso
é necessário utilizar um recurso externo, como um programa utilitário,
já que o sistema operacional, embora previdente a ponto de manter
religiosamente atualizadas duas cópias da FAT, não fornece um único
comando para recuperar uma cópia a partir da outra...)
O
número de setores ocupado pela FAT depende, evidentemente, da capacidade
do disco. No caso do disco de 3,5” e alta densidade, são usados
dezoito setores para a FAT, nove para cada cópia. Esses dezoito
setores localizam-se no início do disquete, imediatamente antes
daqueles ocupados pelo diretório raiz. Mas não são os primeiros
setores do disco. Porque antes da FAT existe um único e solitário
setor, esse sim o primeiro de todos. O setor número um da trilha
zero, o chamado setor de boot.
Que
começaremos a discutir semana que vem.
B.
Piropo