Исследование системных областей дисков, страница 7

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

Такая фрагментация файла несколько замедляет доступ к хранящимся в нем данным. Кроме того, значительно сложнее восстановить файл, который вы неумышленно удалили, если тот состоит из фрагментов, по той простой причине, что вам придется потратить больше усилий на поиски отдельных кластеров, выделенных под этот файл. Однако никаких других последствий фрагментация за собой не влечет, и программам обычно нет необходимости беспокоиться о том, где на диске хранятся их данные. Чтобы определить, является ли файл фрагментированным, воспользуйтесь командой CHKDSK или программой, подобной Norton Utilities.

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

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

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

Таблица размещения файлов (File Allocation Table — FAT) является в системе DOS картой использования пространства в области файлов на диске.

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

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

Таблица 10. Возможные значения в записях FAT

12-битовое значение

16-битовое значение

Примечание

0

0

Неиспользуемый кластер

FFO-FF6H

FFFO-FFF6H

Зарезервированный кластер

FF7H

FFF7H

Дефектный кластер

FF8-FFFH

FFF8-FFFFH

Последний кластер файла

(другие значения)

Следующий кластер файла

Это означает, что пространство, принадлежащее данному файлу, отображается в виде цепочки из записей FAT, каждая из которых указывает на следующую запись в цепочке. Номер первого кластера в цепочке является начальным номером кластера в записи каталога для файла. Когда создается или же расширяется файл, DOS выделяет кластеры файлу с помощью поиска в FAT неиспользуемых кластеров, для которых в соответствующих записях FAT хранится 0, и включения их в цепочку. И наоборот, когда размер файла сокращается или же файл удаляется, DOS «высвобождает кластеры, выделенные ранее файлу, путем обнуления соответствующих записей FAT.