Корневой каталог находится сразу за последней копией 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, просмотров: 204.