Шаг 54.
Структура диска. Таблица распределения файлов (таблица FAT)

    На этом шаге мы рассмотрим содержание и использование таблицы FAT.

    Назначение таблицы распределения файлов (FAT - File Allocation Table) - распределение дискового пространства для файлов. При создании нового файла или изменении существующего, DOS меняет элементы этой таблицы в соответствии с расположением файла на диске. Первый байт FAT определяет тип устройства:

Второй и третий байты содержат FFFFH.

    Начиная с четвертого байта, элементы FAT определяют кластеры. Каждый элемент таблицы FAT имеет длину 12 бит (для винчестера элементы FAT могут иметь длину 16 бит). Два первых элемента FAT, известные как относительные секторы 000 и 001, соответственно, указывают на два последних сектора оглавления, определяя его размер и формат. Первый файл данных начинается на относительном секторе 002. Каждый элемент FAT состоит из трех шестнадцатеричных цифр (12 бит), которые указывают на характер использования конкретного кластера. Их возможные значения перечислены в таблице 1.

Таблица 1. Назначение кластера
Значение Назначение
000 Свободный кластер.
nnn (число) Относительный номер следующего кластера для файла.
FF7H Неиспользуемый ("сбойный") кластер.
FFFH Последний кластер файла.

    Рассмотрим, как используется таблица FAT для загрузки файла.

    Пусть, например, дискета содержит только один файл с именем PROBA.ASM, занимающий элементы таблицы FAT с номерами 2, 3 и 4. Элемент оглавления для этого файла содержит имя файла PROBA, тип - ASM, атрибут файла - 00H (обычный файл), дату создания, 002 - номер первого кластера файла и размер файла в байтах. Таблица FAT в этом случае может выглядеть следующим образом:


Рис.1. Содержимое таблицы FAT

    Для размещения содержимого рассматриваемого файла в памяти, система выполняет следующие действия:

    Изменим содержимое нашей дискеты. Запишем на нее еще один файл с именем PROBA1.ASM, который занимает два кластера. Затем загрузим в память файл PROBA.ASM, дополним его и запишем его на диск под тем же самым именем.

    Таблица FAT после выполнения этих операций может принять следующий вид:


Рис.2. Содержимое таблицы FAT после изменения содержимого диска

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

    Кластеры с номерами 5 и 6 занимает содержимое файла PROBA1.ASM. Отметим, что, например, после удаления файла PROBA1.ASM таблица FAT примет следующий вид:


Рис.3. Содержимое таблицы FAT после удаления файла PROBA1.ASM

    Значения 000 в кластерах с номерами 5 и 6 говорят о том, что эти кластеры "свободны", то есть они могут использоваться при размещении на диске других файлов.

    Таким образом, элемент каталога содержит номер начального кластера для каждого файла, а FAT - шестнадцатеричные трехзначные элементы, указывающие на расположение каждого дополнительного кластера, если он имеется. Для того чтобы указать, например, что файл содержит все записи только в первом кластере, таблица FAT должна содержать FFFH в элементе, представляющем первый кластер.

    Для работы с оглавлением диска и таблицей FAT имеются специальные программы, например DISKEDIT.EXE из пакета Norton Utilites.

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

    Со следующего шага мы начнем рассматривать работу с файлами.




Предыдущий шаг Содержание Следующий шаг