Блок начальной загрузки

Блок начальной загрузки (boot record) занимает ровно один сектор — 512 байтов. В FAT12 и FAT16 он состоит из 23 полей, а в FAT32 — из 30 полей. Первые 14 по­лей, расположенные в первых 36 байтах, едины для всех версий ФС, а следующие поля в FAT12/FAT16 и fAt32 различны.

Некоторые поля являются необязательными (дополнительными) и могут быть заполнены нулями. При этом в FAT12 и FAT16 дополнительными считаются все поля, лежащие после 36-го байта загрузочного сектора. Структура полей приведена в табл. Все смещения представлены в шестнадцатеричном виде, как они и отображаются в HEX-редакторе.

Таблица Начальные 36 байтов boot record

Начальное смещение Длина, байт Описание Обяза­ тельность
Команда перехода к загрузочному коду Нет
Имя OEM как текст ASCII Нет
000B Количество байтов в секторе. Допустимые значения: 512, 1024, 2048 или 4096 Да
000D Количество секторов в кластере. Допустимые значе­ния — степени 2. Размер кластера не должен превы­шать 32 Кбайт (64 сектора) Да
000E Число секторов зарезервированной области Да
Количество копий FAT. По умолчанию 2 Да
Максимальное количество файлов в корневом каталоге для FAT12 и FAT16. В FAT16 оно обычно равно 512 (200h). В FAT32 поле равно 0 Да
16-разрядное количество секторов в файловой системе. Если число секторов более 65535 (FFFFh), оно указы­вается в 32-разрядном поле (байты 0020h-0023h), а это поле равно нулю Да*
Код типа носителя. Для стационарных дисков он ра­вен F8, для съемных — F0 Нет
16-разрядный размер (в секторах) каждой копии FAT в FAT12 и FAT16. В FAT32 поле равно 0 Да
Количество секторов на дорожке Нет
001A Количество головок Нет
001C Количество секторов перед началом раздела Нет
32-разрядное количество секторов в файловой системе. Либо это поле, либо 16-разрядное поле (байты 0013h- 0014h) должно быть равно нулю Да*
Начальное смещение Длина, байт Описание Обяза­ тельность
Номер диска BIOS I NT 13h Нет
Не используется Нет
Сигнатура (29) показывает, действительны ли следую­щие три значения Нет
Серийный номер тома Нет
002B Метка тома как текст ASCII. Назначается пользователем при создании файловой системы Нет
Метка типа файловой системы как текст ASCII. Стан­дартные значения: «FAT», «FAT12» и «FAT16», но ни одно из них не является обязательным Нет
003E Не используется (зарезервировано для расширений загрузочного кода и сообщений) Нет
01FE Сигнатура (AA55) Нет

Таблица Продолжение boot record (FAT32)

Начальное смещение Длина, байт Описание Обяза­ тельность
32-разрядный размер одной копии FAT (число секторов) Да
Режим обновления нескольких структур FAT. Если бит 7 равен 1, активна только одна копия FAT, индекс которой определяется разрядами 0-3. В противном случае все структуры FAT являются зеркальными копиями друг друга Да
002A Основной и дополнительный номер версии Да
002C Номер кластера, в котором находится корневой каталог Да
Номер сектора, в котором находится структура FSINFO Нет
Сектор, в котором находится резервная копия загрузоч­ного сектора (по умолчанию 6) Нет
Не используется (зарезервировано) Нет
Номер диска BIOS I NT 13h Нет
Не используется Нет
Сигнатура (29) показывает, действительны ли следую­щие три значения Нет
Серийный номер тома Нет
Метка тома как текст ASCII. Назначается пользователем при создании файловой системы Нет
Начальное смещение Длина, байт Описание Обяза­ тельность
Метка типа файловой системы как текст ASCII. Стан­дартное значение — «FAT32», но оно не является обя­зательным Нет
005A Не используется (зарезервировано для расширений загрузочного кода и сообщений) Нет
01FE Сигнатура (AA55) Нет

Таким образом, блок начальной загрузки обязательно содержит основные сведе­ния о ФС: размер сектора, размер кластера, а также число секторов, охваченных файловой системой. Кроме того, в FAT32 блок начальной загрузки обязательно указывает на расположение корневого каталога.

Таблица размещения файлов

От блока начальной загрузки переходим к таблице размещения файлов (FAT). Обычно она существует в двух идентичных копиях. Количество копий (1 или 2) указано в загрузочном секторе (поле 0010). Первая копия FAT начинается после зарезервированных секторов, размер которых указывается в поле 000E загрузочно­го сектора. Размер каждой копии FAT также хранится в загрузочном секторе (в FAT32 это содержимое поля 0024). Вторая копия FAT, если она существует, на­чинается в следующем секторе за первой копией.

Таблица состоит из записей одинакового размера. Нумерация записей начинает­ся с 0, и каждая запись соответствует кластеру с тем же номером (адресом). Длина каждой записи зависит от версии файловой системы. В FAT12 используются 12-разрядные, в FAT16 — 16-разрядные, а в FAT32 — 32-разрядные записи.

Если кластер еще ни разу не использовался и свободен, его запись заполнена нулями. Записи хотя бы однажды выделявшихся кластеров отличны от нуля и со­держат адрес следующего кластера в файле или каталоге. Если кластер завершает цепочку файла или каталога, его запись содержит маркер конца файла: в FAT 12 это любое значение больше FF8, в FAT 16 — FFF8 и в FAT32 — FFF. Если кластер помечен как поврежденный и не должен использоваться системой, его запись со­держит значение FF7 в FAT12, FFF7 в FAT 16 или FFF FF7 в FAT32.

Заметим, что адресация кластеров файловой системы начинается с 2. Это значит, что записи 0 и 1 в структуре FAT не используются. Обычно в записи 0 хранится копия типа носителя, а в записи 1 — флаг обновления файловой системы.

Корневой каталог

За второй копией FAT следует корневой каталог (Root Directory). Он, как и FAT, состоит из записей фиксированной длины. В FAT32 размер записи равен 32 байтам. Каждая запись указывает на файл или директорию. Внутренняя структура записи приведена в табл.

Смещение от начала записи Длина, байт Описание
Имя файла или каталога
Расширение
000B Атрибуты файла
000C Зарезервировано
Время создания/модификации (в специальном формате)
Дата создания/модификации (в специальном формате)
001A Номер начального кластера
001C Размер файла в байтах

Таким образом, запись каталога связывает имя файла с номером кластера, в котором записано начало этого файла. Запись каталога отсылает к записи о на­чале этого файла в FAT. Когда длина файла превышает размер кластера (а так обычно и бывает), продолжение файла пишется в следующие кластеры. Как прави­ло, такие фрагменты идут не друг за другом, а разбросаны по всему диску (фраг­ментация диска). Таблица FAT связывает кластеры, хранящие фрагменты одного файла, в последовательную цепочку (рис.). В последнем звене цепочки указы­вается, что здесь конец файла.

Рис. Связь каталога, FAT и кластеров, содержащих файл

 

Хотя файловая система NTFS устроена гораздо слож­нее, в силе остается тот же принцип. Записи ФС, ссылаясь друг на друга, приводят от имени файла к кластерам, где этот файл записан. И, наоборот, от кластера с ка­ким-то содержимым они должны, в конечном счете, привести к имени файла и его положению в дереве каталогов.

 








Дата добавления: 2017-05-18; просмотров: 669;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.