Описание файловой системы spefs, данное выше, является не совсем полным и нас удовлетворяющим. Оно предполагает, что между файлами устройств и самими устройствами установлена связь «один к одному».
Также вам может показаться, что такая тема как http://mvtrade.ru/katalog/paneli-pvh/homeshine/ никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт mvtrade.ru. Тема панели vivipan там представлена весьма широко. На том сайте можно узнать много интересного на тему панели vivipan. Что означает вообще тема панели vivipan, где найти панели vivipan - про это написано на сайте mvtrade.ru. Это очень важная для многих людей тема - панели vivipan. Спасибо сайту mvtrade.ru за информацию на тему панели vivipan.
На практике это не совсем верно, так как одно устройство может быть представлено сразу несколькими драйверами (поля di_rdev файла устройств имеют одинаковое значение). Такие файлы могут принадлежать как одной, так и нескольким файловым системам.
Этот подход является причиной возникновения нескольких сложностей. Например, операция устройства close должна отработать только после закрытия последнего дескриптора файла устройства. Представьте, что одно и то же устройство открыто двумя процессами, использующими различные файлы. Ядро должно уметь отслеживать подобные ситуации и вызывать операцию close только после закрытия обоих файлов.
Еще одна проблема касается адресации страниц.
В системе SVR4 имя страницы в памяти определяется объектом vnode, являющимся владельцем этой страницы, и смещением страницы внутри файла. Для страниц, ассоциированных с устройством (таких как отображаемые в память буферы фреймов или дисковые блоки, предполагающие «неструктурированный» (raw) доступ), такое имя является неоднозначным в том случае, если несколько файлов ссылаются на одно и то же устройство. Два процесса, обращающиеся к устройству через различные файлы, могут создать две копии одной и той же страницы в памяти, что приведет к проблемам корректности.
При присвоении нескольких имен файлов для одного устройства можно разбить все операции над устройствами на две группы. Большинство операций не зависит от имени файла, используемого для обращения к устройству. Такие операции могут быть доступны через общий объект. В то же время существует некоторое количество операций, зависящих от имени файла устройства. Например, каждый такой файл может иметь различных владельцев и неодинаковые права доступа. Для таких операций важно отслеживать данные «настоящего» объекта vnode файла устройства и производить их перенаправление на такой объект.
В файловой системе specfs есть понятие общего объекта snode (common snode) для обоих типов операций.
Ранее показана схема структур данных этого объекта. Каждое устройство имеет единственный snode, создаваемый при первом обращении к устройству. В системе также поддерживается по одному объекту snode на каждый файл устройства. Объекты всех файлов, представляющих одно и то же устройство, разделяют общий объект snode и ссылаются на него через поле s_commonvp.
При первом открытии файла определенного устройства ядро создает объект snode и общий объект snode. Если через некоторое время файл откроет другой пользователь системы, он будет разделять эти объекты. Если пользователь откроет другой файл, представляющий то же устройство, ядро создаст новый объект snode, который будет иметь ссылку на общий объект snode в поле s_commonvp. Общий объект snode не ассоциируется с файлом устройства напрямую, следовательно, значение его поля s_realvp равно NULL. Поле s_commonvp такого объекта содержит ссылку на самого себя.
Опубликовал katy
June 23 2015 06:55:08 ·
0 Комментариев ·
5124 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.