Micro Cosmo
Volte
01/05/95

< Atualizando a FAT >


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