Справочник программиста на персональном компьютере фирмы IBM. Дисковые накопители - Работа с каталогами диска
ОГЛАВЛЕНИЕ
Раздел 2. Работа с каталогами диска.
Каждый диск имеет один корневой каталог, с которого начинается
поиск всех остальных каталогов. Корневой каталог может содержать
элементы, указывающие на подкаталоги, которые в свою очередь
могут содержать ссылки на другие подкаталоги, образуя древовидную
структуру каталогов. Корневой каталог всегда расположен в опреде-
ленных секторах диска; подкаталоги хранятся как обычные дисковые
файлы, поэтому они могут быть расположены в любом месте диска.
Отметим, что фиксированный диск может содержать до четырех корне-
вых каталогов, если он разбит на разделы, хотя MS DOS "видит"
только один корневой каталог. Каталоги могут иметь различные
размеры, в зависимости от размера диска и его разбиения на разде-
лы. В следующей таблице приведены размеры и позиции корневых
каталогов для разных типов дисков:
Тип диска Размер каталога Число элементов Начальный сектор
дискета 160K 4 сектора 64 9
дискета 180K 4 сектора 64 9
дискета 320K 7 секторов 112 15
дискета 360K 7 секторов 112 15
дискета 1.2M 14 секторов 224 29
жесткий 10M ----------переменные------------
жесткий 20M ----------переменные------------
В зависимости от разбиения на разделы фиксированный диск может
иметь различные размеры каталога и номер начального сектора. Если
весь диск отведен для MS DOS, то на XT и AT под корневой каталог
отводится 32 сектора, что позволяет иметь в нем 512 элементов.
Как корневой каталог, так и подкаталоги, используют 32 байта
для хранения информации об одном файле, независимо от типа диска.
Таким образом в каждом секторе может храниться информация о 16-ти
элементах каталога. Каждое 32-байтное поле разбито следующим
образом:
байты 0-7 Имя файла
8-10 Расширение файла
11 Атрибут файла
12-21 Зарезервировано
22-23 Время последнего доступа к файлу
24-25 Дата последнего доступа к файлу
26-27 Начальный кластер
28-31 Размер файла
Точка между именем файла и его 3-байтным расширением не хранится.
Все поля выравнены на левую границу, а пустые байты заполняются
пробелами (код ASCII 32). Атрибут файла определяет является ли
файл спрятанным, защищенным от записи и т.д. [5.2.6]. Он опред-
ляет также специальные элементы каталога, такие как подкаталоги
или метка тома. Информация о времени и дате упакована, поэтому
для чтения этих значений требуются битовые операции [5.2.5].
Начальный кластер указывает на позицию в таблице размещения
файлов (FAT), которая обсуждалась в [5.1.1]. FAT хранит информа-
цию о свободном пространстве на диске, а также отводит сектора
при записи файла. FAT отводит дисковое пространство порциями,
большими чем 1 сектор, которые называются кластерами. Файл распо-
ложен в цепочке кластеров и FAT содержит соответствующую цепочку
элементов, указывающих, где эти кластеры расположены на диске.
Каталог должен указывать на начальное звено цепочки элементов
файла в FAT, и эта информация содержится в поле начальный номер
кластера. Поскольку файл обычно занимает последний отведенный ему
кластер не целиком, то поле размер файла хранит точную длину
файла в байтах.