Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_ЛР 942_Часть1.doc
Скачиваний:
19
Добавлен:
15.04.2015
Размер:
651.26 Кб
Скачать

5. Содержание отчета по лабораторной работе

Требования к содержанию отчета соответствуют требованиям к отчету в лабораторной работе № 1.

Лабораторная работа № 4 Архитектура и особенности файловой системы fat32

  1. Теоретическая часть

1.1. Общая характеристика файловой системы fat32

Система FAT32 - новая файловая система на основе формата FAT, она поддерживается всеми основными версиями Windows: Windows 95 OSR2, Windows 98, Windows 2000, Windows XP, Windows 7.

Основное отличие этой файловой системы от предшествующих вариантов FAT12 и FAT16 состоит в том, что FAT32 использует 32-разрядные номера кластеров, но при этом резервирует старшие 4 бита, так что эффективный размер идентификатора кластера составляет 28 бит. Максимальный размер кластеров FAT32 равен 32 Кбайт, что теоретически позволяет работать с 8-терабайтными разделами. Большее число кластеров, поддерживаемое FAT32, позволяет ей управлять дисками более эффективно, чем FAT 16. FAT32 может использовать 512-байтовые кластеры для томов размером до 128 Мбайт.

Существующие инструментальные средства и драйверы будут работать и на FAT32-дисках. Однако драйверы блочных устройств MS-DOS (например, Aspidisk.sys) и дисковые утилиты нуждаются в модификации для поддержки FAT32. Все дисковые утилиты, поставляемые Microsoft (Format, Fdisk, Defrag, а также ScanDisk для реального и защищенного режимов), переработаны и полностью поддерживают FAT32.

Структура раздела диска в FAT32 несколько отличается от разделов с FAT12 иFAT16 (рис. 1)6.

1.2. Системные структуры данных fat32

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

  • загрузочная запись (boot record, BR);

  • резервная область, включающая дополнительную системную структуру FSInfo;

  • две копии таблиц размещения файлов FAT 1 и FAT 2.

Корневой каталог в системной области FAT32 отсутствует и может быть расположен в любом месте области данных раздела и иметь произвольный размер.

Общее число зарезервированных секторов теперь перед первой FAT равно 32.

Область данных логического диска содержит файлы и каталоги, подчиненные корневому каталогу, и разделена на участки одинакового размера – кластеры. Кластер может состоять из одного или нескольких последовательно расположенных на диске секторов. Число секторов в кластере должно быть кратно 2n и может принимать значения от 1 до 64. Размер кластера зависит от объема логического диска.

Рис. 1

В первом секторе логического диска с системой FAT32 располагается загрузочный сектор (Boot Record – BR) и блок параметров BIOS (BPB). Блок параметров BIOS в FАТ32 занимает больше места, чем стандартный, и называется Big FAT BIOS Parameter Block (BF_BPB). Из-за этого загрузочный сектор теперь занимает не один, а три физических сектора, причем имеется еще дополнительный и размещается через три физических сектора в седьмом, восьмом и девятом физическом секторе.

BF_BPB - это расширенная версия ВРВ, которая использовалась в 12- и 16-разрядной FAT. Он содержит те же структуры, что и стандартный BPB, но включает несколько дополнительных полей, которые используются только в FAT32. Начальный участок данного блока (табл. 1) для всех типов FAT идентичен за исключением полей со смещением 0x11 и 0x16, в которых для FAT 32 указываются нулевые значения.

Таблица 1

 Смещение

Размер, байт

Описание

0x00

3

Безусловный переход (jmp) на загрузочный код

0x03

8

Идентификатор фирмы-изготовителя

0x0B

2

Число байт в секторе (512)

0x0D

1

Число секторов в кластере

0x0E

2

Число резервных секторов в резервной области раздела,

начиная с первого сектора раздела

0x10

1

Число таблиц (копий) FAT

0x11

2

Для FAT12/FAT16 - количество 32-байтных дескрипторов файлов в корневом каталоге; для FAT32 это поле имеет значение 0

0x13

2

Общее число секторов в разделе; если данное поле содержит 0,

то число секторов задается полем по смещению 0x20

0x15

1

Тип носителя. Для жесткого диска имеет значение 0xF8;

для гибкого диска (2 стороны, 18 секторов на дорожке) – 0xF0

0x16

