Объекты VFS и их структуры данных

Объекты VFS и их структуры данных

Виртуальная файловая система (VFS) объектно-ориентированна[69]. Общая файловая модель представлена набором структур данных. Эти структуры данных очень похожи на объекты. Так как ядро программируется строго на языке С, то, при отсутствии возможностей прямой поддержки парадигм ООП в языке программирования, структуры данных представляются структурами языка С. Структуры содержат как указатели на элементы данных, так и указатели на функции, которые работают с этими данными.

Существуют следующие четыре основных типа объектов VFS.

• Объект суперблок (superblock), который представляет определенную смонтированную файловую систему.

• Объект файловый индекс (inode), который представляет определенный файл.

• Объект элемент каталога (dentry), который представляет определенный элемент каталога.

• Объект файл (file), который представляет открытый файл, связанный с процессом.

Следует обратить внимание, что поскольку подсистема VFS рассматривает каталоги как обычные файлы, то не существует специальных объектов для каталогов. Как рассказывалось ранее, объект dentry представляет компонент пути, который может содержать обычный файл. Другими словами, dentry — это не то же самое, что каталог, а каталог — это то же, что и файл. Все понятно?

Каждый из рассмотренных основных объектов содержит объект operations (операции). Эти объекты описывают методы, которые ядро может применять для основных объектов.

В частности, существуют следующие объекты операций.

• Объект super_operations (операции с суперблоком файловой системы) содержит методы, которые ядро может вызывать для определенной файловой системы, как, например, read_inode() или sync_fs().

• Объект inode_operations (операции с файловыми индексами) содержит методы, которые ядро может вызывать для определенного файла, как, например, create() или link().

• Объект dentry_operations (операции с элементами каталогов) содержит методы, которые ядро может вызывать для определенного элемента каталога, как, например, d_compare() или d_delete().

• Объект file_operations (операции с файлами) содержит методы, которые процесс может вызывать для открытого файла, как например, read() и write().

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

И еще раз повторимся, что под объектами мы будем понимать структуры, которые явно не являются объектными типами (в отличие от языков программирования C++ и Java). Однако эти структуры представляют определенные экземпляры объектов, данные связанные с объектами, и методы, которые ими оперируют. Это практически то же, что и объектные типы.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

2.3 СТРУКТУРЫ ДАННЫХ ЯДРА

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

2.3 СТРУКТУРЫ ДАННЫХ ЯДРА Большинство информационных структур ядра размещается в таблицах фиксированного размера, а не в динамически выделенной памяти. Преимущество такого подхода состоит в том, что программа ядра проста, но в ней ограничивается число элементов


1. Абстрактные структуры данных

Из книги Информатика и информационные технологии: конспект лекций автора Цветкова А В

1. Абстрактные структуры данных Структурированные типы данных, такие как массивы, множества, записи, представляют собой статические структуры, так как их размеры неизменны в течение всего времени выполнения программы.Часто требуется, чтобы структуры данных меняли свои


1. Древовидные структуры данных

Из книги Информатика и информационные технологии автора Цветкова А В

1. Древовидные структуры данных Древовидной структурой данных называется конечное множество элементов-узлов, между которыми существуют отношения – связь исходного и порожденного.Если использовать рекурсивное определение, предложенное Н. Виртом, то древовидная


17. Абстрактные структуры данных

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

17. Абстрактные структуры данных Структурированные типы данных, такие как массивы, множества, записи, представляют собой статические структуры, так как их размеры неизменны в течение всего времени выполнения программы.Часто требуется, чтобы структуры данных меняли свои


20. Древовидные структуры данных

Из книги MySQL: руководство профессионала автора Паутов Алексей В

20. Древовидные структуры данных Древовидной структурой данных называется конечное множество элементов-узлов, между которыми существуют отношения – связь исходного и порожденного.Если использовать рекурсивное определение, предложенное Н. Виртом, то древовидная


Лекция 8. Динамические структуры: объекты

Из книги Информатика: аппаратные средства персонального компьютера автора Яшин Владимир Николаевич

Лекция 8. Динамические структуры: объекты В предыдущей лекции отмечалось, что экземпляры классов называют объектами. Настало время переключить внимание на эти объекты, и в общем смысле - на модель ОО-вычислений времени выполнения. В предыдущих лекциях рассматривались в


Полиморфные структуры данных

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Полиморфные структуры данных Рассмотрим массив многоугольников:poly_arr: ARRAY [POLYGON]Когда некоторое значение x присваивается элементу этого массива, как в вызовеpoly_arr.put (x, some_index)(для некоторого допустимого значения индекса some_index), то спецификация класса ARRAY указывает, что тип


6.2. Типы и структуры данных

Из книги Microsoft Access 2007 автора Днепров Александр Г.

6.2. Типы и структуры данных Под типом данных (data type) понимается множество величин, объединенных определенными признаками и совокупностью допустимых преобразований.Так, если в качестве объединяющего признака используется вид данных, то данные можно разделить на


11.7.1. Структуры данных

Из книги Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform автора Кёртен Роб

11.7.1. Структуры данных Хотя код в ladsh1.с поддерживает концепцию задания как множества процессов (предположительно, объединенных вместе каналами), он не предоставляет способа указания того, какие файлы использовать для ввода и вывода. Чтобы позволить это, добавляются новые


6.1. Оптимизация структуры данных

Из книги Операционная система UNIX автора Робачевский Андрей М.

6.1. Оптимизация структуры данных Если «узким местом» вашей базы данных является одна или несколько таблиц, попробуем скорректировать структуру этих таблиц:• выбрать наиболее подходящий тип таблицы;• минимизировать объем данных в таблице;• пересмотреть набор


Проектирование структуры данных

Из книги автора

Проектирование структуры данных Как и построение здания, построение базы данных начинается с проектирования. Чтобы понять, какая структура базы будет для вас наиболее удобной и полезной, следуйте нижеприведенным этапам проектирования.1. Для начала необходимо выяснить,


Структуры данных

Из книги автора

Структуры данных Первое, в чем следует разобраться, — это структуры данных, которые управляют работой библиотеки:• управляющая структура resmgr_attr_t• таблица функций установления соединения resmgr_connect_funcs_t• таблица функций ввода-вывода resmgr_io_funcs_t и еще одна внутренняя


Структуры данных уровня POSIX

Из книги автора

Структуры данных уровня POSIX К подпрограммам POSIX-уровня относятся три структуры данных. Отметьте, что пока речь идет о базовом уровне, вы можете использовать любые структуры данных, которые пожелаете; соответствия определенной структуре и содержанию требует именно


Структуры данных процесса

Из книги автора

Структуры данных процесса Каждый процесс представлен в системе двумя основными структурами данных — proc и user, описанными, соответственно, в файлах <sys/proc.h> и <sys/user.h>. Содержимое и формат этих структур различны для разных версий UNIX. В табл. 3.1 приведены некоторые поля


Структуры данных

Из книги автора

Структуры данных Структура данных socket, описывающая сокет, представлена на рис. 6.21. В этой структуре хранится информация о типе сокета (so_type), его текущем состоянии (so_state) и используемом протоколе (so_proto). Рис. 6.21. Структуры данных сокетаСокет является коммуникационным узлом