Структуры данных, связанные с файловыми системами

Структуры данных, связанные с файловыми системами

В дополнение к фундаментальным объектам подсистемы VFS, ядро использует и другие стандартные структуры данных для управления данными, связанными с файловыми системами. Первый объект используется для описания конкретного типа файловой системы, как, например, ext3 или XFS. Вторая структура данных используется для описания каждого экземпляра смонтированной файловой системы.

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

struct file_system_type {

 const char      *name;     /* название файловой системы */

 struct subsystem subsys;   /* объект подсистемы sysfs */

 int              fs_flags; /* флаги типа файловой системы */

 /* следующая функция используется для считывания суперблока с диска */

 struct super_block*(*get_sb)(

  struct file_system_type*, int, char*, void*);

 /* эта функция используется для прекращения доступа к суперблоку */

 void (*kill_sb)(struct super_block*);

 struct module     *owner;      /* соответствующий модуль (если есть) */

 struct file_system_type *next; /* следующая файловая система в списке */

 struct list_head   fs_supers;  /* список объектов типа суперблок */

};

Функция get_sb() служит для считывания суперблока с диска и заполнения объекта суперблока соответствующими данными при монтировании файловой системы. Остальные параметры описывают свойства файловой системы.

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

Значительно интереснее становится, когда файловая система монтируется, при этом создается структура vfsmount. Эта структура используется для представления конкретного экземпляра файловой системы, или, другими словами, точки монтирования.

Структура vfsmount определена в файле <linux/mount.h> следующим образом.

struct vfsmount {

 struct list_head   mnt_hash;       /* список хеш-таблицы */

 struct vfsmount   *mnt_parent;     /* родительская файловая система */

 struct dentry     *mnt_mountpoint; /* объект элемента каталога

                                       точки монтирования */

 struct dentry     *mnt_root;       /* объект элемента каталога корня

                                        данной файловой системы */

 struct super_block *mnt_sb; /* суперблок данной файловой системы */

 struct list_head   mnt_mounts;     /* список файловых систем,

                                       смонтированных к данной */

 struct list_head   mnt_child;      /* потомки, связанные с родителем */

 atomic_t           mnt_count;      /* счетчик использования */

 int                mnt_flags;      /* флаги монтирования */

 char               *mnt_devname;   /* имя смонтированного устройства */

 struct list_head   mnt_list;       /* список дескрипторов */

 struct list_head   mnt_fslinkk;    /* истекший список, специфичный

                                       для файловой системы */

 struct namespace   *mnt_namespace; /* связанное пространство имен */

};

Самая сложная задача — это поддержание списка всех точек монтирования и взаимоотношений между данной файловой системой и другими точками монтирования. Эта информация хранится в различных связанных списках структуры vfsmount.

Структура vfsmount также содержит поле mnt_flags. В табл. 12.1 приведен список стандартных флагов монтирования.

Таблица 12.1. Список стандартных флагов монтирования

Флаг Описание
MNT_NOSUID Запрещает использование флагов setuid и setgid для бинарных файлов на файловой системе
MNT_NODEV Запрещает доступ к файлам устройств на файловой системе
MNT_NOEXEC Запрещает выполнение программ на файловой системе

Эти флаги полезны, в основном, для сменных носителей, которым администратор не доверяет.

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

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

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

12.1 ПРОБЛЕМЫ, СВЯЗАННЫЕ С МНОГОПРОЦЕССОРНЫМИ СИСТЕМАМИ

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

12.1 ПРОБЛЕМЫ, СВЯЗАННЫЕ С МНОГОПРОЦЕССОРНЫМИ СИСТЕМАМИ В главе 2 мы говорили о том, что защита целостности структур данных ядра системы UNIX обеспечивается двумя способами: ядро не может выгрузить один процесс и переключиться на контекст другого, если работа производится в


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

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

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


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

Из книги Очень хороший самоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютере и увеличить его возможности автора Колисниченко Денис Николаевич

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


Ошибки, связанные с накопителями данных

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

Ошибки, связанные с накопителями данных Ошибки, связанные с накопителями данных и файловой системой, представлены в табл. 6.1.Таблица 6.1. Ошибки накопителей


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

Из книги Серверные технологии хранения данных в среде Windows® 2000 Windows® Server 2003 автора Дайлип Наик

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


1.4 Структуры данных, связанные с драйверами устройств Windows

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

1.4 Структуры данных, связанные с драйверами устройств Windows Перед подробным рассмотрением драйверов устройств Windows NT стоит разобраться в некоторых важных структурах данных, которые используются этими драйверами. Каждый драйвер Windows, включая драйверы устройств хранения


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

Из книги MySQL 5.0. Библиотека программиста автора Гольцман Виктор Иосифович

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


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

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

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


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

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

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


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

Из книги Linux программирование в примерах автора Роббинс Арнольд

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


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

Из книги Разработка ядра Linux автора Лав Роберт

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


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

Из книги Продвижение порталов и интернет-магазинов автора Гроховский Леонид О.

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


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

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

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


Структуры данных, связанные с процессом

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

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


Риски, связанные с хостингом и потерей данных

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

Риски, связанные с хостингом и потерей данных Примерно раз в два года в русскоязычном сегменте Рунета разыгрывается очередная драма, связанная с пожаром в дата-центре, отключением серверов крупного хостинг-провайдера или другими аварийными ситуациями, которые сразу же