Корневой каталог находится сразу за последней копией FAT . Количество секторов, занимаемых одной копией FAT, находится в блоке параметров BIOS в загрузочном секторе (поле fatsize), а количество копий FAT - в поле fatcnt блока BPB . Следовательно, перед корневым каталогом находится один загрузочный сектор и fatcnt * fatsize секторов таблицы размещения файлов FAT.
Размер корневого каталога можно определить исходя из значения поля rootsize. При форматировании диска в это поле записывается максимальное количество файлов и каталогов, которые могут находиться в корневом каталоге. Для каждого элемента в каталоге отводится 32 байта, поэтому корневой каталог имеет длину 32 * rootsize байт.
Корневой каталог занимает непрерывную область фиксированного размера. Размер корневого каталога задается при форматировании и определяет максимальное количество файлов и каталогов, которые могут быть в нем описаны.
Для определения количества секторов, занимаемых корневым каталогом, можно воспользоваться следующей формулой:
RootSecs = sectsize / (32 * rootsize)
В этой формуле sectsize - размер сектора в байтах, он может быть получен из соответствующего поля загрузочного сектора.
Область файлов и подкаталогов.
Вслед за корневым каталогом на логическом диске находится область файлов и подкаталогов корневого каталога.
Область данных разбита на кластеры, причем нумерация кластеров начинается с числа 2. Кластеру с номером 2 соответствуют первые секторы области данных.
Теперь мы можем привести формулу, которая позволит нам связать номер кластера с номерами секторов, занимаемых им на логическом диске:
SectNu = DataStart + ((ClustNu - 2) * clustsize)
В этой формуле использованы следующие обозначения:
| SectNu | номер первого сектора, распределенного кластеру с номером ClustNu; | 
| DataStart | начало области данных, вычисляется по формуле: ressecs + (fatsize * fatcnt) + (32 * rootsize/ sectsize); | 
| ClustNu | номер кластера, для которого необходимо определить номер первого сектора; | 
| clustsize | количество секторов, занимаемых кластером; находится в блоке параметров BIOS. | 
Дескрипторы файлов.
Как мы уже говорили, любой каталог содержит 32-байтовые элементы - дескрипторы, описывающие файлы и другие каталоги. Приведем формат дескриптора:
| Смещение | Размер | Содержимое | 
| 0 | 8 | Имя файла или каталога, выровненное на левую границу и дополненное пробелами | 
| 8 | 3 | Расширение имени файла, выровненное на левую границу и дополненное пробелами | 
| 11 | 1 | Байт атрибутов файла | 
| 12 | 10 | Зарезервировано | 
| 22 | 2 | Время создания файла или время его последней модификации | 
| 24 | 2 | Дата создания файла или дата его последней модификации | 
| 26 | 2 | Номер первого кластера, распределенного файлу | 
| 28 | 4 | Размер файла в байтах | 
В любом каталоге, кроме корневого, два первых дескриптора имеют специальное назначение. Первый дескриптор содержит в поле имени строку: ". ". Этот дескриптор указывает на содержащий его каталог. То есть каталог имеет ссылку сам на себя.
Второй специальный дескриптор содержит в поле имени строку: ".. ". Этот дескриптор указывает на каталог более высокого уровня. Если в поле номера первого занимаемого кластера для дескриптора с именем ".. " находится нулевое значение, это означает, что данный каталог содержится в корневом каталоге.
Таким образом, в древовидной структуре каталогов имеются ссылки как в прямом, так и в обратном направлении. Эти ссылки можно использовать для проверки сохранности структуры каталогов файловой системы.
Атрибуты файлов.
Байт атрибутов является принадлежностью каждого файла. Биты этого байта имеют следующие значения:
| Бит | Описание | 
| 0 | Файл предназначен только для чтения.В этот файл нельзя писать и его нельзя стирать | 
| 1 | Скрытый файл.Этот файл не будет появляться в списке файлов, создаваемом командой DIR | 
| 2 | Системный файл. Этот бит обычно установлен в файлах, являющихся составной частью операционной системы | 
| 3 | Данный дескриптор описывает метку диска.Для этого дескриптора поле имени файла и поле расширения имени файла должны рассматриваться как одно поле длиной 11 байт. Это поле содержит метку диска | 
| 4 | Дескриптор описывает файл, являющийся подкаталогом данного каталога | 
| 5 | Флаг архивации.Если этот бит установлен в 1, то данный файл не был выгружен утилитой архивации | 
| 6-7 | Зарезервированы | 
Обычно файлы имеют следующие атрибуты:
| Атрибут | Описание | 
| 0 | Обычные файлы (тексты программ, загрузочные модули, пакетные файлы) | 
| 7 | Только читаемые, скрытые, системные файлы. Такая комбинация битов байта атрибутов используется для файлов операционной системы io.sys , msdos.sys | 
| 8 | Метка тома. Дескриптор метки тома может находиться только в корневом каталоге логического диска | 
| 10h | Дескриптор, описывающий каталог | 
| 20h | Обычный файл, который не был выгружен программами backup.exe или xcopy.exe | 
Дата: 2019-05-28, просмотров: 288.