LINUX.ORG.RU

Объясните иерархию драйверов


0

1

Как известно драйвер - это модуль ядра, для управления внешними устройствами. Ну то есть, процессор обмениваеться сигналами с устройствами и те выполняют указанные процессорами команды. Но ведь устройства подключаются не непосредственно к слоту процессора, а к шинам южного или северного мостов. Как правило к шинам южного моста, в котором установлены контроллеры шин, для преобразования сигнала из слота процессора в свой, внутренний «шинный» сигнал. Так вот получается, что внутри ОС есть два уровня драйверов - драйвер непосредственно шинного контроллера, расположенного в южном или севрном мосту, имеющий свой api, к которому подключаеться драйвер непосредственно устройства? Вот к примеру, драйвер usb-принтера - есть драйвер принтера, который на основе системных вызовов из приложений формирует команды для принтера и посылает их к нему используя api драйвера контроллера usb-шины в южном мосту?


сколько у вас в школе было за правильноую расстановку знаков препинания?
к примеру поставте запятую на место в предложении:
«казнить нельзя помиловать.»

а потом перечитайте весь неосмыссленый бред что вы вылили, и нормально задайте вопрос.

anonymous
()

Так вот получается, что внутри ОС есть два уровня драйверов - драйвер непосредственно шинного контроллера, расположенного в южном или севрном мосту, имеющий свой api, к которому подключаеться драйвер непосредственно устройства?

Приблизительно так.

В общем виде всё устроенно след. образом:

1) Процессор имеет шину/данных адреса (IO-space вменяемые процессоры не имеют

2) К этой шине подключаются контроллер памяти/внешних устройств

3) При попытке процессора обратится к какому-либо участку памяти обращение роутится в RAM или в контроллеры устройств.

4) Если процессор читает/пишет в область адресов, отданных для шин (к примеру - PCI), то это автомагически приводит к тому, что на шине начинают бегать разные сигналы и случаться циклы чтения/записи

5) Циклы чтения/записи на шине PCI уже обрабатываются устройствами

6) Если устройство на шине PCI внезапно обнаруживает, что пишут в выделенную для этого же устройства область памяти, то устройство (к примеру, USB контроллер), начинает интрепретировать чтение/запись по своим адресам

7) Это в свою очередь приводит к тому, что на шине USB автомагически появляются разные сигналы и принтер их обрабатывает

anonymous
()

Ну то есть, процессор обмениваеться

Умничка.

anonymous
()

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

Процессор просто битики какие-то ставит в памяти, и оно само, магическим образом, срабатывает. Читай лучше книжки, а не лор. Из них на много больше узнаешь. Я гарантирую это.

Но учти, как только много книжек прочитаешь, магия стразу вся исчезнет. Останется одна физика.

anonymous
()

и посылает их к нему используя api драйвера контроллера usb-шины в южном мосту

Насколько я помню, в ядре есть абстрактный интерфейс для работы с PCI устройствами или там с USB например. Драйвер принтера использует соответствующий интерфейс (в вашем примере - USB). А сам этот интерфейс реализуется, конечно, своим драйвером в зависимости от конкретного оборудования. То есть, непосредственно драйвер принтера с драйвером южного моста не связывается.

no-such-file ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.