Операционная система MS DOS (том 2)


Файлы и каталоги


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

Корневой каталог находится сразу за последней копией FAT. Количество секторов, занимаемых одной копией FAT, находится в блоке параметров BIOS в BOOT-секторе в поле fatsize, количество копий FAT - в поле fatcnt блока BPB. Следовательно, перед корневым каталогом находится один BOOT-сектор и (fatcnt_*_fatsize)

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

Размер корневого каталога можно определить исходя из значения поля rootsize. В этом поле при форматировании диска записывается максимальное количество файлов и каталогов, которые могут находиться в корневом каталоге. Для каждого элемента в каталоге отводится 32 байта, поэтому корневой каталог имеет длину (32_*_rootsize) байтов.

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

RootSecs = sectsize_/_(32_*_rootsize)

В этой формуле sectsize - размер сектора в байтах, он может быть получен из соответствующего поля BOOT-сектора.

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

Области логического диска Номер начального сектора на логическом диске

+­­­­­­­­­­­­­­­­­­­+ ¦ ¦ 0 ¦ BOOT-сектор и ¦ ¦ зарезервированные ¦ ¦ сектора ¦ ¦ ¦ +­­­­­­­­­­­­­­­­­­­¦ ¦ ¦ ressecs - количество резервных ¦ Первая копия FAT ¦ секторов ¦ ¦ +­­­­­­­­­­­­­­­­­­­¦ ¦ ¦ ressecs+fatsize ¦ Вторая копия FAT ¦ ¦ ¦ +­­­­­­­­­­­­­­­­­­­¦ ¦ ¦ ressecs+(fatsize*fatcnt) ¦ Корневой каталог ¦ ¦ ¦ +­­­­­­­­­­­­­­­­­­­¦ ¦ ¦ ressecs+(fatsize*fatcnt)+ ¦ Область данных ¦ sectsize_/_(32*rootsize) ¦ ¦ +­­­­­­­­­­­­­­­­­­­+




- Начало -  - Назад -  - Вперед -