Физическая организация

Логический раздел, отформатированный под файловую систему FАТ, состоит из следующих областей (рис. 12.1).

·
Загрузочный сектор содержит программу начальной загрузки операционной системы. Вид этой программы зависит от типа операционной системы, которая будет загружаться из этого раздела.

· Основная копия FAT содержит информацию о размещении файлов и каталогов на диске.

· Резервная копия FAT.

· Корневой каталог занимает фиксированную область размером в 32 сектора (16 кбайт), что позволяет хранить 512 записей о файлах и каталогах, т.к. каждая запись каталога состоит из 32 байт. (Это ограничение снято в файловой системе FAT32).

· Область данных предназначена для размещения всех файлов и всех каталогов (кроме корневого).

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

Рассмотрим, каким образом ОС следит за распределением пространства на диске, т.е. обратимся непосредственно к структуре, называемой таблицей FAT (File Allocation Table – таблица размещения файлов). Она содержит по одному элементу для каждого кластера на диске.

Каждый кластер на диске имеет свой номер. Нумерация сквозная, начиная с 0 кластера на нулевой дорожке, и так в последовательности их расположения на дорожках, переходя с одной дорожки на другую до последнего кластера на последней дорожке. Первые два кластера на диске выделены под системную информацию. Распределяются кластеры, начиная со второго.

Элемент в таблице FAT может принимать следующие значения, характеризующие состояния связанного с ним кластера:

· кластер свободен (не выделен ни одному файлу);

· кластер используется файлом и не является последним кластером файла, в этом случае элемент таблицы содержит номер следующего кластера файла;

· последний кластер файла;

· дефектный кластер;

· резервный кластер.

В исходном состоянии (после форматирования) все кластеры файловой системы свободны и все элементы таблицы FAT принимают значение «кластер свободен». При размещении файла ОС просматривает FAT с начала и ищет первый свободный элемент. Найдя такой элемент, ОС записывает в соответствующий кластер порцию данных, а номер соответствующего элемента фиксирует в каталоге. Если размер файла больше размера кластера, то продолжается просмотр таблицы для поиска очередгого свободного элемента таблицы. После его обнаружения номер этого элемента заносится в номер предыдущего элемента и т.д. Так происходит до тех пор, пока не закончатся все данные для файла. В этом случае в последний элемент цепочки элементов FAT заносится признак конца файла.

При обращении к существующему файлу выполняется подобная процедура. Элемент каталога, содержащий информацию о файле, содержит номер первого кластера файла. В FAT элемент для этого кластера содержит адрес следующего кластера. Такая цепочка будет продолжаться, пока не будет достигнут последний кластер файла, элемент FAT которого содержит специальный код, означающий конец файла (End-of-File -- EOF).

Предположим, что элемент каталога для файла GROUP112.DB показывает, что файл начинается в кластере 5. Найдем кластер 5 на рис.12.2. Этот элемент содержит число 6, поэтому продолжение файла нужно искать в кластере 6. Согласно FAT, из шестого кластера нужно перейти в десятый, а из десятого – в одиннадцатый. В элементе FAT для одиннадцатого кластера находится маркер конца файла. Таким образом, этот файл занимает 4 кластера, что должно согласовываться с размером файла, указанным в элементе каталога.

                     
    EOF       EOF     EOF  

 
 
Рис.12.2. Пример таблицы размещения файлов (FAT)


Файл GROUP112.DB является примером фрагментированного файла. Вместо расположения в соседних кластерах файл разделен на два фрагмента. Чтобы использовать все дисковое пространство в работе с данной файловой системой, ОС часто вынуждена фрагментировать файлы. Особенно велика вероятность фрагментации при расширении файла. Если, например, при расширении файла GROUP112.DB потребовался дополнительный кластер, ОС не сможет выделить кластер 12, так как он принадлежит другому файлу. Для файла приходится искать следующий свободный кластер, отмеченный в FAT нулем (0). При этом образуется еще один фрагмент.

Для многих файлов требуется один кластер. Предположим, что файл PROG1.PAS начинается в кластере 4. В приведенной на рис.12.2 FAT кластер 4 содержит маркер конца файла; следовательно, это единственный кластер файла.

Размер таблицы FAT и разрядность используемых в ней элементов определяется количеством кластеров в области данных. Для уменьшения потерь из-за фрагментации желательно кластеры делать небольшими, а для сокращения объема адресной информации и повышения скорости обмена наоборот - чем больше, тем лучше. При форматировании дисков FAT обычно применяют компромиссное решение и размеры кластеров выбираются из диапазона от 1 до 128 секторов (всегда целая степень 2), или от 512 байт до 64 кбайт.

Очевидно, что разрядность элемента в таблице FAT должна быть такой, чтобы в нем можно было задать максимальный номер кластера для диска определенного объема. Существует несколько разновидностей FAT, отличающихся разрядностью элементов в таблице, эта разрядность и используется в качестве условного обозначения: FAT12. FAT16 и FAT32. В файловой системе FAT12 используются 12-разрядные элементы, что позволяет поддерживать 4096 кластеров в области данных диска, в FAT16 – 16-разрядные элементы для 65536 кластеров и в FAT32 – 32-разрядные для более 4 миллиардов кластеров.

Форматирование FAT12 обычно характерно для небольших дисков объемом не более 16 Мбайт, чтобы не использовать кластеры больше 4 кбайт. По этой причине считается, что FAT16 целесообразнее для дисков с объемом не более 512 Мбайт, а для больших дисков лучше подходит FAT32, которая способна использовать кластеры 4 Кбайт при работе с дисками до 8 Гбайт и только для дисков большего объема начинает использовать 8, 16, 32 кбайт. Максимальный размер логического диска FAT16 ограничен 4 Гбайт, такой объем дает 65536 кластеров по 64 кбайт каждый, а максимальный размер раздела FAT32 практически не ограничен – 232 кластеров по 32 Кбайт. Однако, не все ОС могут работать с системой FAT32, FAT16 – более универсальна.

При удалении файла из файловой системы FAT в первый байт соответствующей записи каталога заносится специальный признак, свидетельствующий о том, что запись свободна, а во все элементы таблицы FAT, отданные под файл, заносится признак «кластер свободен». Остальные данные в записи каталога, в том числе номер первого кластера файла, остаются нетронутыми, что оставляет шансы для восстановления ошибочно удаленного файла. (В системах Windows удаление файла происходит обычно в 2 этапа: на первом - удаленный файл просто перерегистрируется в другом каталоге с именем Корзина, на втором этапе по запросу пользователя или переполнению Корзины производится фактическое удаление с помощью вышеописанного процесса модификации таблицы FAT.)

Существует большое количество утилит для восстановления удаленных файлов FAT, выводящих пользователю список имен удаленных файлов с отсутствующим первым символом имени после освобождения имени. В ОС MS-DOS такой утилитой была утилита UNDELETE. Очевидно, что надежно можно восстановить только файлы, которые были расположены в последовательных секторах диска, так как при отсутствии связного списка (а он был удален в таблице) выявить принадлежность произвольно расположенного кластера удаленному файлу невозможно. Кроме того, полное восстановление файла после модификации таблицы FAT (2 этапа в системах Windows) возможно, если не производилась запись на диск, так как при записи система могла выделить кластеры удаленного файла для размещения нового файла.

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

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

В наши дни к стандартной FAT добавились еще 2 разновидности: VFAT (виртуальная FAT) и FAT32.


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



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