Навигация
Главная
Поиск
Форум
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
Реклама
Сейчас на сайте
Гостей: 12
На сайте нет зарегистрированных пользователей

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

Моделирование литейного цеха на GPSS + Пояснительная записка
Выбор наилучших альтернатив с использованием методов оптимизации на Delp...
Сравнение двух бинарных деревьев на Turbo Pascal + отчет

Краткий обзор интерфейса 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 Комментариев · 2459 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
C++ для начинающих
Delphi7 Для профе...
Мод "проверочный ...
Mass Photo Upload
Проигрыватель Mp3
Последние загруж...
Создание меню на ...
API (Применение A...
БД студентов
Трассировка прово...
Карта сайта
Калькулятор [Исхо...
Иллюстрированный ...
С/C++ Программиро...
TmxOutlookBarPro
Пример создания W...
Crystal Button
Определние размер...
NetGraph [Исходни...
Удаление своего EXE

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97837
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14192
Borland Delphi ... 10292
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
В то время как одн...
Шрифт, свойства и ...
Добавление узлов к...
Сохранение «образа...
Invalid FOR contro...
Настройка зон безо...
Игра в планирование
групповой политики...
Оси
Сокеты на основе TPI
Обработка ошибок в...
Композитные/S-Vide...
Что нужно для двои...
Полный локальный в...
Онлайн казино Вулк...
Если в приложении ...
Счетчики ссылок
Какие есть четыре ...
Слоты Gms Deluxe с...
9.6. Заключение
Новый корпус для н...
лет, что требуется...
Обработка страничн...
Использование сред...
Настройка плагина ...
Статистика



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


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