Я понимаю, что устройства PCI и PCIe могут быть настроены ЦП (с помощью кода в BIOS или ОС) для ответа на определенные физические адреса памяти путем записи в определенные области пространства конфигурации устройства.
На самом деле ядро Linux имеет довольно сложный алгоритм для этого, учитывающий множество требований устройства (выравнивание памяти, возможности DMA и т. Д.).
Видя, что программное обеспечение, кажется, контролирует, когда и где эта память отображается, мой вопрос: как часть программного обеспечения может управлять отображением физической памяти?
После этой конфигурации устройство PCI будет знать, что нужно ответить на указанный диапазон адресов, но как ЦП узнает, что он должен перейти на шину PCI для тех конкретных адресов, которые были просто динамически определены?