Для этого число файлов в нем увеличено с 512 до 2048. Кроме того, для того чтобы снизить расход элементов каталога на описание файлов с длинными именами, рекомендуется не давать файлам слишком длинные имена.
Длинное имя файла в VFAT представлено следующим образом.
Первые 11 байт элемента каталога DOS используются для хранения имени файла. Такое имя состоит из двух частей: в первых восьми байтах хранятся символы собственно имени, а в последних трех – символы расширения имени файла. Если имя состоит менее чем из восьми символов, то в элементе каталога оно дополняется символами пробела, для того чтобы полностью заполнить все восемь байтов. При работе с именем файла необходимость в отображении точки, которая используется для отделения имени файла от расширения, отпадает. В 12-ом байте элемента каталога хранятся атрибуты файла:
1) А – архив. Показывает, что файл был открыт программой имеющей возможность изменить его содержимое.
2) D – каталог. Показывает, что данный элемент указывает на подкаталог (папку), а не на файл.
3) V – том (volume). Применяется только к одному элементу каталога в корневом каталоге. В нем собственно и хранится имя дискового тома.
4) S – системный. Показывает, что файл является частью операционной системы или специально помечен подобным образом.
5) H – скрытый. К скрытым файлам относятся также системные файлы.
6) R – только для чтения. Указывает, что данный файл не следует изменять. Этот атрибут используется для примитивной защиты от ошибок пользователя.
На дисках с FAT12 или FAT16 следующие 10 байт не используются. На диске с FAT 32 они содержат различную информацию о файле. Тринадцатый байт зарезервирован для WindowsNT и в подсистеме DOS не используется.
Для длинного имени файла используется несколько элементов каталога. Таким образом, применение длинных имен приводит к уменьшению количества файлов, находящихся в корневом каталоге. Длинное имя может содержать до 256 символов и всего один файл с полным длинным именем займет до 25 элементов таблицы FAT. При этом на диске с файловой системой FAT16 максимальное число файлов в корневом каталоге сократится до 21. Поэтому необходимо избегать длинных имен файлов в корневом каталоге. Длина полной спецификации файла, включающая в себя путь к файлу и его имя, также ограничена. В файловой системе FAT32 успешно решена проблема длинных имен в корневом каталоге, но проблема с ограничением длинны полной файловой спецификации остается. Поэтому рекомендуется ограничивать длинные имена 75-80 символами, для того чтобы оставить достаточно места для пути к файлу.
4. Файловая система HPFS
Файловая система HPFS (высокопроизводительная файловая система) впервые появилась в операционной системе OS/2. HPFS является файловой системой для многозадачного режима работы, поддерживает длинные имена файлов, и обеспечивает высокую производительность при работе с дисками большого объема. Она, как и FAT, имеет древовидную структуру каталогов, но в ней еще предусмотрены автоматическая сортировка каталогов и специальные расширенные атрибуты, упрощающие обеспечение безопасности на файловом уровне и создание множественных имен. Расширенные атрибуты позволяют хранить дополнительную информацию о файле. Например, каждому файлу может быть сопоставлено его индивидуальное графическое изображение (значок).
По сравнению с FATHPFS обладает более высокой производительностью, надежностью, и эффективнее использует дисковое пространство. Еще одна особенность заключается в том, что пространство, освобожденное стертым файлом, обычно используется не сразу и файл можно восстановить.
Для достижения более этого в HPFS применяется:
· размещение каталогов в середине дискового пространства;
· используется метод бинарных сбалансированных деревьев, для ускорения поиска информации о файле;
· информация о местоположении файловых записей рассредоточена по всему диску, при размещении самого файла (по возможности) в смежных секторах и вблизи от данных об их местоположении.
Файлы и каталоги в HPFS базируются на файловом узле. Файловый узел – это структура, содержащая информацию о расположении файла и о его расширенных атрибутах. Каждый файл и каталог имеет свой файловый узел. Каждый файловый узел занимает один сектор и всегда располагается вблизи своего файла (обычно непосредственно перед файлом).
Файловый узел содержит размер файла и первые 15 символов имени файла, специальную служебную информацию, статистику доступа к файлу, расширенные атрибуты файла и список управления доступом.
Сокращенное имя файла используется, когда файл с длинным именем копируется на диск с файловой системой FAT, не допускающей подобных имен. В этом случае используются первые восемь символов оригинального имени и первые три символа расширения. Если имя файла содержит несколько точек, что допустимо в HPFS, то используются три символа после последней из этих точек.
Файловая система HPFS при записи файла на диск стремится избежать фрагментации. Если файл непрерывен то, его размещение описывается двумя 32-разрядными числами. Первое число представляет собой указатель на первый блок файла, а второе – длину экстента, то есть число следующих друг за другом блоков, принадлежащих файлу. Из этого следует, что максимальный объем диска в HPFS составляет 2 Тб. Если файл фрагментирован, то размещение его экстентов описывается дополнительными парами 32-разрядных чисел. Фрагментация происходит, когда на диске нет непрерывного свободного участка, достаточного для размещения файла целиком. В этом случае файл делится на несколько частей и располагается в разных местах диска. Файловая система HPFS старается поместить части фрагментированного файла как можно ближе друг к другу, для того чтобы сократить время позиционирования головок чтения/записи при чтении файла с жесткого диска. Также файловая система старается резервировать минимум 4 Кб места в конце файлов подлежащих изменению.
Пользовательская программа может указать размер файла при его создании. В этом случае система сразу попытается выделить место под файл так, чтобы он занимал как можно меньше экстентов. Если программа не сообщила размера файла, используется значение по умолчанию. Фактически, HPFS размещает место, под файл, начиная выделение с наибольшего непрерывного участка свободного пространства. В результате фрагментированными оказываются только файлы, длина которых увеличивалась многократно или же те, которые создавались при почти заполненном диске. При нормальной работе файл редко занимает больше 3-4 экстентов.
В файловом узле можно поместить информацию о 8 экстентах файла. Если их больше, то в файловый узел этого файла записывается указатель на блок размещения, который может содержать до 40 указателей на экстенты или другие блоки размещения.
Большое значение для увеличения производительности HPFS имеет метод сбалансированных двоичных деревьев, используемый для хранения и поиска информации о местонахождении файлов. В файловой системе FAT каталог имеет линейную неупорядоченную структуру и при поиске файла необходимо последовательно просматривать его с самого начала. В HPFS структура каталога представляет собой сбалансированное дерево с записями, расположенными в алфавитном порядке. Каждая запись содержит атрибуты файла, указатель на соответствующий файловый узел, информацию о времени и дате создания, последнего изменения и обращения к файлу, о размере файла, счетчик обращения к файлу, информацию о длине имени файла и само имя, и другая подобная информация. Таким образом, при поиске файла в каталоге просматриваются только необходимые ветви двоичного дерева. Записи каталога заведомо не относящиеся к искомому файлу не рассматриваются.
При переименовании файлов может возникнуть перебалансировка дерева. Попытка переименования может закончиться неудачей из-за недостатка дискового пространства, даже если файл в размере не увеличится. Для предотвращения этого HPFS имеет маленький пул свободных блоков, используемых при недостатке места. Указатель на этот пул хранится в резервном блоке.
Файловая система HPFS для исправления ошибок, возникающих при записи файлов на диск, использует механизм аварийного замещения. Информация, предназначенная для записи в сектор, оказавшийся дефектным, сохраняется в одном из запасных секторов, заранее зарезервированных на этот случай. Их список хранится в резервном блоке файловой системы. Затем происходит обновление карты аварийного замещения. Она представляет собой пары 32-разрядных чисел. Первое число такой пары указывает на дефектный сектор, а второе на сектор его замещающий. Очистка карты аварийного замещения выполняется программой CHKDISK при проверке тома HPFS. Для каждого замещенного блока (сектора) выделяется новый сектор в наиболее подходящем месте. Затем данные записываются в этот сектор, и обновляется информация о положении файла. После этого программа вносит поврежденный сектор в список дефектных блоков, и возвращает освобожденный сектор в список свободных запасных секторов резервного блока. После этого происходит удаление записей из карты аварийного замещения.
Существует еще одна реализация HPFS для работы на серверах – HPFS386.IFS. Ее отличие в том, что она позволяет посредством более полного использования расширенных атрибутов, организовать ограничение доступа к файлам, с помощью списков управления доступом. Также в этой системе нет ограничения на объем памяти, выделяемой для кэширования файловых записей. В HPFS этот объем не может превышать 2 Мб.