Роль FAT-таблицы размещения файлов
Файл размещается на диске по кластерам, которые пронумерованы. Эти кластеры могут находиться в разных местах диска, и соответственно файл будет храниться на диске в виде отдельных фрагментов в свободных на момент записи на диск кластерах. В этом случае говорят, что файл фрагментирован. Желательно, чтобы кластеры, выделенные для хранения файла, шли подряд, так как это позволяет сократить время его поиска. Однако это возможно сделать только с помощью специальной программы, и подобная процедура получила название дефрагментации файла. И в том, и в другом случае для организации доступа к файлу операционная система должна иметь сведения о номерах кластеров, где размещается каждый файл. В этом ей помогает FAT-таблица.
FAT-таблица предназначена для размещения и поиска файлов на диске. Она хранится на диске в определенном месте (см. рис. 9.10). Учитывая ее крайне важную роль в организации файловой системы, предусмотрено хранение и ее дубля, т.е. на диске хранятся две одинаковые таблицы – основная и дублирующая. При повреждении основной таблицы можно восстановить информацию о размещении файлов с помощью дублирующей. Рассмотрим основную идею, заложенную в основу построения и использования FAT-таблицы, обратившись к рис. 9.11. Следует заметить, что для ускорения доступа к таблице производится ее предварительная загрузка в оперативную память.
Количество ячеек FAT-таблицы определяется количеством кластеров на диске. Каждая ячейка содержит номер кластера.
Рис. 9.11. Организация доступа к файлу с помощью FAT-таблицы
В свою очередь, в каталоге хранятся записи о файлах, где наряду с другими характеристиками указан номер его первого кластера. При необходимости доступа к файлу сначала производится обращение к ячейке FAT-таблицы, адрес которой определяется первым номером, хранящимся в записи о файле. В этой ячейке хранится номер второго кластера этого файла. Обратившись к ячейке таблицы, соответствующей номеру второго кластера, операционная система найдет там номер третьего кластера и т.д. Так будет создана цепочка кластеров, где расположен файл.
В последней клетке таблицы, завершающей данную цепочку, должен находиться код FFF или FFFF для указания ее конца. Так определяется цепочка кластеров, где хранится файл.