Структура FAT

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

Иными словами FAT состоит из элементов, элементов в таблице ровно столько, сколько кластеров на диске, и кластеру с номером N соответствует элемент FAT с тем же номером N. Каждый из элементов FAT представляющий один кластер может содержать следующие коды (см. таблицу 8):

Таблица 8. Возможные значения элемента FAT

Код, содержащийся в элементе FAT Описание
(0)000h Доступный (пустой) кластер
(0)002h до (F)FEFh Номер следующего кластера
(F)FF0h до (F)FF7h Зарезервированный кластер (используется NTFS)
(F)FF7h Плохой кластер (BAD)
(F)FF8h до (F)FFFh Конец цепочки (EOF)

Вернемся к задаче определения точного места на диске (номеров кластеров), где располагается файл. Если файл занимает более одного кластера, то все кластеры, занимаемые файлом, организуются в цепочку кластеров (cluster chain).

Для того чтобы прочитать файл целиком, необходимо найти его дескриптор в ката­логе и считать первый кластер, на который ссылается этот дескриптор – это будет начало файла. Далее следует прочитать соответствующий первому кластеру элемент FAT и определить, является ли он последним (соответствующий означает, что кластеру с номером N соответствует элемент из таблицы FAT тоже с номером N). Если прочитанный элемент FAT не содержит признака конца файла (EOF), то он показывает номер следующего кластера цепочки, который также должен быть считан. Снова проверяем очередной элемент FAT. Повторяем это до тех пор, пока очередь не дойдет до последнего кластера в цепочке.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: