Большинство новых шинных систем имеют механизм проверки, где система может запрашивать у всех устройств идентификацию себя и своего положения на шине, а затем ОС может сопоставить эти идентификаторы с драйверами устройств, которые затем могут указать другие ресурсы. им нужно. USB, PCI, PCI-Express, AGP, Firewire, SATA, Infiniband и Lightport делают это. Однако он не обязательно работает точно по «адресам», он может быть через другой режим контроллера шины или даже через совершенно отдельную шину. Например, микросхемы ОЗУ имеют интерфейс SPI для их настройки, в то время как фактические данные перемещаются по другому соединению. У меня была встроенная система на работе, которая использовала SPI для настройки доступа к шине флэш-диска, который содержал операционную систему ... это было действительно раздражающее устройство для загрузки.
В то время как BIOS на ПК фактически настраивает все устройства PCI, большинство новых операционных систем немедленно переделают процесс с нуля. Таким образом, прошивка EFI для компьютеров Mac на базе процессоров Intel (и многих серверов) устанавливает только то, что ей действительно нужно для загрузки ядра ОС, а остальное - для ОС. Вот почему Windows нужен BootCamp или диск HAL для загрузки на Mac или высокопроизводительном сервере. Windows выполняет тестирование PCI довольно поздно на обычных ПК и некоторое время нуждается в настройке BIOS, но на Mac и некоторых серверных системах ей требуется другой загруженный HAL для немедленного сканирования оборудования.
Если вы действительно хотите понять это, то чтение ядра Linux чрезвычайно поучительно, особенно в отношении различий между ПК и другими системами.