Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ОФСС.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
949.86 Кб
Скачать

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

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

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

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

Начальное

смещение

Длина,

байт

Описание

Обяза­

тельность

0000

3

Команда перехода к загрузочному коду

Нет

0003

8

Имя OEM как текст ASCII

Нет

000B

2

Количество байтов в секторе. Допустимые значения: 512, 1024, 2048 или 4096

Да

000D

1

Количество секторов в кластере. Допустимые значе­ния — степени 2. Размер кластера не должен превы­шать 32 Кбайт (64 сектора)

Да

000E

2

Число секторов зарезервированной области

Да

0010

1

Количество копий FAT. По умолчанию 2

Да

0011

2

Максимальное количество файлов в корневом каталоге для FAT12 и FAT16. В FAT16 оно обычно равно 512 (200h). В FAT32 поле равно 0

Да

0013

2

16-разрядное количество секторов в файловой системе. Если число секторов более 65535 (FFFFh), оно указы­вается в 32-разрядном поле (байты 0020h-0023h), а это поле равно нулю

Да*

0015

1

Код типа носителя. Для стационарных дисков он ра­вен F8, для съемных — F0

Нет

0016

2

16-разрядный размер (в секторах) каждой копии FAT в FAT12 и FAT16. В FAT32 поле равно 0

Да

0018

2

Количество секторов на дорожке

Нет

001A

2

Количество головок

Нет

001C

4

Количество секторов перед началом раздела

Нет

0020

4

32-разрядное количество секторов в файловой системе. Либо это поле, либо 16-разрядное поле (байты 0013h- 0014h) должно быть равно нулю

Да*

Начальное

смещение

Длина,

байт

Описание

Обяза­

тельность

0024

1

Номер диска BIOS I NT 13h

Нет

0025

1

Не используется

Нет

0026

1

Сигнатура (29) показывает, действительны ли следую­щие три значения

Нет

0027

4

Серийный номер тома

Нет

002B

10

Метка тома как текст ASCII. Назначается пользователем при создании файловой системы

Нет

0036

8

Метка типа файловой системы как текст ASCII. Стан­дартные значения: «FAT», «FAT12» и «FAT16», но ни одно из них не является обязательным

Нет

003E

448

Не используется (зарезервировано для расширений загрузочного кода и сообщений)

Нет

01FE

2

Сигнатура (AA55)

Нет

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

Начальное

смещение

Длина,

байт

Описание

Обяза­

тельность

0024

4

32-разрядный размер одной копии FAT (число секторов)

Да

0028

2

Режим обновления нескольких структур FAT. Если бит 7 равен 1, активна только одна копия FAT, индекс которой определяется разрядами 0-3. В противном случае все структуры FAT являются зеркальными копиями друг друга

Да

002A

2

Основной и дополнительный номер версии

Да

002C

4

Номер кластера, в котором находится корневой каталог

Да

0030

2

Номер сектора, в котором находится структура FSINFO

Нет

0032

2

Сектор, в котором находится резервная копия загрузоч­ного сектора (по умолчанию 6)

Нет

0034

12

Не используется (зарезервировано)

Нет

0040

1

Номер диска BIOS I NT 13h

Нет

0041

1

Не используется

Нет

0042

1

Сигнатура (29) показывает, действительны ли следую­щие три значения

Нет

0043

4

Серийный номер тома

Нет

0047

10

Метка тома как текст ASCII. Назначается пользователем при создании файловой системы

Нет

Начальное

смещение

Длина,

байт

Описание

Обяза­

тельность

0052

8

Метка типа файловой системы как текст ASCII. Стан­дартное значение — «FAT32», но оно не является обя­зательным

Нет

005A

420

Не используется (зарезервировано для расширений загрузочного кода и сообщений)

Нет

01FE

2

Сигнатура (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 — флаг обновления файловой системы.