В файлах каталогов, созданных в Windows95 и более старших версиях этой операционной системы, в каждом дескрипторе хранится как длинное имя файла, так и короткое — вида progra~1.exe, которое находится в том же месте дескриптора, что и в каталогах, созданных в MS-DOS. Таким образом обеспечивается возможность работы с созданными в Windows каталогами в старых операционных системах — эти системы смотрят в файл каталога и считывают оттуда лишь короткие имена файлов, а системы Windows умеют считывать из дескрипторов еще и длинные имена. Естественно, что при копировании или перемещении средствами MS-DOS файлов, созданных в Windows, длинные имена теряются, так как в этом случае операционная система MS-DOS копирует данные о файлах из одного файла каталога в другой, а так как она не умеет читать ту часть дескрипторов этих файлов, в которой записаны их длинные имена, то она их и игнорирует.
Файл корневого каталога диска физически всегда расположен в одном и том же месте на диске — сразу после таблицы FAT, присутствующей на диске в виде двух копий, идущих друг за другом — для повышения надежности.
Так как каталог — это обычный файл, то пустой каталог все равно будет занимать место на диске. К примеру, создайте на пустой дискете пустую папку и посмотрите объем дискеты. На ней будет занято 512 байт (рис. 8.3).
Рис. 8.3.
Это и есть объем файла, являющегося этим каталогом. Или, если у вас установлен пакет программ Norton Utilities для Windows, посмотрите на отчет программы Norton Speed Disk (рис. 8.4), — в нем показывается покластерная структура жесткого диска и указываются, какие файлы расположены в каждом кластере. В отчете вы увидите, что некоторые кластеры содержат файлы с именами каталогов — то есть файлы самих этих каталогов.
Рис. 8.4.
Операционная система, желая считать что-нибудь из какого-либо каталога, читает файл этого каталога, смотрит, в каком кластере записан первый фрагмент этого файла, а затем идет в FAT и смотрит, в каких кластерах записаны остальные его фрагменты (как бы "проходя" по всей цепочке ссылок в FAT на остальные кластеры файла). После этого, когда у операционной системы тем самым появляется информация обо всех кластерах, в которых записан данный файл, и об их последовательности, файл собственно читается с диска.
Но сам файл каталога тоже еще нужно считать. Для этого, вообще говоря, всегда должен быть выполнен весьма сложный алгоритм: счи тать файл корневого каталога диска, располагающийся всегда в одном и том же известном месте — сразу после FAT, найти в нем информацию о первом кластере того каталога, в котором содержится файл, который в конце концов должен быть считан, перейти к записи FAT, соответствующей найденному номеру первого кластера этого каталога, узнать из FAT, в каких кластерах содержится файл каталога, считать его, а потом повторить этот алгоритм сначала, до тех пор, пока не доберешься до каталога, непосредственно содержащего файл… Ясно, что весь этот процесс — "поход" в корневой каталог и затем по дереву каталогов, постоянное обращение то к файлам-каталогам, то к FAT, а лишь затем считывание самого файла — занимает немало времени. Поэтому операционные системы используют специальные методики для упрощения и ускорения работы с файлами. Самая простая и распространенная — это кэширование, то есть помещение часто используемых данных в оперативную память. Так, всегда кэшируется FAT, а также информация о структуре каталогов и располагающихся в них файлах. В операционных системах Windows95/98 задать количество кэшируемого материала можно в окне "Файловая система" вкладки "Быстродействие" пункта "Система" Панели управления (рис. 8.5).
Рис. 8.5.