Операционная система MS DOS (том 2)

Таблица размещения файлов


Сразу после загрузочного сектора на логическом диске находятся сектора, содержащие таблицу размещения файлов FAT (File Allocation Table). В отечественной литературе иногда можно встретить аббревиатуру ТРФ, однако мы будем пользоваться общепринятым сокращением - FAT.

Для того, чтобы назначение этой таблицы стало более понятным, вспомним, как организовано хранение информации на различных носителях данных.

Магнитные ленты. Этот вид носителей информации использовался еще в самых первых ЭВМ. В современных компьютерах магнитные ленты используются для разгрузки магнитных дисков.

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

Если вы попытаетесь перезаписать файл, то это может привести к потере всех файлов, расположенных на магнитной ленте после перезаписываемого.

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

Но метод доступа - это еще не все. Важное значение имеет способ распределения места на диске для файлов. От правильного выбора способа распределения зависит эффективность работы программ.

Операционная система ОС ЕС для ЭВМ ряда ЕС позволяет задать начальное количество цилиндров диска для размещения набора данных и размер области диска, которая может быть использована для этого набора дополнительно. Если при записи в файл все распределенное для файла место на диске окажется исчерпанным, программа завершится аварийно, даже если на диске еще есть свободные цилиндры.

Операционные системы, подобные DOS, UNIX, OS/2 используют дисковое пространство другим способом.


В этих операционных системах при создании файла для него не задается начальное распределение памяти в дорожках или секторах. По мере того, как файл увеличивается в размерах, операционная система распределяет этому файлу сектора из числа свободных, не используемых другими файлами. При этом файл располагается не обязательно в смежных областях диска, он может быть разбросан по разным дорожкам и секторам.
Очевидно, что в этом случае операционная система должна вести учет используемых участков диска. Для каждого файла она должна хранить где-то информацию о том, какому файлу какие участки диска распределены.
В операционной системе MS-DOS для хранения этой информации используется таблица размещения файлов.


Весь диск разбивается операционной системой на участки одинакового размера, называемые кластерами. Кластер может содержать несколько секторов. Для каждого кластера FAT имеет свою индивидуальную ячейку, в которой хранится информация об использовании данного кластера. Другими словами, таблица размещения файлов - это массив, содержащий информацию о кластерах. Размер этого массива определяется общим количеством кластеров на логическом диске. (Именно кластеров, а не секторов!).
Что же хранится в таблице размещения файлов?
Все свободные кластеры помечены в ней нулями. Если файл занимает несколько кластеров, то эти кластеры связаны в список. Для связанных в список кластеров элементы таблицы FAT содержат номера следующих используемых данным файлом кластеров. Конец списка отмечен в таблице специальным значением. Номер первого кластера, распределенного файлу, хранится в элементе каталога, описывающего данный файл.
Утилиты операционной системы и некоторые специальные утилиты проверяют диск на предмет наличия дефектных областей. Кластеры, которые находятся в этих дефектных областях, отмечаются в FAT как плохие и не используются операционной системой.
Итак, FAT - массив информации об использовании кластеров диска, содержит односвязные списки кластеров, распределенных файлам. Номера начальных кластеров файлов хранятся в каталогах, о которых мы будем говорит в разделе "Файлы и каталоги". Прежде чем углубляться в тонкости таблицы размещения файлов, приведем рисунок, иллюстрирующий сказанное выше.


+­­­­­+ +­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ ¦ ¦AUTOEXECBAT¦ ... ¦Номер 1- го кластера: 11¦..¦ ¦ +­­­­­­­­­­­+­­­­­+­­­­­­­­­­­­­­­­­­­­­­­+­­¦ ¦ ¦CONFIG SYS¦ ... ¦Номер 1-го кластера: 27¦..¦ ¦ +­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ ¦ ¦ ¦ ¦ ¦ +­­­­­+­­­­­­+ +­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ ¦ +­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ ¦ ¦...¦12¦13¦14¦15¦16¦17¦18¦19¦20¦FF¦ 0¦ 0¦ 0¦ 0¦...¦ ¦ +­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ ¦ +­­­­­­­­­­­­­­­­­­­+ ¦ ¦...¦28¦29¦30¦FF¦...¦ ¦ +­­­­­­­­­­­­­­­­­­­+ ¦ +­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+


На этом рисунке показаны фрагменты корневого каталога диска С: и элементы FAT для файлов autoexec.bat
и config.sys. Реально эти файлы не используют столько кластеров. Из рисунка видно, что в каталоге для файлов указаны номера первых кластеров (соответственно 11 и 27). Таблица FAT в одиннадцатой ячейке содержит число 12 - номер следующего кластера, распределенного файлу autoexec.bat. Ячейка с номером 12 содержит число 13, и так далее. Последняя ячейка, соответствующая последнему кластеру распределенному этому файлу, содержит специальное значение - FF. В этом примере все кластеры файлов расположены подряд, но это может быть и не так.
Существуют два формата FAT - 12-битовый и 16-битовый. Эти форматы используют, соответственно, 12 и 16 битов для хранения информации об одном кластере диска.
12-битовый формат удобен для дискет с небольшим количеством секторов - вся таблица размещения файлов помещается целиком в одном секторе. Если размер диска такой, что для представления всех секторов двенадцати разрядов недостаточно, можно увеличить размер кластера, например до восьми секторов. Однако большой размер кластера приводит к неэффективному использованию дискового пространства. Это происходит из-за того, что минимальный выделяемый файлу элемент - кластер - имеет слишком большой размер. Даже для файла, имеющего длину 1 байт выделяется целиком кластер. Значит, если размер кластера составляет 8 секторов, то для хранения одного байта будет использовано 4 килобайта дисковой памяти.
При использовании FAT 16-битового формата
операционная система может работать с диском, который имеет размер более 32 мегабайт. DOS версии 4.0 при использовании 16-битового формата FAT и кластеров размером 4 сектора может работать с разделами, по размеру достигающими 134 мегабайтов.

Содержание раздела