"Сложные" файловые системы
Структуры "сложных" файловых систем отличаются
большим разнообразием, однако можно выделить несколько общих принципов.
Обычно файловая система начинается с заголовка, или, как это называется
в системах семейства Unix, суперблока (superblock).
Суперблок хранит информацию о размерах дискового тома, отведенного под
ФС, указатели на начало системных структур данных и другую информацию,
зависящую от типа ФС. Например, для статических структур может храниться
их размер. Часто суперблок содержит также магическое число — идентификатор
типа файловой системы. Аналог суперблока существует даже в FAT — это так
называемая загрузочная запись (boot record).
Практически все современные ФС разделяют список свободных блоков и структуры,
отслеживающие размещение файлов. Чаще всего вместо списка свободных блоков
используется битовая карта, в которой каждому блоку соответствует один
бит: занят/свободен. В свою очередь, список блоков для каждого файла обычно
связан с описателем файла. На первый взгляд, эти описатели кажется естественным
хранить в каталоге, но их, как правило, выносят в отдельные области, часто
собранные в специальные области диска — таблицу инодов, метафайл и т.
д. Такое решение уменьшает объем каталога и, соответственно, ускоряет
поиск файла по имени. К тому же многие ФС сортируют записи в каталоге
по имени файла, также с целью ускорения поиска. Понятно, что сортировка
записей меньшего размера происходит быстрее.
В файловой системе HPFS, используемой в OS/2 и Windows NT, каждая запись
в каталоге содержит имя файла и указатель vtajhode (файловую запись).
Каталоги в этой ФС организованы в виде В-деревьев и отсортированы по именам
файлов.
Файловая запись занимает один блок на диске и содержит список так называемых
extent ("расширений") — (у этого
термина нет приемлемого русского аналога. В переводах документации по
OS/360 (ОС ЕС) так и писали: экстент.). Каждый экстент описывает непрерывную
последовательность дисковых блоков, выделенных файлу. Он задает начальный
блок такой последовательности и ее длину. Вместо списка свободных блоков
используется битовая карта диска, в которой каждому блоку соответствует
один бит: занят/свободен.
Нужно отметить, что идея экстентов далеко не нова: аншюгичная структура
используется в некоторых версиях Unix с начала 80-х годов, а истоки этой
идеи теряются в глубине 60-х.
Файловая запись обычно размещается перед началом первого экстента файла,
хотя это и не обязательно. Она занимает один блок (512 байт) и может содержать
до десяти описателей экстентов (рис. 11.11). Кроме того, она содержит
информацию о времени создания файла, его имени и расширенных атрибутах
(см. разд.
Содержание раздела