MS-DOS для программиста


Фрагментация файлов - часть 2


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

После форматирования диска программой format.com все кластеры, предназначенные для хранения файлов, помечаются в FAT как свободные. В процессе записи на диск нового файла в FAT записываются номера всех кластеров, распределенных данному файлу. Эти номера хранятся в виде односвязного списка.

Список строится следующим образом. Перед началом записи нового файла на диск MS-DOS просматривает FAT и находит первый свободный кластер. Номер этого кластера записывается в дескриптор файла. Далее в секторы этого кластера записываются данные. Если файл короткий и помещается целиком в один кластер, после записи данных в элемент FAT, соответствующий первому кластеру, записывается специальное значение, означающее конец цепочки кластеров (0FFFFh или 0FFFh в зависимости от типа FAT).

Если же длина файла больше размера одного кластера, MS-DOS ищет следующий свободный кластер, который может оказаться в любом месте диска. Номер найденного свободного кластера записывается в элемент FAT для первого кластера, распределенного файлу. Таким образом, элемент FAT, соответствующий первому кластеру будет содержать ссылку на второй кластер, распределенный файлу. Ссылка представляет собой просто порядковый номер следующего кластера.

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

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




Начало  Назад  Вперед



Книжный магазин