Чтение онлайн

на главную - закладки

Жанры

Разработка ядра Linux
Шрифт:

• Объект

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

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

методов.

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

Другие объекты подсистемы VFS

Структуры для VFS — это самая "любимая" вещь, и в этой подсистеме существуют не только рассмотренные структуры, но и еще некоторые. Каждая зарегистрированная файловая система представлена структурой

file_system_type
. Объекты этого типа описывают файловую систему и ее свойства. Более того, каждая точка монтирования представлена в виде структуры
vfsmount
. Эта структура содержит информацию о точке монтирования, такую как ее положение и флаги, с которыми выполнена операция монтирования.

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

file_struct
,
fs_struct
и
namespace
.

Далее в этой главе будут рассматриваться эти объекты и их роль в функционировании уровня VFS.

Объект superblock

Объект суперблок должен быть реализован для каждой файловой системы. Он используется для хранения информации, которая описывает определенную файловую систему. Этот объект обычно соответствует суперблоку (superblock) или управляющему блоку (control block) файловой системы, который хранится в специальном секторе диска (отсюда и имя объекта). Файловые системы, которые не располагаются на дисках (например, файловые системы в виртуальной памяти, как sysfs), генерируют информацию суперблока "на лету" и хранят в памяти.

Объект суперблок представляется с помощью структуры

struct super_block
, которая определена в файле
<linux/fs.h>
. Она выглядит следующим образом (комментарии описывают назначение каждого поля).

struct super_block {

 struct list_head s_list; /* список всех суперблоков */

 dev_t s_dev; /* идентификатор */

 unsigned long s_blocksize; /*
размер блока в байтах */

 unsigned long s_old_blocksize; /* старый размер блока

в байтах */

 unsigned char s_blocksize_bits; /* размер блока в битах */

 unsigned char s_dirt; /* флаг того,

что суперблок изменен */

 unsigned long long s_maxbytes; /* максимальный размер файла */

 struct file_system_type *s_type; /* тип файловой системы */

 struct super_operations *s_op; /* операции суперблока */

 struct dquot_operations *dq_op; /* операции с квотами */

 struct quotactl_ops *s_qcop; /* операции управления квотами */

 struct export_operations *s_export_op; /* операции экспортирования */

 unsigned long s_flags; /* флаги монтирования */

 unsigned long s_magic; /* магический номер файловой системы */

 struct dentry *s_root; /* каталог, точка монтирования */

 struct rw_semaphore s_umount; /* семафор размонтирования */

 struct semaphore s_lock; /* семафор суперблока */

 int s_count; /* счетчик ссылок на суперблок */

 int s_syncing; /* флаг синхронизации

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

 int s_need_sync_fs; /* флаг того, что файловая

система еще не синхронизирована */

 atomic_t s_active; /* счетчик активных ссылок */

 void *s_security; /* модуль безопасности */

 struct list_head s_dirty; /* список измененных индексов */

 struct list_head s_io; /* список обратной записи */

 struct hlist_head s_anon; /* анонимные элементы каталога

для экспортирования */

 struct list_head s_files; /* список связанных файлов */

 struct block_device *s_bdev; /* соответствующий драйвер

блочного устройства */

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

данного типа */

 struct quota_info s_dquot; /* параметры квот */

 char s_id[32]; /* текстовое имя */

 void *s_fs_info; /* специфическая информация

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

Поделиться:
Популярные книги

Князь Андер Арес 3

Грехов Тимофей
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Князь Андер Арес 3

Бестужев. Служба Государевой Безопасности. Книга третья

Измайлов Сергей
3. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга третья

Мастер решений

Земляной Андрей Борисович
3. Специалист по выживанию
Фантастика:
боевая фантастика
космическая фантастика
6.20
рейтинг книги
Мастер решений

Неучтенный элемент. Том 1

NikL
1. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 1

Возвращение

Кораблев Родион
5. Другая сторона
Фантастика:
боевая фантастика
6.23
рейтинг книги
Возвращение

Двойник Короля 2

Скабер Артемий
2. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля 2

1941, Великая Отечественная катастрофа: Итоги дискуссии

Коллектив авторов
Документальная литература:
военная документалистика
6.25
рейтинг книги
1941, Великая Отечественная катастрофа: Итоги дискуссии

Страж Кодекса. Книга IV

Романов Илья Николаевич
4. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга IV

Черная стрела

Стивенсон Роберт Льюис
Приключения:
исторические приключения
8.83
рейтинг книги
Черная стрела

Старый, но крепкий 7

Крынов Макс
7. Культивация без насилия
Фантастика:
рпг
уся
фэнтези
5.00
рейтинг книги
Старый, но крепкий 7

Последний Герой. Том 1

Дамиров Рафаэль
1. Последний герой
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
5.00
рейтинг книги
Последний Герой. Том 1

Мастер...

Чащин Валерий
1. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
6.50
рейтинг книги
Мастер...

Сильнейший Столп Империи. Книга 2

Ермоленков Алексей
2. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 2

Князь Целитель 2

Ткачев Андрей Юрьевич
2. Князь Целитель
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Князь Целитель 2