Как ОС или уровень абстракции высокого уровня получают информацию об оборудовании, использующем драйвер устройства?
Когда вы читаете об аппаратной / аппаратной независимости, это утверждение из Википедии ( http://en.wikipedia.org/wiki/Device_independence) гласит:
Прикладному программному обеспечению не нужно ничего знать об оборудовании, на котором оно должно было использоваться. Вместо этого он обнаруживает возможности оборудования через стандартизированный уровень абстракции, а затем использует абстрактные команды для управления оборудованием.
Я хотел знать о взаимодействии более низкого уровня между подпрограммой BIOS / драйвером устройства /HAL/OS и контроллером устройства об обнаружении аппаратных возможностей.
Пожалуйста, помогите мне понять связь между этими объектами, которая имеет место в аппаратной независимости.
1 ответ
Аппаратные устройства, как правило, подключаются к главному контроллеру через какую-то стандартную шину. Например - PCI, PEX, USB.
Каждое подключенное устройство на шине будет выделено с помощью устройства #, шины #, функции # и т. Д. Контроллером шины.
Современные контроллеры шины либо предоставляют основному контроллеру возможность выполнить сканирование, либо отправляют событие, когда устройство подключено к шине в горячем режиме.
Для каждого обнаруженного устройства можно, используя стандартные команды контроллера шины (такие как регистры чтения / записи устройства, по идентификатору устройства, номеру шины и т. Д.), Опросить устройство на предмет таких деталей, как:
- ID производителя
- Идентификатор устройства
- Класс (контроллер / сетевое устройство / интерфейс человека / устройство обработки изображений / и т. Д.)
Для каждого типа шины все эти данные должны быть доступны одинаково для каждого подключенного устройства HW, что позволяет ОС использовать уровень абстракции.
Как только устройство будет обнаружено и идентифицировано, ОС вызовет функцию проверки всех драйверов зарегистрированных устройств конкретной шины, которая использует детали, упомянутые выше, чтобы решить, сможет ли это обработать. Когда проверка драйвера устройства завершается успешно, экземпляр драйвера выделяется и может использоваться непосредственно приложением, которому требуется доступ к HW.
Например: USB PC CAM подключается к порту USB. Событие отправляется на основной процессор контроллером шины USB. ЦП будет использовать стандартные функции контроллера шины USB, чтобы узнать идентификатор производителя и устройства, класс устройства, функции и т. Д., И вызовет все функции проверки зарегистрированных драйверов USB.
Если соответствующий драйвер устройства установлен (зарегистрирован), он успешно создаст экземпляр устройства, и видеоприложение (такое как Skype) может использовать его напрямую через библиотеки DLL, предоставляемые драйвером программного обеспечения.
Надеюсь это поможет.