Чтение онлайн

на главную - закладки

Жанры

Шрифт:

Затем происходит поиск элемента коммутатора файловых систем

vfssw[]
, соответствующего типу монтируемой файловой системы. Если такой элемент найден, вызывается операция инициализации, адресованная полем
vsw_init
. При этом выполняется размещение специфических для данного типа файловой системы данных, после чего ядро размещает структуру
vfs
и помещает ее в связанный список, подключенных файловых систем, как это показано на рис. 4.11. Поле
vfs_vnodecovered
указывает на vnode точки монтирования. Это поле устанавливается нулевым для корневой (root) файловой
системы, элемент
vfs
которой всегда расположен первым в списке подключенных файловых систем. Поле
vfs_op
адресует вектор операций, определенный для данного типа файловой системы. Наконец, указатель на данный элемент
vfs
сохраняется в поле
v_vfsmountedhere
виртуального индексного дескриптора каталога — точки монтирования.

После этого вызывается операция

vfs_mount
соответствующая данному типу файловой системы. Конкретные действия определяются реализацией файловой системы и могут существенно различаться. Например, операция монтирования локальной файловой системы ufs предусматривает считывание в память метаданных системы, таких как суперблок, в то время как монтирование удаленной NFS файловой системы включает передачу сетевого запроса файловому серверу. Однако монтирование предусматривает выполнение и ряда общих операций, включающих:

 проверку соответствующих прав на выполнение монтирования;

 размещение и инициализацию специфических для файловой системы данного типа данных, сохранение адреса этих данных в поле

vfs_data
элемента
vfs
;

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

vfs_root
.

После подключения файловая система может быть адресована по имени точки монтирования. В частности, при отключении файловой системы с помощью системного вызова umount(2), в качестве аргумента ему передается имя точки монтирования. Адресация с помощью специального файла устройства, как это происходило раньше, нарушает унифицированный вид виртуальной файловой системы, так как некоторые типы вообще не имеют такого устройства (например, NFS).

Определение корневого vnode для подключенной файловой системы производится с помощью операции

vfs_root
. Заметим, что в некоторых реализациях независимой файловой системы (например, в SCO UNIX, хотя там используется другая терминология) одно из полей записи таблицы монтирования явно указывало на корневой vnode. Подход, предложенный фирмой Sun Microsystems, позволяет не хранить корневой vnode постоянно, размещая его только при необходимости работы с файловой системой. Это минимизирует ресурсы, занимаемые подключенными файловыми системами, которые продолжительное время не используются.

На рис. 4.10 приведен вид логического файлового дерева до и после монтирования файловой системы А к каталогу /usr/local. На рис. 4.11 приведен вид виртуальной файловой системы после этой операции монтирования.

Рис. 4.10. Монтирование файловой системы А к корневой файловой системе

Рис. 4.11.

Схема монтирования файловых систем различных типов

Исследовать описанные структуры данных можно с помощью утилиты crash(1M). Для этого применяются команды vfs и mode, отображающие содержимое соответствующих структур данных. Приведем пример такого исследования файлового дерева операционной системы Solaris 2.5:

# crash

dumpfile = /dev/mem, namelist = /dev/ksyms, outfile = stdout

> !mount

/ on /dev/dsk/c0t3d0s0 read/write on Tue Feb 25 15:29:11 1997

/usr/local on /dev/dsk/c0t0d0s0 read/write on Tue Feb 25 15:29:13 1997

/tmp on swap read/write on Tue Feb 25 15:29:13 1997

/dev/fd on fd read/write/setuid on Tue Feb 25 15:29:11 1997

/proc on /proc read/write/setuid on Tue Feb 25 15:29:11 1997

/cdrom/unnamed_cdrom on /dev/dsk/c0t6d0 ronly on Mon Mar 25 15:29:43 1997

> vfs

FSTYP BSZ MAJ/MIN FSID VNCOVERED PDATA BCOUNT FLAGS

ufs 8192 32,24 800018 0 f5b79b78 0 notr

ufs 8192 32,0 800000 f5c29ad0 f5c28c88 0 notr

tmpfs 4096 0,0 0 f5958d18 f5d16ee0 0 notr

fd 1024 158,0 2780000 f5c4f5d8 0 0

proc 1024 156,0 2700000 f5c4f718 0 283920

hsfs 2048 91,1 b9d02de5 f5f20698 f5b60d98 0 rd

Мы распечатали список подключенных файловых систем (команда mount(1M)) и элементы vfs таблицы монтирования. Рассмотрим подробнее vnode точки монтирования файловой системы раздела /dev/dsk/c0t0d0s0.

> vnode f5c29ad0

VCNT VFSMNTED VFSP STREAMP VTYPE RDEV VDATA VFILOCKS VFLAG

2 f5c25c60 f0286570 0 d - f5c29ac8 0 -

Удостоверимся, что поле v_

vfsmountedhere
(
VFSMNTED
) адресует элемент
vfs
подключенной файловой системы, а поле
v_fsp
(
VFSP
) указывает на элемент корневой файловой системы.

> vfs f5c25c60

FSTYP BSZ MAJ/MIN FSID VNCOVERED PDATA BCOUNT FLAGS

ufs 8192 32,0 800000 f5c29ad0 f5c28c88 0 notr

> vfs f0286570

FSTYP BSZ MAJ/MIN FSID VNCOVERED PDATA BCOUNT FLAGS

ufs 8192 32,24 800018 0 f5b79b78 0 notr

Наконец, посмотрим на содержимое inode файловой системы ufs, адресованного полем

v_data
(
VDATA
) виртуального индексного дескриптора:

> ui f5c29ac8

Поделиться:
Популярные книги

Стеллар. Трибут

Прокофьев Роман Юрьевич
2. Стеллар
Фантастика:
боевая фантастика
рпг
8.75
рейтинг книги
Стеллар. Трибут

Его огонь горит для меня. Том 2

Муратова Ульяна
2. Мир Карастели
Фантастика:
юмористическая фантастика
5.40
рейтинг книги
Его огонь горит для меня. Том 2

На границе империй. Том 9. Часть 4

INDIGO
17. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 4

Наследник

Кулаков Алексей Иванович
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
8.69
рейтинг книги
Наследник

Совершенно несекретно

Иванов Дмитрий
15. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Совершенно несекретно

Ваше Сиятельство 2

Моури Эрли
2. Ваше Сиятельство
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Ваше Сиятельство 2

Прометей: каменный век II

Рави Ивар
2. Прометей
Фантастика:
альтернативная история
7.40
рейтинг книги
Прометей: каменный век II

Единственная для темного эльфа 3

Мазарин Ан
3. Мир Верея. Драконья невеста
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Единственная для темного эльфа 3

Жандарм

Семин Никита
1. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
4.11
рейтинг книги
Жандарм

Долгий путь домой

Русич Антон
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
6.20
рейтинг книги
Долгий путь домой

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле

Наследие Маозари 6

Панежин Евгений
6. Наследие Маозари
Фантастика:
попаданцы
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.00
рейтинг книги
Наследие Маозари 6

Я еще не барон

Дрейк Сириус
1. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я еще не барон

Лолита

Набоков Владимир Владимирович
Проза:
классическая проза
современная проза
8.05
рейтинг книги
Лолита