Предыдущий раздел ОПЕРАЦИИ С ФАЙЛАМИ Следующая глава

16.1. Файловая система FAT

Физический файл существует в ВС не обособленно, а как часть более крупной информационной единицы, называемой файловой системой (ФС). Эту систему образуют файлы и таблицы, расположенные на конкретном носителе ВП или расположенные на его части  (в разделе или на логическом диске). Иногда в понятие файловой системы включают и совокупность подпрограмм ОС, выполняющих операции с файлами. Но мы, для избежания путаницы, этого делать не будем. Например, файловые системы, поддерживаемые (обслуживаемые) DOS, имеют тип FAT. Этот тип объединяет три родственных типа файловых систем: FAT12, FAT16 и FAT32.

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

1) структура ФС;

2) состав атрибутов файла и место их хранения;

3) размещение элементов ФС на носителе;

4) место хранения информации о размещении файла;

5) длина простого имени файла.

Из перечисленных характеристик структура ФС и длина простого имени файла были рассмотрена ранее. Перейдем к рассмотрению других характеристик.

Файл-каталог ФС FAT состоит из 32-байтовых логических записей. В FAT12 и в FAT16 одна такая запись соответствует одному файлу. В ней находятся: простое имя файла (собственно имя и расширение имени); номер первого кластера логического диска, занимаемого данным файлом; атрибуты файла. В FAT32 каждому файлу соответствуют несколько 32-байтовых записей каталога. Структура первой из них аналогична записи каталога в FAT12 и в FAT16, а в последующих записях содержится длинное (до 255 байтов) простое имя файла. Таким образом, один и тот же файл может обрабатываться как системными вызовами, предназначенными для работы с короткими, так и системными вызовами для работы с длинными именами файлов.

Любая ФС содержит для каждого из своих файлов его атрибуты. Они используются самой ОС, а также пользователями и обрабатывающими программами. Наименьшее число атрибутов имеют файлы в ФС, поддерживаемых однопользовательскими однопрограммными системами. Например, в FAT файл имеет атрибуты:

1) дата и время последней модификации файла;

2) текущий размер файла;

3) флаг “каталог”;

4) флаг “только для чтения”;

5) флаг “скрытый файл”;

6) флаг “системный файл”;

7) флаг “архивный файл”.

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

Разные ФС различным образом распределяют пространство носителя ВП (или его раздела) между своими элементами (файлами и таблицами).

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

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

На рис.52 приведено распределение пространства носителя ВП для ФС типа FAT.

 

Рис.52. Размещение системы FAT на носителе

 

Пространство ВП, выделенное в конкретной ФС для размещения файлов (в том числе, для размещения каталогов), может распределяться между ними двумя основными способами: 1) непрерывными разделами; 2) в виде совокупности блоков памяти, необязательно соседних друг с другом. Непрерывное распределение имеет серьезные недостатки:

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

2) имеет место внешняя фрагментация памяти – наличие в ВП пустых участков, полученных в результате удаления ненужных файлов. Несмотря на значительную суммарную длину этих участков, отсутствуют непрерывные разделы, позволяющие размещать достаточно большие файлы.

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

Что касается файлов на магнитных дисках, то память для них назначается динамически блоками, в качестве которых используются кластеры. Размер кластера для носителя (раздела) фиксируется при выполнении логического форматирования и составляет от 512 байт (1 сектор) до 64К (128 секторов). Размер кластера зависит как от размера носителя (раздела), так и от типа ФС.

Например, в FAT12, FAT16 и FAT32 для кодирования номера кластера используются соответственно 12, 16 и 32 бита (отсюда различия в названиях ФС). Поэтому, максимальный номер кластера в FAT12 равен 4095, в FAT16 – 65535, в FAT32 – 4Г. Размер кластера для каждого носителя (раздела) выбирается с таким расчетом, чтобы произведение размера кластера на его максимальный номер не было меньше, чем размер носителя (раздела). Иначе на носителе будут неадресуемые кластеры.

Другим фактором, влияющим на выбор размера кластера, является наличие внутренней фрагментации – из всех кластеров ВП, выделенных файлу, половина одного кластера (последнего), в среднем, не используется. Поэтому, чем меньше размер кластера, тем меньше суммарный объем неиспользуемого пространства ВП.

Основным следствием из двух названных факторов является то, что FAT12 используется для небольших дисков (не более 16 Мбайт), что позволяет не делать кластеры более 4 кбайт. FAT16 целесообразна для дисков не более 512 Мбайт. Для больших дисков целесообразна FAT32, которая позволяет для дисков емкостью до 8 Гбайт ограничиться размером кластера 4 кбайт. Для больших дисков приходится применять размер кластера 8, 16 или 32 кбайт.

При размещении файла в непрерывном пространстве ВП информация об его местоположении сводится к двум численным параметрам: номер первого кластера файла и длина файла (в кластерах). Но при размещении файла в разрывном пространстве надо знать, где находится каждый его кластер. В различных ФС такая информация содержится:

1) в записи каталога;

2) в самих кластерах файла;

3) в специальной таблице.

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

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

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

Реализация такого метода в DOS основана на использовании таблицы размещения файлов FAT (File Allocation Table), название которой используется в качестве названия всей ФС. Таблица FAT имеет столько 12-, 16- или 32-битных элементов, сколько кластеров носителя могут распределяться между файлами. Иными словами, FAT представляет собой уменьшенную модель распределяемой части носителя. Ее наличие позволяет размещать файл в разрывной области ВП. Для этого каждому файлу ставится в соответствие вспомогательный линейный связанный список, построенный из элементов таблицы FAT.

Вспомним, что одно из полей записи каталога, описывающей файл, содержит его начальный адрес. Этот адрес представляет собой номер первого кластера файла и, следовательно, номер соответствующего элемента в таблице  FAT. Содержимым этого элемента является номер следующего элемента связанного списка, который совпадает с номером следующего кластера файла. Если элемент FAT-таблицы соответствует последнему кластеру файла, то он содержит специальное число (FFFh, FFFFh или FFFFFFFFh).

 


Предыдущий раздел В начало Следующая глава