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


Фрагментация файлов


Для того чтобы понять причины появления фрагментированных файлов, нам необходимо вспомнить основы логической структуры файловой системы MS-DOS.

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

Операционная система выделяет для файлов, которые записываются на диск, некоторое количество кластеров, в зависимости от размера файла. Если файл маленький (например, в нем всего один или два байта), выделяется один кластер. Это, в частности, означает, что при размере кластера, равном 8 секторам, для хранения файла размером в один байт используется 4 Кбайт дисковой памяти.

Где же располагаются кластеры, выделяемые файлу?

Номер первого кластера, выделенного файлу, хранится в дескрипторе файла, то есть в каталоге. Для выделения остальных кластеров можно использовать две стратегии.

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

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

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




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



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