[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Каталоги JFS

Каталоги - это составная часть иерархической файловой системы. Они связывают имена файлов и подкаталогов с i-узлами. Глубина вложения каталогов не ограничивается. Дисковое пространство выделяется под каталоги блоками по 4096 байт, но операционная система выделяет для каталогов записи по 512 байт.

Процессы могут считывать содержимое каталогов так же, как содержимое обычных файлов. Однако запись в каталоги зарезервирована за ядром. По этой причине для создания и обслуживания каталогов разработаны специальные функции.

Дополнительная информация о каталогах приведена в следующих разделах:

Структура каталогов JFS

Каталог состоит из последовательности записей. Запись каталога содержит три поля фиксированной длины (индекс, связанный с индексным узлом (i-узлом) файла, длину имени файла и количество байт в записи) и одно поле переменой длины для имени файла. Поле имени файла оканчивается символом NULL и дополняется незначащими символами до 4 байт. Максимальная длина имени файла - 255 байт.

Записи каталога имеют переменную длину, обеспечивая тем самым максимальную гибкость в использовании имен файлов. Однако объем пространства всех каталогов фиксирован.

Запись каталога не может занимать более 512 байт. Если каталогу требуется более 512 байт, к первоначальной записи добавляется еще одна запись длиной 512 байт. Если в выделенном блоке данных все 512-байтовые записи заполнены, выделяется дополнительный блок данных (4096 байт).

При удалении файла пространство, занимаемое им в структуре каталога, добавляется к предшествующей записи каталога. Информация о каталоге хранится до тех пор, пока на освободившееся место не будет помещена новая запись.

Каждый каталог содержит записи . (точка) и .. (две точки). Запись каталога . (точка) указывает на i-узел самого каталога; запись каталога .. (две точки) - на i-узел родительского каталога. При инициализации файловой системы с помощью программы mkfs обе записи . (точка)и .. (две точки) в новом корневом каталоге указывают на корневой i-узел файловой системы.

Можно устанавливать следующие режимы доступа к каталогам:

read Процессу разрешено чтение записей каталога
write Процессу разрешено создавать новые записи каталога или удалять старые с помощью функций creat, mknod, link и unlink
execute Процессу разрешено использовать данный каталог в качестве текущего рабочего каталога или выполнять поиск в нижестоящем дереве файлов

Работа с каталогами - Информация для программистов

Для создания каталогов предназначена процедура mkdir, для удаления каталогов - процедура rmdir.

Для работы с каталогами предназначены процедуры opendir, readdir, telldir, seekdir, rewinddir и closedir. Функция opendir возвращает указатель на структуру, которая используется функцией readdir для получения следующей записи каталога, функцией rewinddir - для установки указателя в файле на начало файла (при чтении), а функцией closedir - для закрытия каталога. Функция seekdir возвращается в позицию, полученную ранее с помощью функции telldir. В предыдущих версиях программы могли рассматривать каталоги как обычные файлы и работать с ними с помощью функций open, read, lseek и close. Теперь это не рекомендуется.

Изменение текущего каталога процесса

При загрузке системы текущим каталогом первого процесса становится корневой каталог корневой файловой системы. Новые процессы, создаваемые с помощью функции fork, наследуют текущий каталог родительского процесса. Для изменения текущего каталога процесса предназначена функция chdir.

Функция chdir выполняет синтаксический анализ имени каталога, проверяя, действительно ли целевой объект является каталогом и есть ли у владельца процесса права доступа к этому каталогу. После выполнения функции chdir процесс будет выполнять поиск всех полных имен, не начинающихся с косой черты (/), в новом текущем каталоге.

Изменение корневого каталога процесса

С помощью функции chroot процессы могут определять другой корневой каталог. Дочерние процессы вызывающего процесса рассматривают каталог, указанный функцией chroot, как логический корневой каталог файловой системы.

При анализе всех полных имен, начинающихся с / (косой черты), применяется глобальный корневой каталог файловой системы. Это означает, что поиск всех таких имен начинается с этого корневого каталога.

Функции управления каталогами

Файлы каталогов - это уникальные объекты, поэтому для управления каталогами разработаны специальные функции. Они перечислены ниже:

chdir Позволяет перейти в другой каталог
chroot Изменяет текущий корневой каталог
opendir,readdir, telldir, seekdir, rewinddir и closedir
  Выполняют различные действия над каталогами
getcwd и getwd Определяет путь к текущему каталогу
mkdir Создает каталог
rename Переименовывает каталог
rmdir Удаляет каталог

Связанная информация

Глава 5, Файловые системы и каталоги

Работа с i-узлами JFS

Создание связей

Создание связей - Информация для программистов


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]