2

Для FAT12/FAT16 это поле содержит количество секторов, занимаемых одной копией FAT; для FAT32 это поле имеет значение 0

0x18

2

Число секторов на дорожке (для прерывания 0x13)

0x1A

2

Число рабочих поверхностей (для прерывания 0x13)

0x1C

4

Число скрытых секторов перед разделом

0x20

4

Общее число секторов в разделе. Поле используется, если в разделе свыше 65535 секторов, в противном случае поле содержит 0.

Существенные различия в структуре загрузочных секторов для разных типов FAT начинаются со смещения 0x24. Для FAT32 структура этой части BPB (BF_BPB) имеет вид, представленный в табл. 2.

Таблица 2

 Смещение

Размер, байт

Описание

0x24

4

Количество секторов, занимаемых одной копией FAT

0x28

2

Номер активной FAT

0x2A

2

Номер версии FAT32: старший байт - номер версии, младший – номер ревизии. В настоящее время используется значение 0:0

0x2С

4

Номер кластера для первого кластера корневого каталога

0x30

2

Номер сектора структуры FSInfo в резервной области логического диска

0x32

2

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

0x34

12

Зарезервировано (содержит 0)

Кроме перечисленных полей, загрузочный сектор логического диска должен содержать в байте со смещением 0x1FE код 0x55, а в следующем байте (смещение 0x1FF) – код 0xAA. Указанные два байта являются признаком загрузочного диска.

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

На логическом диске с организацией FAT32 дополнительно присутствует структура данных FSInfo, которая размещается в первом секторе резервной области. Эта структура содержит информацию о количестве свободных кластеров на диске и о номере первого свободного кластера в таблице FAT. Формат структуры FSInfo представлен в табл 3.

Таблица 3

 Смещение

Размер, байт

Описание

0x000

4

Значение 0x41615252 – сигнатура, которая служит признаком того, данный сектор содержит структуру FSInfo

0x004

480

Зарезервировано (содержит 0)

0x1E4

4

Значение 0x61417272 (сигнатура)

0x1E8

4

Содержит текущее число свободных кластеров на диске. Если в поле записано значение 0xFFFFFFFF, то число свободных кластеров неизвестно, и его необходимо вычислять

0x1EC

4

Содержит номер кластера, с которого дисковый драйвер должен начинать поиск свободных кластеров. Если в поле записано значение 0xFFFFFFFF, то поиск свободных кластеров нужно начинать с кластера номер 2

0x1F0

12

Зарезервировано (содержит 0)

0x1FC

4

Сигнатура 0xAA550000 – признак конца структуры FSInfo

Еще одно важное новшество в FАТ32 состоит в следующем. В прежних версиях файловой системы FAT повреждение загрузочного сектора приводило к полной потере всего содержимого диска. В FAT32 при подготовке раздела с помощью системных программ (например, программой FDISK) создается резервная копия загрузочного сектора, которая помещается в логический сектор 6 данного раздела. Если новая MBR при обращении к загрузочному сектору обнаруживает ошибку чтения или неправильную сигнатуру, она ищет сектор 6 и считывает остальную часть загрузочного кода уже из него.

Предназначение FAT32 не изменилось. Она по-прежнему используется как таблица, связывающая отдельные кластеры файла. Элементы таблицы FAT теперь в 2 раза длиннее (4 байта).Старшие 4 бита каждого 32-битного значения зарезервированы и не участвуют в формировании номера кластера, поэтому максимальное число кластеров в 32-разрядной FAT равно 268 435 445.

Если кластер свободен, то соответствующий элемент FAT содержит код 0. Элементы каталожного дескриптора, указывающие на первый кластер файла, теперь состоят из четырех байтов, а содержимое этих байтов является номером (адресом) следующего кластера и элемента таблицы FAT, который содержит номер следующего кластера файла, а также является номером элемента таблицы FAT и т. д. до последнего кластера файла. Элемент FAT, соответствующий последнему кластеру в цепочке, содержит сигнатуру конца файла 0xFFFFFFF8. Если элемент FAT содержит код 0x0FFFFFF7, то кластер помечается как поврежденный и не должен выделяться системой.

Начальный кластер, указанный в 32-х байтном дескрипторе каталога, сообщает операционной системе, где на диске искать первую часть файла и где в таблице FAT32 искать следующий номер кластера. В показанном ниже дескрипторе каталога адрес начального кластера выделен полужирным шрифтом.

