Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

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


Каталоги файловой системы FAT32 (ликбез).

Каталоги файловой системы FAT32 (ликбез).

В начальном секторе любого логического диска (раздела) с системой FAT располагаются загрузочный сектор (BOOT- сектор) с блоком параметров BIOS (BPB). Начальный участок данного блока для всех типов FAT идентичен.

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

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

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

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

В показанной ниже строке каталога (32 байта) адрес начального кластера выделен косым полужирным шрифтом:

Рис. 1

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

Каталог файлов представляет собой массив 32-байтных элементов - описателей файлов. С точки зрения операционной системы все каталоги в FAT32 выглядят как файлы и могут содержать произвольное количество записей.

Корневой каталог (Root Directory) - это главный каталог диска, с которого начинается дерево подкаталогов. В системе FAT32 корневой каталог является файлом произвольного размера. При наличии большого количества элементов в корневом каталоге поиск нужных данных занимает довольно много времени. Производительность файловой системы из-за этого падает. Поэтому лучше ограничивать число элементов в корневом каталоге до какого-то разумного предела.

Структура элемента каталога файлов имеет следующий вид (рис. 2). Элемент начинается с 11-байтного поля, содержащего так называемое «короткое имя» файла, по которому операционная система обычно осуществляет поиск файла в каталоге. «Короткое имя» состоит из двух полей: 8-байтного поля, содержащего собственно имя файла и 3-байтного поля, содержащего расширение. Если введенное пользователем имя файла короче восьми символов, то оно дополняется пробелами (код пробела - 20h). Если введенное расширение короче трех байтов, то оно также дополняется пробелами. Разделительная точка между именем и расширением файла не хранится в структуре данных; она подставляется программами операционной системы после имени файла (задание имени файла, вывод списка файлов на экран и т. д.) В «коротком имени» все текстовые символы преобразуются операционной системой в верхний регистр.

 

Рис. 2.

Пользователи могут присваивать файлам имена длиной до 255 символов и более чем с одной точкой. Имя файла считается длинным, если оно превышает размеры, допускаемые форматом «8.3», или если в нем содержатся строчные буквы и другие символы, недопустимые в пространстве имен формата «8.3».

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

Признаком того, что «свободный» элемент каталога используется для хранения участка «длинного имени» является наличие единиц в разрядах 0-3 байта атрибутов (0Fh) - для файлов и каталогов такое сочетание в байте атрибута невозможно. «Длинное имя» в пустые элементы каталога записывается разрезанным на 3 части (10+12+ 4):

В одном элементе каталога можно сохранить фрагмент длиной до 13 символов Unicode (поскольку в трех участках имеется: 10 +12 + 4 в сумме = 26 байт), а неиспользованный участок последнего фрагмента заполняется кодами FFFFh.

Фрагменты «длинного имени» пронумерованы. В младших разрядах байта номера фрагмента хранят собственно номер, а разряд 6 служит признаком последнего фрагмента «длинного имени», разряд 7 зарезервирован (равен 0).

«Длинное имя» записывается в 32-х байтную запись каталога (рис. 3), расположенную перед 32-х байтной записью «короткого имени», причем фрагменты размещены в обратном порядке, начиная с последнего фрагмента (рис.4).

 

Рис. 3

 

Рис. 4


Лицензия