Операционная система UNIX
Шрифт:
проверку соответствующих прав на выполнение монтирования;
размещение и инициализацию специфических для файловой системы данного типа данных, сохранение адреса этих данных в поле
размещение vnode для корневого каталога подключаемой файловой системы, доступ к которому осуществляется с помощью операции
После подключения файловая система может быть адресована по имени точки монтирования. В частности, при отключении файловой системы с помощью системного вызова umount(2), в качестве аргумента ему передается имя точки монтирования. Адресация с помощью специального файла устройства, как это происходило раньше, нарушает унифицированный вид виртуальной файловой системы, так как некоторые типы вообще не имеют такого устройства (например, NFS).
Определение корневого vnode для подключенной файловой системы производится с помощью операции
На рис. 4.10 приведен вид логического файлового дерева до и после монтирования файловой системы А к каталогу /usr/local. На рис. 4.11 приведен вид виртуальной файловой системы после этой операции монтирования.
Рис. 4.10. Монтирование файловой системы А к корневой файловой системе
Рис. 4.11. Схема монтирования файловых систем различных типов
Исследовать описанные структуры данных можно с помощью утилиты crash(1M). Для этого применяются команды vfs и mode, отображающие содержимое соответствующих структур данных. Приведем пример такого исследования файлового дерева операционной системы Solaris 2.5:
Мы распечатали список подключенных файловых систем (команда mount(1M)) и элементы vfs таблицы монтирования. Рассмотрим подробнее vnode точки монтирования файловой системы раздела /dev/dsk/c0t0d0s0.
Удостоверимся, что поле v_
Наконец, посмотрим на содержимое inode файловой системы ufs, адресованного полем
Полученная информация показывает, что запись таблицы inode ufs адресует дисковый индексный дескриптор с номером 7552 (
Трансляция имен
Прикладные процессы, запрашивая услуги файловой системы, обычно имеют дело с именем файла или файловым дескриптором, полученным в результате определенных системных вызовов. Однако ядро системы для обеспечения работы с файлами использует не имена, а индексные дескрипторы. Таким образом, необходима трансляция имени файла, передаваемого, например, в качестве аргумента системному вызову open(2), в номер соответствующего vnode.
В табл. 4.6 приведены системные вызовы, для выполнения которых требуется трансляция имени файла.
Таблица 4.6. Системные вызовы, требующие трансляции имени
| exec(2) | Запустить программу на выполнение |
| chown(2) | Изменить владельца-пользователя |
| chgrp(2) | Изменить владельца-группу |
| chmod (2) | Изменить права доступа |
| statfs(2) | Получить метаданные файла |
| rmdir(2) | Удалить каталог |
| mkdir(2) | Создать каталог |
| mknod(2) | Создать специальный файл устройства |
| open(2) | Открыть файл |
| link(2) | Создать жесткую связь |