49 4F 20 20 20 20 20 20 - 44 4F 53 07 00 00 00 00

IO SYS.....

00 00 00 00 00 00 80 32 - ЗЕ 1В 02 00 46 9F 00 00

......

Для указания номера кластера используются два дополнительных байта. Они размещаются в зарезервированном поле дескриптора (в примере, показанном выше, это поле содержит код 00 00). Объединяя их с обычными (существующими в FAT16) двумя байтами (02 00), операционная система получает нужное значение (00 00 00 02) и ищет по нему соответствующий элемент таблицы FAT. Ниже показан пример записи с номерами кластеров файла в 32-разрядной таблице FAT:

F8 FF FF 0F FF FF FF 0F - 03 00 00 00 04 00 00 00

05 00 00 00 06 00 00 00 - 07 00 00 00 08 00 00 00

09 00 00 00 0А 00 00 00 - 0В 00 00 00 0С 00 00 00

0D 00 00 00 0Е 00 00 00 - 0F 00 00 00 10 00 00 00

11 00 00 00 12 00 00 00 - 13 00 00 00 14 00 00 00

15 00 00 00 16 00 00 00 - 17 00 00 00 18 00 00 00

19 00 00 00 1А 00 00 00 - 1В 00 00 00 FF FF FF F8

Как и раньше в FAT 16, F8 - это байт, содержащий дескриптор носителя. Следующие семь байтов, FF FF 0F FF FF FF 0F, зарезервированы. Номера кластеров записываются как четырехбайтовые числа, в которых младшие байты указаны первыми. Их следует читать так:

Код в таблице

03 00 00 00

04 00 00 00

05 00 00 00

06 00 00 00

Читаемое значение

00000003

00000004

00000005

00000006

Конец цепочки кластеров для файла помечается маркером FFFFFFF8.

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

В файловых системах FAT32 и VFAT (виртуальная FAT, расширение FAT16) включена поддержка длинных имен файлов (long file name, LFN). Для хранения длинного имени используются дескрипторы каталога, смежные с основным дескриптором. Имя файла записывается не ASCII-символами, а в системе кодирования Unicode. В одном дескрипторе каталога можно сохранить фрагмент длиной до 13 символов Unicode. Неиспользованный участок последнего дескриптора заполняется кодами 0xFFFF. Структура дескриптора каталога для длинного имени файла представлена в табл. 4.

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

Таблица 4

Смещение

Размер (байт)

Описание

0x00

1

Номер фрагмента

0x01

10

Символы 1-5 имени файла в Unicode

0x0B

1

Атрибуты файла

0x0C

1

Байт флагов

0x0D

1

Контрольная сумма короткого имени

0x0E

12

Символы 6-11 имени файла в Unicode

0x1A

2

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

0x1C

4

Символы 12-13 имени файла в Unicode

Псевдоним удовлетворяет формату "8.3”, составляется из первых шести символов имени файла, дополняемых знаками ~n (где n - порядковый номер), и первых трех символов за последней точкой. В псевдониме используются только допустимые символы, а все буквы должны быть заглавными, чтобы соответствовать правилам формата "8.3".

В качестве примера ниже приводится структура дескрипторов каталога для файла с именем "The quick brown fox". Система создала представление этого имени в формате "8.3", THEQUI~1.FOX (в элементе каталога нет "точки", поскольку предполагается, что точка следует после восьмого символа), и использовала два дополнительных 32-х байтных дескриптора для хранения длинного Unicode-имени. Каждая строка на рисунке состоит из 16 байт.

Второй (и последний) элемент для длинного имени:

0х42

w

n

.

f

o

0x01

0x00

Контр. сумма

x

0x0000

0xFFFF

0xFFFF

0xFFFF

0xFFFF

0x0000

0xFFFF

0xFFFF

Первый элемент для длинного имени:

0x01

T

h

e

 

q

0x0F

0x00

Контр. сумма

u

i

c

k

 

b

0x0000

r

o

Элемент для короткого имени:

T

H

E

Q

U

I

~

1

F

O

X

0x20

NT

Время создания

Дата создания

Время последнего доступа

0x0000

Время последней модификации

Дата последней модификации

Первый кластер

Размер файла