Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 10
На сайте нет зарегистрированных пользователей

Пользователей: 13,372
новичок: vausoz
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование автомойки на GPSS + Отчет + Блок схемы
Двунаправленный динамический список на Delphi + Блок схемы
База данных склада на Delphi + Схема БД

Краткий обзор интерфейса vnode/vfs
В ядре системы UNIX файл представлен абстракцией vnode (или virtual node, виртуальным узлом).
Файловая система представлена понятием vfs (virtual file system). Обе абстракции могут быть реализованы как абстрактный базовый класс, внутри подклассов которого описаны специфические реализации для различных файловых систем, например s5fs, ufs, NFS или FAT (файловая система MS-DOS).
Класс vnode системы SVR4 показан ранее


Также может иметь смысл заглянуть на сайт bistrokuhni.ru, ведь именно там можно узнать много нового на тему http://www.bistrokuhni.ru/zakazat_kuhnu. Тема кухня в Москве может показаться на первый взгляд незначительной и даже не тематичной. Но стоит посетить сайт bistrokuhni.ru, и тема кухня в Москве начинает проявлять себя с неожиданной стороны и вызывает всё больший интерес. Дело в том, что тема кухня в Москве очень подробно представлена на сайте bistrokuhni.ru. Трудно найти более детальное освещение темы кухня в Москве чем это сделано на сайте bistrokuhni.ru. Спасибо сайту bistrokuhni.ru за такое доскональное преподнесение темы кухня в Москве.

Поля данных базового класса vnode содержат информацию, не зависящую от определенного типа файловой системы.


Функции членов класса могут быть поделены на две категории. В первой категории находится набор виртуальных функций, определяющих зависимый от файловой системы интерфейс. В каждой отдельной файловой системе должны иметься собственные реализации для таких функций. Ко второй категории относится набор высокоуровневых утилит, используемых другими подсистемами ядра для осуществления действий с файлами.


Такие функции вызывают для выполнения задач низкого уровня зависимые от файловой системы процедуры.
Базовый класс vnode имеет два поля, используемые для реализации подклассов. Первое поле — v_data, является указателем (типа caddr_t) на закрытую структуру данных, в которой хранятся зависящие от файловой системы данные vnode. Для файлов s5fs или ufs это традиционная структура индексных дескрипторов inode. В системе NSF используется структура mode, в tmpfs применяется tmpnode и т. д. Так как доступ к этим структурам происходит не напрямую, а при помощи v_data, они непрозрачны для базового класса vnode, а их поля видимы только для функций, являющихся внутренними по отношению к специфичным файловым системам.

Поле
v_op



указывает на структуру
vnodeops




состоящую из набора указателей на функции реализации виртуального интерфейса к vnode. Поля v_data и v_op заполняются при инициализации vnode, обычно на стадии выполнения системных вызовов open или create. Когда участок кода, не зависящий от файловой системы, вызывает виртуальную функцию для произвольного vnode, ядро изменяет указатель v_op и вызывает конкретную функцию, относящуюся к определенной реализации файловой системы. Например, операция V0P_ CLOSE позволяет вызвавшему ее процессу закрыть файл, ассоциированный с vnode. Доступ происходит при помощи макроса, такого как приведен ниже:

fdefine V0P_CL0SE(vp. ...) (*((vp)->v_op->vop_close))(vp, ...)




где многоточие обозначает другие входные аргументы процедуры close. Приведенный макрос гарантирует, что после соответствующей инициализации vnode применение операции V0P_CL0SE приведет к вызову процедуры ufs_close() для файла ufs, nfs_close() для файла NFS и т. д.
Базовый класс vfs также обладает двумя полями, vfs_data и vfs_op, позволяющими осуществлять взаимосвязь с данными и функциями, реализующими определенные файловые системы. Компоненты vfs показаны на рис. 8.9.


В языке С базовый класс реализуется как структура, а также набор глобальных функций (и макросов) ядра, определяющих публичные невиртуальные функции. Базовый класс содержит указатель на другую структуру, состоящую из набора указателей на функции, по одному для каждой виртуальной функции. Указатели v_op и v_data (для класса vfs указатели vfs_op и vfs_data) позволяют соединить подклассы, предоставляя таким образом доступ к функциям и данным, зависящим от конкретной файловой системы.
Краткий обзор реализации
Следующие разделы посвящены более подробному анализу интерфейса vnode/ vfs, а также описанию реализации различных файловых операций.
Опубликовал katy July 08 2015 08:54:04 · 0 Комментариев · 2926 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
AboutSystem
CoolHints2k v1.03
начисление процен...
FreeNet
Swat [Исходник на...
Профессиональное ...
PDJ Scrollers
Х. М. Дейтел, П. ...
Dreamsoft Progres...
Приемы программир...
mp3tag
PHP/MySQL для нач...
Экспорт базы данн...
WebReg v1.3
Borland Delphi 6....
Голосование для ...
DS_Group
Иллюстрированный ...
Assembler. Учебни...
Распознавание иде...

Топ загрузок
Приложение Клие... 100793
Delphi 7 Enterp... 98030
Converter AMR<-... 20298
GPSS World Stud... 17060
Borland C++Buil... 14244
Borland Delphi ... 10376
Turbo Pascal fo... 7392
Калькулятор [Ис... 6082
Visual Studio 2... 5232
Microsoft SQL S... 3674
Случайные статьи
Выражения и операции
Внешние разъемы на...
Отсутствует прямой...
Directory
Сейчас в Интернете...
Практические совет...
Ремонт dsg
Язык С и С++: массивы
8.1. Расположение...
Группа блоков заде...
Алгоритмы, модифиц...
2.1. Вездесущий дв...
Как играть в казин...
ROX casino
С чего начать
позволяет участник...
Программа для масс...
Character expressi...
Функция GetColor -...
Pikavippi s-pankin...
Металлические дета...
Не пугайтесь Web-у...
Вы можете настроит...
Азартный отдых в к...
Язык С: оператор s...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?