Структура логического диска под FAT12 (WFAT)

Логический диск с системой FAT состоит из системной области и области файлов. Каждая часть логического диска занимает целое число логических секторов.

Секторы области файлов объединены в кластеры, размер кластера 1, 2, 4, 8, 16, 32 или 64 сектора по 512 байт. Номер первого кластера равен 2, так как первые две ячейки FAT зарезервированы (содержат байт-описатель).

На рисунке приведена структура логического диска для файловой системы FAT12:


Сектор 0, называемый также начальным загрузчиком, содержит таблицу параметров диска и начальный загрузчик операционной системы. Первые 3 байта сектора 0 содержат команду перехода JMP на начало загрузчика: либо байт 0E9h и 1 байт короткого смещения, за которым следует команда NOP (код 90h), либо байт 0EBh и два байта длинного смещения. Длинное смещение используется, если загрузчик располагается в зарезервированных секторах.

Далее расположено поле из 8 бит, в которое при форматировании заносится идентификатор версии ОС. Это текстовая строка, имеющая значение MSWIN4.1 для ОС Windows.

Далее располагается таблица BPB (BIOS parameter block), описывающая физические характеристики диска и позволяющая вычислить правильный физический адрес на диске по данному номеру логического сектора. За таблицей располагаются дополнительные данные.

За сектором 0 могут быть расположены дополнительные зарезервированные (для загрузчика) секторы. Общее число зарезервированных секторов, включая сектор 0, указывается в BPB.

Таблица BPB для FAT12 содержит следующие характеристики диска:

Смещение в секторе Размер Содержание
0Bh   Число байтов в секторе (всегда 512)
0Dh   Число секторов в кластере
0Eh   Размер системной области (включая этот сектор)
10h   Число таблиц FAT (чаще всего 2)
11h   Число описателей файлов в корневом каталоге (в FAT32 - 0)
13h   Общее число секторов на диске (если 0, то размер - в поле со смещением 20h)
15h   Тип устройства
16h   Размер одной FAT в секторах (0 в FAT32)
18h   Число секторов на дорожке
1Ah   Число головок
1Ch   Абсолютный номер этого сектора
20h   Размер диска в секторах

За таблицей BPB расположена дополнительная информация для операционной системы:

Смещение Размер Содержимое
24h   Номер дисковода для функций BIOS
25h   Зарезервировано
26h   Сигнатура - 29h
27h   Дата/время создания диска
2Bh   Метка диска - текстовая строка
36h   Аббревиатура файловой системы


Физический номер диска для жестких дисков начинается с 80h.


Серийный номер тома - это шестнадцатеричное псевдослучайное число, предназначенное для того, чтобы ОС могла проверять смену пользователем дискета, когда он еще используется, но на самом деле такой проверки не делается.


Метка тома - это строка, предназначенная для идентификации тома пользователем.


Описатель FAT нельзя рассматривать как идентификатор файловой системы.


Далее с адреса 03Eh расположен начальный загрузчик.


Последние два байта сектора 0 содержат признак загрузочной записи - байт 55h по адресу 1FEh и байт AAh по адресу 1FFh (его можно рассматривать как слово AA55h по адресу 1FEh).

За зарезервированными секторами (или непосредственно за сектором 0) располагается таблица размещения файлов (на рисунке FAT-1), после которой могут располагаться дополнительные копии FAT. Обычно используется 2 копии. Число копий указано в BPB.

Все файлы и папки содержатся в кластерах. Папка – это тот же файл, в котором установлен атрибут каталога и содержатся ссылки на файлы и другие папки, “содержащиеся” в нём. В элементе FAT, соответствующем кластеру файла, содержится номер следующего кластера файла, или специальное значение, сигнализирующее, что файл закончен. Таким образом, для чтения всего файла нужно знать только номер его первого кластера, который и находится в описателе файла в папке, содержащей его. Мы читаем первый кластер, затем смотрим в таблице FAT номер следующего кластера, считываем его, и так далее, пока не встретим значение “конец файла” (равно –1 в системах Microsoft).

Номер элемента FAT              
Содержимое элемента           -1  
    Свободный кластер Начало файла     Последний кластер файла  

На рисунке показан фрагмент таблицы FAT, в котором показано расположение файла с первым кластером 22. Для простоты, файл находится в смежных кластерах. При запросе на чтение файла ОС найдёт в папке ссылку на этот файл и прочитает кластеры с 22 по 25.

В конце системной области расположен корневой каталог, который имеет фиксированный размер. Размер корневого каталога в каталожных записях также указан в таблице BPB.
Поскольку загрузочная запись слишком мала для хранения алгоритма поиска системных файлов на диске, то системные файлы должны находиться в определенном месте, чтобы загрузочная запись могла их найти. Фиксированное положение системных файлов в начале области данных накладывает жесткое ограничение на размеры корневого каталога и таблицы размещения файлов. Вследствие этого общее число файлов и подкаталогов в корневом каталоге на диске FAT ограничено 512.

Каждому файлу и подкаталогу в FAT соответствует 32-байтный элемент каталога (directory entry), содержащий имя файла, его атрибуты (архивный, скрытый, системный и “только для чтения”), дату и время создания (или внесения в него последних изменений), а также прочую информацию (табл. 3).

Содержание Размер (байт)
Имя файла  
Расширение  
Байт атрибутов  
Зарезервировано  
Время  
Дата  
Номер начального кластера с данными  
Размер файла  

Табл. 3. Элемент каталога

Файловая система FAT всегда заполняет свободное место на диске последовательно от начала к концу. При создании нового файла или увеличении уже существующего она ищет самый первый свободный кластер в таблице размещения файлов. Если в процессе работы одни файлы были удалены, а другие изменились в размере, то появляющиеся в результате пустые кластеры будут рассеяны по диску. Если кластеры, содержащие данные файла, расположены не подряд, то файл оказывается фрагментированным. Сильно фрагментированные файлы значительно снижают эффективность работы, так как головки чтения/записи при поиске очередной записи файла должны будут перемещаться от одной области диска к другой. В состав операционных систем, поддерживающих FAT, обычно входят специальные утилиты дефрагментации диска, предназначенные повысить производительность файловых операций.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: