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