The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Глава 14, Модель устройства в Linux

Глава 14, Модель устройства в Linux

Предыдущая  Содержание  Следующая V*D*V

Глава 14

 

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

 

Модель устройства версии 2.6 обеспечивает такую абстракцию. Сейчас она широко используется в ядре для поддержки широкого спектра задач, включая:

 

Управление питанием и выключение системы

Это требует понимания структуры системы. Например, адаптер USB узла не может быть закрыт до закрытия всех устройств, подключенных к этому адаптеру. Модель устройства позволяет обход системного оборудования в правильном порядке.

 

Взаимодействие с пользовательским пространством

Реализация виртуальной файловой системы sysfs тесно связана с моделью устройства и выставляет структуру, предоставленную ей. Предоставление информации о системе для пользовательского пространства и ручек управления для изменения рабочих параметров всё чаще выполняется через sysfs и, следовательно, через модель устройства.

 

Устройства, подключаемые без выключения системы

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

Классы устройств

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

 

Жизненные циклы объектов

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

 

Модель устройства Linux представляет собой сложную структуру данных. Рассмотрим, например, Рисунок 14-1, который показывает (в упрощённой форме) небольшую часть структуры модели устройства, связанной с USB мышью. Вниз по центру диаграммы мы видим часть дерева ядра "устройств", которое показывает, как мышь подключена к системе. Дерево "шины" прослеживает, что подключено к каждой шине, в то время как поддерево "классы" озабочено функциями, предоставляемыми устройствами, независимо от того, как они подключены. Дерево модели устройства даже на простой системе содержит сотни узлов, похожих на показанные на диаграмме; оно является сложной структурой данных для визуализации в целом.

 

Рисунок 14-1. Небольшая часть модели устройства

Рисунок 14-1. Небольшая часть модели устройства

 

По большей части, код модели устройства в Linux заботится обо всех этих деталях без навязывания себя авторам драйверов. Оно в основном находится на заднем плане; прямым взаимодействием с моделью устройства, как правило, занимается логика шинного уровня и другие разные подсистемы ядра. Как результат, многие авторы драйверов могут полностью игнорировать модель устройства и доверить ей позаботиться о себе самой.

 

Однако, есть моменты, когда хорошо иметь понимание модели устройства. Есть моменты, когда модель устройства "выходит наружу" из-под других слоёв; например, обычный код DMA (который мы встретим в Главе 15) работает со struct device. Вы можете захотеть использовать некоторые из возможностей модели устройства, таких как подсчёт ссылок и соответствующие возможности, предоставляемые kobjects. Взаимодействие с пользовательским пространством через sysfs также является функцией модели устройства; эта глава рассказывает, как работает такое взаимодействие.

 

Начнём, однако, с презентации модели устройства снизу вверх. Сложность модели устройства делает её труднопонимаемой при начале просмотра с высоких уровней. Мы надеемся, что показывая, как работают низкоуровневые компоненты устройства, мы сможем подготовить вас к постижению, как используются эти компоненты для построения большой структуры.

 

Многие читатели могут рассматривать эту главу как дополнительный материал, которые не требует прочтения до конца в первый раз. Тех, кто заинтересовался работой модели устройства Linux призываем, однако, двигаться вперёд, так как мы углубляемся в низкоуровневые детали.

Предыдущая  Содержание  Следующая