Структура корневого каталога

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

Каждая запись в каталоге состоит из следующих полей.

1) Поле имени файла, занимает 8 байт, формат кода – ASCII.

Буквы в имени заглавные – ОС переводит строчные буквы в прописные. Если запись каталога не используется, то первый байт имени имеет «00». ОС прекращает просмотр каталога, как только встречает элемент каталога, начинающейся с «00».

Если первый байт имени «Е5» («х»), то это означает, что файл был уничтожен. Уничтожение файла командой DEL означает две вещи:

Первый байт имени устанавливается равным Е5;

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

Если первый байт имени содержит символ с ASCII кодом 2E (.), то это означает, что данная запись относится к подкаталогу. Если и второй байт – точка, тогда этот элемент каталога соответствует каталогу – родителю текущего каталога.

2) Тип файла (расширение имени) – 3 байта, формат кода – ASCII.

Если тип файла состоит меньше, чем из трех символов, то он дополняется пробелами. Если имя файла должно состоять, хотя бы из одного символа, расширение имени файла может состоять из одних пробелов.

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

3) Атрибуты файла – 1 байт, формат – биты. Двоичный код атрибутов файла характеризует статус файла и хранит 6 указателей (таблица 3.2).

Таблица 3.2 – Значения указателей байта атрибутов файла

Указатель Значение Указатель Значение
  только для чтения   подкаталог
  скрытый   флаг архивации
  системный   Зарезервирован
  метка диска   зарезервирован

Каждый бит этого байта устанавливает определенный атрибут файла, к которому относится запись каталога, например 00001000 – это метка диска. В списке файлов, доступных из корневого каталога присутствуют записи с разными атрибутами. Файлы с атрибутом DIR (каталог) имеют ту же структуру, что и корневой каталог. Единственная запись с атрибутом VOL (метка) может находиться только в корневом каталоге.

4) 10 байт зарезервировано. Все десять байт этого поля имеют значение 00.

5) Время создания и последней модификации – 2 байта, формат – слово.

Время рассматривается как беззнаковое целое, составленное из часов, минут и секунд по следующей формуле:

Время = Часы*2048(211 ) + Минуты*32 (25) + Секунды*2(21).

Секунды измеряются в единицах кратных двум секундам и число таких единиц может изменяться от 0 до 29.

6) Дата создания 2 байта, формат – слово.

7) Номер начального кластера (точка входа) – 2 байта, формат – слово.

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

8) Размер файла – 4 байта, формат беззнакового целого.

С точки зрения ОС DOS, размер, указываемый в этом поле, является размером файла. Однако иногда это значение может быть больше, чем фактический размер файла (для файлов, созданными тестовыми редакторами). Операционная система указывает на конец файла, когда или встречает код конца файла (ASCII код 26), или достигает конца цепочки занятого пространства в FAT (в зависимости от того, что будет обнаружено первым).

Для подкаталогов поле размера файла содержит «0». Действительный размер подкаталога определяется просмотром в FAT его цепочки занятого пространства. Для метки диска поле размера файла также содержит значение «0».

Операционная система всегда предусматривает наличие на диске двух экземпляров FAT, идентичность которых постоянно контролируется, но использует только один из них. С переходом к FAT32 операционная система может работать с любой из этих копий. Еще одно изменение состоит в том, что корневой каталог, раньше имевший фиксированный размер и строго определенное место на диске, теперь может свободно «наращиваться» по мере необходимости, подобно подкаталогу. Теперь не существует ограничений на число записей в корневом каталоге. Это особенно важно, поскольку под каждое длинное имя файла используется несколько записей каталога.


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




Подборка статей по вашей теме: