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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Структура, с помощью которой реализованы объекты kobject, имеет следующий вид.

struct kobject {

char *k_name;

char name[KOBJ_NAME_LEN];

struct kref kref;

struct list_head entry;

struct kobject *parent;

struct kset *kset

struct kobj_type *ktype;

struct dentry *dentry;

};

Поле k_nameсодержит указатель на имя объекта. Если длина имени меньше KOBJ_NAME_LEN, что сейчас составляет 20 байт, то имя хранится в массиве name, a поле knameуказывает на первый элемент этого массива. Если длина имени больше KOBJ_NAME_LENбайт, то динамически выделяется буфер, размер которого достаточен для хранения строки символов имени, имя записывается в этот буфер, а поле k_nameуказывает на него.

Указатель parentуказывает на родительский объект данного объекта kobject. Таким образом, с помощью структур kobjectможет быть создана иерархия объектов в ядре, которая позволяет устанавливать соотношения родства между различными объектами. Как будет видно дальше, с помощью файловой системы sysfs осуществляется представление в пространстве пользователя той иерархии объектов kobject, которая существует в ядре.

Указатель dentryсодержит адрес структуры struct dentry, которая представляет этот объект в файловой системе sysfs.

Поля kref, ktypeи ksetуказывают на экземпляры структур, которые используются для поддержки объектов kobject. Поле entryиспользуется совместно с полем kset. Сами эти структуры и их использование будут обсуждаться ниже.

Обычно структуры kobjectвстраиваются в другие структуры данных и сами по себе не используются. Например, такая важная структура, как struct cdev, имеет поле kobj.

/* структура cdev - объект для представления символьных устройств */

struct cdev {

struct kobject kobj;

struct module *owner;

struct file_operations *ops;

struct list_head list;

dev_t dev;

unsigned int count;

};

Когда структуры kobjectвстраиваются в другие структуры данных, то последние получают те стандартизированные возможности, которые обеспечиваются структурами kobject. Еще более важно, что структуры, которые содержат в себе объекты kobject, становятся частью объектной иерархии. Например, структура cdevпредставляется в объектной иерархии с помощью указателя на родительский объект cdev->kobj->parentи списка cdev->kobj->entry.

Типы ktype

Объекты kobjectмогут быть связаны с определенным типом, который называется ktype. Типы ktypeпредставляются с помощью структуры s truct kobj_type, определенной в файле следующим образом.

struct kobj_type {

void (*release)(struct kobject*);

struct sysfs_ops *sysfs_ops;

struct attribute **default_attrs;

};

Тип ktypeимеет простое назначение — представлять общее поведение для некоторого семейства объектов kobject. Вместо того чтобы для каждого отдельного объекта задавать особенности поведения, эти особенности связываются с их полем ktype, и объекты одного "типа" характеризуются одинаковым поведением.

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

Поле sysfs_opsуказывает на структуру sysfs_ops. Эта структура определяет поведение файлов на файловой системе sysfsпри выполнении операций записи и чтения. Более детально она рассматривается в разделе "Добавление файлов на файловой системе sysfs".

Наконец, поле default_attrsуказывает на массив структур attribute. Эти структуры определяют атрибуты , которые связаны с объектом kobjectи используются но умолчанию. Атрибуты соответствуют свойствам данного объекта. Если некоторый объект kobjectэкспортируется через файловую систему sysfs, то атрибуты экспортируются как отдельные файлы. Последний элемент этого массива должен содержать значению NULL.

Множества объектов kset

Множества ksetпредставляют собой коллекции объектов kobject. Множество ksetработает как базовый контейнерный класс для объектов, например, "все блочные устройства". Множества ksetочень похожи на типы ktype, и возникает вопрос: "Для чего нужны два разных обобщения?" Множество ksetобъединяет несколько объектов kobject, а типы ktypeопределяют общие свойства, которые связаны с объектами kobjectодного типа. Существует возможность объединить объекты одного типа ktypeв различные множества kset.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x