Краткие теоретические сведения о структуре и порядке организации дисковой памяти (FAT) в операционной системе MS DOS, страница 3

FF8-FFFH              FFF8-FFFFH         Последний кластер файла

(другие значения)                             Следующий кластер файла

Первая таблица размещения файлов:

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

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

FAT может быть сформирована либо с 12-битовыми, либо с 16-битовыми записями.

Формат FAT с 12-битовыми записями используется для дискет и разделов фиксированных дисков, имеющих не более 4078 кластеров. (Таблица разделов фиксированного диска указывает на то, использует ли FAT для раздела в DOS 12-битовые или

16-битовые записи.) К записям 12-битовой FAT труднее обращаться, так как их размер не вписывается ровно в 16-битовый размер слова семейства микропроцессоров

8086, однако, с другой стороны, 12-битовая FAT занимает меньше места на дискете.

Первые две записи в FAT зарезервированы для использования системой DOS. Первый байт FAT содержит то же самое значение описателя накопителя, которое присутствует в блоке параметров BIOS загрузочного сектора диска. Остальные байты первых двух записей заполнены величиной 0FFH. Поскольку номера первых двух кластеров

(0 и 1) зарезервированы, то первому кластеру доступного дискового пространства в области файлов соответствует кластер с номером 2.

Чтение значений таблицы FAT достаточно просто для 16-битовых записей: чтобы найти смещение соответствующей записи в FAT, необходимо умножить заданный номер кластера на 2.

Первые две записи FAT как 12-битового, так и 16-битового форматов не используются для указания статусов кластеров; вместо этого они выделены для того, чтобы самый первый байт таблицы FAT мог быть использован в качестве байта-описателя накопителя, который указывает формат диска.

ROOT

Корневой каталог дискеты или раздела фиксированного диска создается программой

FORMAT системы DOS. Размер корневого каталога также определяется программой

FORMAT, поэтому число записей в корневом каталоге ограничено. Количество записей в корневом каталоге хранится в блоке параметров BIOS загрузочной записи дискеты или раздела фиксированного диска.

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

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

Смещение   Значение            Размер       Формат

ООН    Имя файла                8   Символы в кодах ASCII

08Н    Расширение               3   Символы в кодах ASCII

ОВН    Атрибут                  1   Коды битов 7...0 (7, 6 - не используются)

ОСН    Зарезервировано          10  Не используется; нули

16Н    Время                    2   Кодируемое слово =(Ч*2048)+(М*32)+(С+2)