Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Объясните иерархию драйверов
 
 автор: dump   (29.11.2011 в 16:12)   письмо автору
 
 

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

  Ответить  
 
 автор: cheops   (29.11.2011 в 16:48)   письмо автору
 
   для: dump   (29.11.2011 в 16:12)
 

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

Процессор, кстати, для операционной системы это тоже ресурс, со своим драйвером... но так как их архитектура меняется медленно, видов процессоров мало и они, как правило, хорошо совместимы друг с другом, драйвера для них в операционной систем всегда готовые (точнее обвязать новый процессор - это забота чипсета, который операционной системе предоставляет стандартный доступ к процессору). Тем более операционная система будет пользоваться только тем, что ей нужно, если она не умеет пользоваться новыми командами - она их не задействует (хотя программист может). Операционной системе, потребителю драйверов, все равно, как они друг с другом взаимодействуют на уровне BIOS и печатных плат - она их просто использует. При разработке драйвера необходимо учитывать их взаимодействие, совместимость железа, какие данные откуда поступают и куда передаются, но это проблему давно решили протоколами обмена. Вы можете разработать какую угодно железку, но чтобы она пошла на рынок и продавалась, вам придется придерживаться стандартов - USB, SATA и кучи других, которые не на слуху у покупателей (так как нет коннекторов, которые руками вставляются - они заранее распаиваются). Это позволяет при разработке драйвера не сильно заморачиваться на иерархию. Вы просто знаете, что данные от принтера пойдут по USB, что в системе будет обязательно USB-драйвер, иначе она просто принтер не увидит и вообще USB-порт не обнаружит. Также со всем остальным, вы знаете, что в системе будет процессор и для него обязательно будет свой драйвер, к которому можно будет обратиться, что при этом будет делать процессор - гнать вам сигнал по южному или северному мосту - вас вообще не должно беспокоить - это задача драйвера процессора, вам же достаточно просто к нему обратиться, чтобы получить нужные данные. А вот для BIOS - это имеет значение.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования