Linux Kernel (Ядро линукса) (часть 2)


Модель драйвера устройства

Скачать проекты для коттеджей

Ранние версии ядра Linux предлагали разработчикам драйверов не так уж много базовых функциональных возможностей: выделение динамической памяти, резервирование диапазона адресов ввода/вывода или линии IRQ, активизация служебной процедуры обработки прерываний в ответ на прерывание от устройства. Правда и то, что старые аппаратные устройства были громоздкими, программировать их было неудобно, а два разных устройства имели мало общего, даже если располагались на одной шине. Таким образом, не было особого смысла предлагать разработчикам драйверов какую-либо унифицированную модель.

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

Чтобы можно было реализовать подобные операции, Linux 2.6 предоставляет разработчикам несколько структур данных и вспомогательных функций, обеспечивающих унифицированное представление всех шин, устройств и драйверов устройств в системе. Этот каркас” называется моделью драйвера устройства.

Самый современный в Екатеринбурге центр хирургии находится в УГМК-Клинике.

Предыдущая страница | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | Следующая страница




Возможно, Вас также заинтересует:

ОС Knoppix - это Linux без про...

ВведениеЕсли вы цените свое время, умеете считать деньги и знаете стоимость информации, то эта книга...

Linux Kernel (Ядро линукса) (ч...

Спин-блокировкаСпин-блокировка необходима в многопроцессорной системе, потому что могут возникнуть...

Linux Kernel (Ядро линукса) (ч...

Копирование при записи В системах Unix первых поколений создание процесса было реализовано довольно...

Linux Kernel (Ядро линукса) (ч...

Буферы блоков и головы буферовУ каждого буфера есть дескриптор голова буфера, имеющий тип buffer...