Осторожно компьютерные вирусы

       

Таблицы размещения файлов FAT


Операционная система MS-DOS объединяет отдельные секторы диска в так называемые кластеры. При создании новых каталогов и непустых файлов для них выделяется один или несколько кластеров. Если размер файла увеличивается, для него выделяются дополнительные кластеры.

Размер кластера в секторах (т. е. количество секторов в одном кластере) вы можете узнать из поля блока параметров BIOS BPB со смещением 2. При форматном просмотре содержимого загрузочного сектора размер кластера отображается в строке Sectors per cluster (рис. 6.18).

Для экономии дискового пространства файлам и каталогам распределяются кластеры, которые не обязательно расположены рядом. Таким образом, отдельные кластеры, принадлежащие одному и тому же файлу, могут находиться в разных местах логического диска. За такую экономию приходится платить производительностью, так как считывание фрагментированного файла связано с многочисленными перемещениями магнитных головок, а это самая медленная дисковая операция.

Другая проблема, связанная с фрагментацией файлов, заключается в необходимости хранения списка кластеров, выделенных каждому файлу. Очевидно, для того чтобы прочитать файл, операционная система MS-DOS должна последовательно прочитать все кластеры, распределенные этому файлу.

Где же хранятся списки кластеров?

Эти списки хранятся в таблице размещения файлов FAT, к анализу которой мы скоро приступим.

Таблицу размещения файлов можно представить себе как массив, содержащий информацию о кластерах. Размер этого массива определяется общим количеством кластеров на логическом диске. В элементах этого массива находятся списки кластеров, распределенных файлам. Элементы массива, соответствующие свободным кластерам, содержат нулевые значения.

Если файл занимает несколько кластеров, то эти кластеры связаны в список. При этом элементы таблицы FAT содержат номера следующих используемых данным файлом кластеров. Конец списка отмечен в таблице специальным значением. Номер первого кластера, распределенного файлу, хранится в элементе каталога, описывающего данный файл.


Таким образом, зная имя файла и каталог, в котором этот файл расположен, операционная система MS-DOS может определить номер первого кластера, распределенного файлу, а затем, проследив список кластеров по таблице FAT, определить и номер остальных кластеров, занятых этим файлом.
Программа FORMAT.COM, предназначенная для форматирования диска и некоторые специальные программы аналогичного назначения проверяют логический диск на предмет наличия дефектных областей. Кластеры, которые находятся в этих дефектных областях, отмечаются в FAT как плохие и не используются операционной системой.
Для примера на рис. 6.22 показаны упрощенные дескрипторы корневого каталога диска C:, в которых описаны файлы MYFILE1.DOC и MYLETTER.DOC, а также элементы таблицы размещения файлов FAT, выделенные для этих файлов.

Рис. 6.22. Пример распределения кластеров для файлов autoexec.bat и config.sys
Файл MYFILE1.DOC занимает три кластера с номерами 11, 17 и 18, а файл MYLETTER.DOC - два кластера с номерами 12 и 13. В каталоге указаны номера первых кластеров, распределенных этим файлам (соответственно 11 и12). Последние ячейки, которые соответствуют последним кластерам, распределенным файлам, содержат специальное значение - 0FFFFh (признак конца цепочки кластеров).

Содержание раздела