Модель драйвера устройстваСкачать проекты для коттеджейРанние версии ядра Linux предлагали разработчикам драйверов не так уж много базовых функциональных возможностей: выделение динамической памяти, резервирование диапазона адресов ввода/вывода или линии IRQ, активизация служебной процедуры обработки прерываний в ответ на прерывание от устройства. Правда и то, что старые аппаратные устройства были громоздкими, программировать их было неудобно, а два разных устройства имели мало общего, даже если располагались на одной шине. Таким образом, не было особого смысла предлагать разработчикам драйверов какую-либо унифицированную модель.
Сейчас все обстоит иначе. Типы шин, такие как PCI, предъявляют строгие требования к конструкции аппаратных устройств. Как следствие, современные устройства, даже принадлежащие к разным классам, обладают сходными функциональными возможностями. Драйверы таких устройств, как правило, должны уделять внимание:
- управлению питанием (обработке разных уровней напряжения на линии питания устройства);
- технологии plug-and-play (прозрачному распределению ресурсов при конфигурировании устройства);
- горячему” подключению (поддержке подсоединения и отсоединения устройства во время работы системы).
Управление питанием выполняется ядром глобально для каждого устройства в системе. Например, когда компьютер, питающийся от аккумулятора, переходит в режим ожидания, ядро должно перевести каждое аппаратное устройство (жесткие диски, графическую и звуковую карты, сетевую карту, контроллеры шин и т. д.) в режим пониженного потребления энергии. Таким образом, драйвер каждого устройства, которое может быть переведено в режим ожидания, должен включать в себя функцию обратного вызова, которая переводит устройство в режим пониженного потребления энергии. Более того, устройства должны быть переведены в режим ожидания в строго определенном порядке, иначе некоторые из них останутся в ненадлежащем состоянии. Например, ядро должно вначале перевести в состояние ожидания сначала диски, а затем их контроллер, потому что в противном случае будет невозможно отправить дискам нужные команды.
Чтобы можно было реализовать подобные операции, Linux 2.6 предоставляет разработчикам несколько структур данных и вспомогательных функций, обеспечивающих унифицированное представление всех шин, устройств и драйверов устройств в системе. Этот каркас” называется моделью драйвера устройства.
Самый современный в Екатеринбурге
центр хирургии находится в УГМК-Клинике.