Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ANSWERS.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
833.02 Кб
Скачать
  1. Структура элемента каталога в файловой системе faTхх. Опорные и дополнительные элементы. Метка тома.

При создании каталога для него «пожизненно» выставляется DIR_FileSize = 0. Размер содержимого каталога определяется простым следованием по цепочкам кластеров до метки End Of Chain. Размер самого каталога лимитируется файловой системой в 65 535 32-байтных записей (т.е. записи каталога в таблице FAT не могут занимать более 2Мб). Это ограничение призвано ускорить операции с файлами и позволить различным служебным программам использовать 16 битное целое (WORD) для подсчета количества записей в директории. (Как следствие, возникает теоретическое ограничение на количество файлов в каталоге – 65 535 при условии, что все имена файлов следуют стандарту 8.3). Каталогу отводится один кластер области данных (за исключением случая, если это корневой каталог FAT12/FAT16) и полям DIR_FstClusHI / DIR_FstClusLO присваивается значение номера этого кластера. В таблицу FAT для записи, соответствующей этому кластеру, помещается метка EOC, а сам кластер забивается нулями. Далее создаются два специальных файла, без которых директория FAT считается поврежденной (первые две 32-байтных записи в области данных кластера) – файлы нулевого размера “dot” (идентификатор каталога) и “dotdot” (указатель на родительский каталог) с именами “.” (точка) и “..” (две точки) соотв. Штампы даты-времени этих файлов приравниваются значениям для самого каталога на момент создания и не обновляются при изменениях каталога. Поля DIR_FstClusHI / DIR_FstClusLO файла «.» содержат значение номера содержащего его кластера, а файла «..» – номера первого кластера каталога, содержащего данный. Таким образом, файл «.» отсылает к самому каталогу, а файл «..» – к начальному кластеру родительского каталога; если родительский каталог – корневой, начальным кластером считается нулевой.

FAT16 и FAT32 имеют очень компактные каталоги, размер каждой записи которых предельно мал. Более того, из-за сложившейся исторически системы хранения длинных имен файлов (более 11 символов), в каталогах систем FAT используется не очень эффективная и на первый взгляд неудачная, но зато очень экономная структура хранения этих самих длинных имен файлов. Работа с каталогами FAT производится достаточно быстро, так как в подавляющем числе случаев каталог (файл данных каталога) не фрагментирован и находится на диске в одном месте.

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

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

Информация папок используется операционными системами, поддерживающими файловую систему FAT. Кроме того, Windows 2000 может хранить в записи папки дополнительную временную информацию (time stamps). Эти дополнительные временные атрибуты указывают, когда файл был создан и когда к нему в последний раз предоставлялся доступ. Главным образом, дополнительные атрибуты используются приложениями POSIX.

В файловых системах FAT32 и VFAT (виртуальная FAT, расширение FAT16) включена поддержка длинных имен файлов (long file name, LFN). Для хранения длинного имени используются элементы каталога, смежные с основным элементом. Имя файла записывается не ASCII-символами, а в Unicode. В одном элементе каталога можно сохранить фрагмент длиной до 13 символов Unicode. Неиспользованный участок последнего фрагмента заполняется кодами 0xFFFF. Структура элемента каталога для длинного имени файла представлена в таблице 2.

Каталоги. Для каждого файла на диске имеется один элемент в определенном каталоге. Один элемент основного каталога выделяется для метки диска (метки тома). Для каждого каталога имеется элемент в его родительском каталоге. Кроме того, каждый каталог, за исключением основного, содержит по одному элементу для специальных имен "." и "..". Эти элементы указывают начало цепочки в FAT соответственно для каталога и для его родительского каталога. Так в общем случае каждый каталог описан в нескольких местах: в родительском каталоге, в самом себе и в каждом из его подчиненных каталогов. каждый элемент каталога имеет длину 32 байта и состоит из 8 полей.

Поле 1: Имя файла Длина поля - 8 байтов. Если имя файла содержит меньше 8 символов, поле дополняется справа пустыми позициями. Имя файла записывается в каталоге прописными буквами. Первый байт поля используется для обозначения трех специальных случаев:

1. Значение OOH и первом байте показывает, что этот элемент каталога никогда не был использован.

2. При стирании файла MS DOS записывает E5H в первом байте соответствующего элемента каталога.

3. Значение 2EH в первом байте показывает, что этот элемент служит для описания самого каталога.

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

Поле 3: Атрибуты файла Каждый бит задает определенный атрибут файла. Бит 0: только для чтения. При значении 1 из файла можно читать, но в него нельзя писать и его нельзя стереть.

Бит 1: Скрытый. При значении 1 файл невидим для обычных операций(DIR, DEL).

Бит 2: Системный. Имеет эффект бита 1. Не имеет особого смысла в DOS.

Бит 3: Метка тома. При зна чении 1 обозначает элемент каталога какметку тома. Метка записывается в поля 1(имя) и 2(суффикс) и содержит не более 11 символов.

Бит 4: Каталог. При значении 1 идентифицирует файл как каталог.

Бит 5: Архивный. Обнуляется всегда, когда файл аривируется командой MS DOS BACKUP.

Поле 4: Резервировано. Имеет длину 10 байтов. Резервировано для будущих расширении DOS.

Поле 5: Время. Имеет длину 2 байта. Содержит время создания или последнего изменения файла.

Поле 6: Дата. Имеет длину 2 байта. Содержит дату создания или последнего изменения файла.

Поле 7: Номер первого кластера. Имеет длину 2 байта. Служит указателем к первому из кластеров файла в области для данных и одновременно указывает начало цепочки элементов FAT для этого файла.

Поле 8: Размер файла. Имеет длину 4 байта - здесь можно записать достаточно большое число, так что размер дисковой памяти остается единственным ограничением для размера файла.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]