Современные системы UNIX включают в себя форму интерфейса vnode/vfs [7], позволяющего сосуществование в одном ядре нескольких файловых систем. С каждым открытым файлом ассоциируется объект ядра под названием vnode. Интерфейс определяет для каждого объекта vnode набор абстрактных операций. В каждой файловой системе поддерживается собственная реализация этих функций.
Также вам может показаться, что такая тема как http://samsauna.ru/contact/ никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт samsauna.ru. Тема баня в Самаре недорого там представлена весьма широко. На том сайте можно узнать много интересного на тему баня в Самаре недорого. Что означает вообще тема баня в Самаре недорого, где найти баня в Самаре недорого - про это написано на сайте samsauna.ru. Это очень важная для многих людей тема - баня в Самаре недорого. Спасибо сайту samsauna.ru за информацию на тему баня в Самаре недорого.
Поле v_op объекта vnode указывает на вектор указателей таких функций. Например, объект vnode файла ufs (файловой системы UNIX) хранит ссылку на вектор ufsops, содержащий указатели к различным функциям ufs, таким как ufslookupQ, ufsclose() и ufslinkQ. Более подробно об интерфейсе vnode/vfs читайте в разделе 8.6.
Таким системам необходим некий специализированный метод управления файлами устройств. Файл устройства находится в корневой файловой системе, которая (с целью упрощения обсуждения) может являться системой ufs. Таким образом, объект vnode для такого файла является объектом ufs и указывает на вектор ufsops. Все операции над файлом могут быть обработаны при помощи функций ufs.
Вместе с тем это не совсем корректный подход. Файл устройства не является обычным файлом системы ufs. Все операции над таким файлом должны привести к соответствующим действиям устройства, производимым обычно через переключатель устройства. В любом случае требуется найти способ отображения всех обращений к файлу на соответствующее ему устройство.
В SVR4 для этой цели используется специализированная файловая система под названием specfs. В этой системе все операции vnode реализованы в виде обращения к переключателю устройства и вызова необходимой функции. Объект vnode системы specfs поддерживает закрытую структуру данных, называемую snode (в действительности vnode является частью snode). Подсистема ввода-вывода должна гарантировать, что при открытии файла устройства запрашивается ссылка на объект specfs vnode, и все дальнейшие операции с этим файлом направляются в него.
Для того чтобы проследить работу системы, возьмем в качестве примера открытие пользователем файла /dev/Lp. Каталог /dev находится в корневой файловой системе, имеющей тип ufs. Системный вызов open преобразует полное имя посредством нескольких вызовов функции ufs_lookup(), сначала с целью обнаружения vnode для dev и затем — для 1р. После этого функция ufs_ lookup() получает объект vnode для 1р и обнаруживает, что тип рассматриваемого файла — IFCHR. Затем функция выделяет из индексного дескриптора старший и младший номера устройства и передает их процедуре specvp().
В файловой системе specfs все объекты snode поддерживаются в таблице хэширования, формируемой на основе номеров устройств. Процедура specvp() производит обращение к таблице хэширования и в случае отсутствия snode создает новые объекты snode и vnode. Объект snode содержит поле s_realvp, в котором функция specvp() сохраняет указатель на vnode файла /dev/lp. Поле v_op указывает на вектор операций specfs (таких как spec_read() и spec_write()), которые, в свою очередь, вызывают операции, являющиеся входными точками драйвера. Результирующая конфигурация представлена ранее.
Перед завершением выполнения функция open запускает операцию V0P_ OPEN объекта vnode, которая вызывает spec_open() в случае файла устройства. Функция spec_open() инициирует выполнение процедуры драйвера d_open(), производящей необходимые действия по открытию устройства. Термин snode относится к теневому объекту (shadow node). Объект системы specfs скрывает «настоящий» объект vnode и перехватывает все операции по отношению к нему.
Опубликовал katy
June 23 2015 06:53:19 ·
0 Комментариев ·
3180 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.