Операционная система UNIX
Шрифт:
проверку соответствующих прав на выполнение монтирования;
размещение и инициализацию специфических для файловой системы данного типа данных, сохранение адреса этих данных в поле
размещение vnode для корневого каталога подключаемой файловой системы, доступ к которому осуществляется с помощью операции
После подключения файловая система может быть адресована по имени точки монтирования. В частности, при отключении файловой системы с помощью системного вызова umount(2), в качестве аргумента ему передается имя точки монтирования. Адресация с помощью специального файла устройства, как это происходило
Определение корневого 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) | Создать жесткую связь |