Файловая cистема WIN95. Длинные имена файлов

Одна из основных особенностей операционный системы Windows 95 - это ее новая, полностью переписанная файловая система, которая модульна по своей природе и которая написана с использованием 32-разрядного кода. Самое большое достоинство новой файловоя системы заключается в том, что она совместима с DOS FAT (File Allocation table - таблица размещения файлов) и одновременно работает в многозадачной среде. Работу этой файловой системы Windows 95 обеспечивают два драйвера системы, используемые для доступа к обычным дискам и к CD-ROM. Для доступа к обычным дискам и винчестерам используется 32-разрядная файловая система защищенного режима VFAT (Virtual FAT). Эта система обеспечивает более высокую скорость работы благодаря 32-разрядному коду и встроенному 32-разрядному кэшу, называемого VCACHE (Virtual Cache). А для доступа к CD-ROM используется также 32-разрядная система CDFS (Compact Disk File System). Вместе с новой файловой системой в Windows 95 появился ряд других преимуществ, самое большое и наглядное из которых - длинные имена файлов, так что вы теперь не ограничены доисторическим DOS'овским 8.3 форматом. В Windows 95 допускается использование имен файлов до 255 символов, что, на мой взгляд, более чем достаточно для обеспечения содержательности имен. Все это конечно хорошо, но при использовании длинных имен файлов возникают свои проблемы, о которых мы расскажем чуть попозже, а пока несколько слов о том, как же реализованы длинные имена файлов в 95.

Сердцем FAT являются 32-байтные записи каталога, следовательно, для сохранения совместимости VFAT также должен использовать 32-байтные записи. Решено было использовать различные типы записей каталога, комбинируя FAT и VFAT. В отличие от FAT, VFAT использует три разных макета для записей каталога: первичную и вторичную VFAT, а также VFAT для информации о классе. Такая сложная логическая структура необходима, так как в VFAT кроме самого длинного имени хранится и DOS-псевдоним этого файла. Первичная структура VFAT как раз и содержит этот псевдоним, а длинные имена хранятся во вторичных записях, которых максимально может быть двадцать, по двадцать шесть символов в каждой. То есть двадцать вторичных записей могут хранить 26*20=520 символов, а так как имя файла хранится не в ASCII формате, а в формате кодирования Unicode, в котором каждый символ кодируется двумя байтами, то максимальная длина имени будет 255 символов.

Unicode - это 16-разрядная схема кодировки символов, в отличии от однобайтного стандарта Windows ANSI (256 символов - 2 в 8-й степени), позволяет представить 65536 (то есть 2 в 16-й степени) символов. Возможного количества уникальных кодов хватит с лихвой для кодировки букв всех современных, а также нескольких старых и мертвых языков. Эта система позволяет решить проблему множественности кодирования букв и переносимости файлов из одной локализованной (то есть переведенной на какой-либо язык) ОС в другую, поддерживая любые национальные алфавиты.

Кроме всего перечисленного, в VFAT еще хранится дата последнего доступа, а также время и дата создания файла.

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

" : ? * \ / < > | .

Теперь об обещанных недостатках, возникающих при использовании длинных имен файлов. Во первых, для чтения каталога, содержащего файлы с длинными именами, требуется больше времени. Почему? Да потому, что при чтении длинного имени файла системе придется проверять, является ли имя длинным. Если да, то производится определение наличия вторичных записей, затем происходит сборка вторичных записей в длинное имя, причем при присоединении каждой записи происходит проверка контрольных сумм имени, также хранящихся в VFAT. Таким образом, для получения одного имени с максимальной длиной, состоящего из двадцати двух записей (первичная + двадцать вторичных + запись о классе объекта), потребуется явно больше времени по сравнению с доступом к одной простой первичной записи каталога. Кроме того, если у вас в каталоге множество файлов с длинными именами, то количество записей директории быстро возрастет. Например, если у вас в каталоге находятся файлы имеющие в среднем десять записей (первичная + восемь вторичных + запись о классе объекта), и в каталоге содержится, к примеру, тридцать файлов, то для файла потребуется 10*30=300 записей. А так как каждый сектор диска может хранить шестнадцать записей каталога (512 байт на секторе, 32 байта на запись), то каталог займет приблизительно девятнадцать секторов, в то время как при обычной 8.3 FAT записи тот же самый каталог занял бы чуть меньше двух секторов. Это конечно не означает, что длинными именами пользоваться не следует. Все зависит от того, как меняется производительность программного обеспечения и скорость работы самой Windows 95 при использовании длинных имен. Однако даже если производительность системы не снижается, следует придерживаться следующих правил:

  1. По возможности не злоупотребляйте длинными именами.
  2. Называйте файлы понятно, но по возможности кратко, используя не больше двадцати шести символов. В таком случае используется только три записи каталога, что не так уж много, и имя несет достаточно много информации.
  3. Если вы по привычке используете DOS формат 8.3 (8 символов-точка-3 символа), то помните что любое отклонение от первичных правил FAT приводит к использованию вторичных записей. Поэтому:
  4. Не используйте в таких случаях строчные буквы;
  5. Не используйте запрещенные в VFAT символы. К этим символам относятся:

Кирилл ВОЛОШИН


Назад в Software Раздел [Prv] Предыдущая [Nxt]Следущая

[Home] Home Page
[Mail] Send E-Mail to Kirill
[Search] Search Kirill's Pages

Last modified on 14.03.98.