Роберт Лав - Разработка ядра Linux

Здесь есть возможность читать онлайн «Роберт Лав - Разработка ядра Linux» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2006, ISBN: 2006, Издательство: Издательский дом Вильямс, Жанр: ОС и Сети, Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Разработка ядра Linux: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Разработка ядра Linux»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.
Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Разработка ядра Linux — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Разработка ядра Linux», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

sb.write_super();

В языке С нет простого способа получить указатель на объект, для которого вызван метод, поэтому его необходимо передавать явно.

Рассмотрим операции суперблока, которые описаны в структуре super_operations.

struct inode* alloc_inode(struct super_block *sb)— эта функция создает и инициализирует новый объект файлового индекса, связанного с данным суперблоком.

void destroy_inode(struct inode *inode)— эта функция уничтожает данный объект индекса файла.

void read_inode(struct inode *inode)— эта функция считывает с диска файловый индекс с номером inode->i_inoи заполняет все остальные поля структуры данных индекса.

void dirty_inode(struct inode *inode)— эта функция вызывается подсистемой VFS, когда в индекс вносятся изменения (dirty). Журналируемые файловые системы (как, например, ext3) используют эту функцию для обновления журнала.

void write_inode(struct inode inode*, int wait)— эта функция записывает указанный индекс на диск. Параметр waitуказывает, должна ли данная операция выполняться синхронно.

void put_inode(struct inode *inode)— эта функция освобождает указанный индекс.

void drop_inode(struct inode *inode)— эта функция вызывается подсистемой VFS, когда исчезает последняя ссылка на индекс. Обычные файловые системы Unix никогда не определяют эту функцию, в таком случае подсистема VFS просто удаляет индекс. Вызывающий код должен удерживать блокировку inode_lock.

void delete_inode(struct inode *inode)— эта функция удаляет индекс файла с диска.

void put_super(struct super_block *sb)— эта функция вызывается подсистемой VFS при размонтировании файловой системы, чтобы освободить указанный суперблок.

void write_super(struct super_block *sb)— эта функция обновляет суперблок на диске данными из указанного суперблока. Подсистема VFS вызывает эту функцию для синхронизации измененного суперблока в памяти с данными суперблока на диске.

int sync_fs(struct super_block *sb, int wait)— эта функция синхронизирует метаданные файловой системы с данными на диске. Параметр waitуказывает, должна ли операция быть синхронной или асинхронной.

void write_super_lockfs(struct super_block *sb)— эта функция предотвращает изменения файловой системы и затем обновляет данные суперблока на диске данными из указанного суперблока. Сейчас она используется диспетчером логических томов (LVM, Logical Volume Manager).

void unlockfs(struct super_block *sb)— эта функция разблокирует файловую систему после выполнения функции write_super_lockfs().

int statfs(struct super_block *sb, struct statfs *statfs)— эта функция вызывается подсистемой VFS для получения статистики файловой системы, Статистика указанной файловой системы записывается в структуру statfs.

int remount_fs(struct super_block *sb, int *flags, char *data)— эта функция вызывается подсистемой VFS, когда файловая система монтируется с другими параметрами монтирования.

void clear_inode(struct inode*)— эта функция вызывается подсистемой VFS для освобождения индекса и очистки всех страниц памяти, связанных с индексом.

void umount_begin(struct super_block *sb)— эта функция вызывается подсистемой VFS для прерывания операции монтирования. Она используется сетевыми файловыми системами, такими как NFS.

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

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

Объект inode

Объект inodeсодержит всю информацию, которая необходима ядру для манипуляций с файлами и каталогами. В файловых системах в стиле Unix вся информация просто считывается из дисковых индексов и помещается в объект inodeподсистемы VFS. Если файловые системы не имеют индексов, то эту информацию необходимо получить из других дисковых структур [70] Файловые системы, которые не имеют индексов, обычно хранят необходимую информацию как часть файла. Некоторые современные файловые системы также применяют базы данных для хранения метаданных файла. В любом случае объект индекса создается тем способом, который подходит для файловой системы. .

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Разработка ядра Linux»

Представляем Вашему вниманию похожие книги на «Разработка ядра Linux» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Разработка ядра Linux»

Обсуждение, отзывы о книге «Разработка ядра Linux» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x