Размещение FAT таблицы на гибком диске
Структура размещения раздела FAT изображена на рисунке
0 1 18 19 32 33 2847
Рис. Структура системного гибкого (3,5”) диска с операционной системой MS DOS.
На гибком диске 0-я и 1-я дорожки отведены для размещения модулей операционной системы и организации файловой структуры диска:
· 0-й сектор занимает загрузчик.
· 18 секторов (с 1 по 18) отведены для основной и дублирующих таблиц размещения файлов FAT (File Allocations Table), в которых хранятся номера кластеров, выделенных под каждый файл.
· 14 секторов (с19 по 32) занимает главный каталог.
· Начиная с 33- го сектора, располагаются два модуля IO.sys и MS DOS.sys
· Командный процессор Command.Com наряду с другими программами располагается в области пользователя.
Справка:Структура диска с прикладными программами (без операционной системы) полностью совпадает по 32-сектор включительно со структурой системного диска. Начиная с 33-го сектора, располагается область пользователя, где хранятся прикладные программы.
Таблица каталогов.
Каталог представляет собой справочник, содержащий сведения о местоположении, размере, дате и времени обновления файлов. Для каждого файла и каталога на диске имеется один элемент в определенном каталоге. Один элемент корневого каталога выделяется для метки диска. Для каждого каталога есть один элемент в его родительском каталоге. Кроме того, каждый каталог за исключением корневого, содержит по одному элементу для специальных имен «.» и «..». Эти элементы указывают начало цепочки в FATсоответственно для самого каталога и для его родительского каталога. Такая система описания каталогов обеспечивает возможность сокращенного написания пути к данному файлу, когда он проходит через родительский каталог.
Каждый элемент каталога MS DOS имеет длину 32 байта и структуру представленную в Табл. .
Табл. Элемент главного каталога.
Длина, (байт) | FAT |
Имя файла, каталога или тома | |
Расширение имени файла | |
Байт атрибутов | |
Резервное поле | |
Код времени обновления файла | |
Код даты изменения файла | |
Номер первого кластера файла | |
Размер файла | |
Поле имени. Если имя содержит меньше 8 символов, то справа оно дополняется пустыми позициями.
Код 00 в первом байте поля имени показывает, что этот элемент каталога ранее не использовался. Тат как каталог заполняется последовательно , это означает, что и следующие за ним элементы не использовались. Это позволяет избежать лишнего поиска в каталоге. При стирании файла в первом байте соответствующего элемента каталога записывается код E5. все остальные байты элемента не изменяются. Сохраняемая в каталоге и FAT информация после удаления файла позволяет выполнять его восстановление, если занимаемое им ранее дисковое пространство не было выделено другому файлу.
Код 2E (символ «.») в первом байте показывает, что элемент описывает сам каталог. Если и второй байт содержит код 2E, то элемент описывает родительский каталог («..»).
Расширение имени. Если этот элемент описывает файл, то поле может быть пустым. В противном случае это поле используется, когда в элементе корневого каталога указывается метка тома.
Атрибуты файла. Каждый бит этого поля задает определенный атрибут, указанный в табл.ХХ.
№бита | Назначение |
Защищенный | |
Скрытый | |
Системный | |
Метка тома | |
Каталог | |
Архивный | |
Не используется | |
Не используется |
Табл.ХХ Состав байта атрибутов.
Поле «время». Его содержимое рассматривается как целое число без знака, полученное по следующей формуле: часы *2048 +минуты*32 + секунды\2.
Для выполнения обратного преобразования следует разделить содержимое поля на 2048, частное от деления даст нам часы. Деление остатка не 32 дает нам минуты, а полученный остаток при умножении его на 2 дает секунды.
Поле «дата». Содержимое его рассматривается как целое число без знака, полученное по следующей формуле: (год-1980)*512+месяц*32+день.
По этой формуле календарь поддерживается с 1980г. по 2108г. (из-за ограниченности ширины поля даты).
Номер первого кластера. Содержимое этого поля одновременно служит указателем к первому кластеру файла в поле данных и к первому элементу в цепочке FAT. Для файлов, которым не выделено место на диске и для метки тома это поле содержит код 0000(h).
Кластеры файла
первый дефектный свободный последний
№элемента каталога FAT
|
|
|
|
17 дефектный кластер
|
|
Рис.XX Пример цепочки FAT.
Файл размещается на диске по кластерам, которые пронумерованы. Количество ячеек FAT –таблицы определяется количеством кластеров на диске. Каждая ячейка может содержать номер кластера, хранящего информацию.
В файловой системе FAT кластеры могут иметь различное значение. Например, это может быть свободный (неиспользуемый) кластер, кластер, занятый файлом, дефектный кластер или последний кластер файла. Каждый элемент FAT представляет собой код из трех (12-битовая таблица) или из четырех (16-битовая) или из восьми(32-битовая) шестнадцатеричных цифр При этом используются следующие коды (на примере FAT16):
0000h – кластер свободен
0003h – FFEFh – номера очередных кластеров файла
FFF0h – FFF9h – резервные кластеры.
FFF7h - дефектный кластер и т.д..
Как видно из Рис XX номер первого кластера файла содержится в каталоге. Этот номер одновременно определяет точку входа в FAT. Находящийся в ней элемент FAT указывает одновременно на очередной кластер файла и на очередной элемент FAT и т.д. до элемента таблицы, содержащего признак конца файла