外围设备的内存映射由芯片组定义。然而,像linux和Windows这样的现代操作系统几乎可以从每个芯片启动(如果为正确的体系结构编译的话)。据我所知,像USB主机这样的内存映射设备并不包括在体系结构标准中。操作系统如何仍能启动、加载驱动程序并正常工作?我想一定有一些描述芯片组的规范。
有一点不同:芯片组的识别是如何工作的,什么标准定义了芯片组和处理器之间的通信,以便它在不同的硬件上工作,内核如何知道不同外围设备的正确物理地址?
发布于 2020-05-18 23:26:00
开放系统通常使用设备树,它是所连接的硬件及其连接方式的规范。还有另一个系统,ACPI,它支持传统PC。任一系统都允许OS定位和配置其所需的总线和相关的外围设备。
它永远不会像那样100%容易。例如,操作系统知道在总线1上的地址1000处有一个scsi控制器是很好的;但是如果scsi驱动程序的代码不在加载的操作系统映像中,那么这个信息就没有什么用处,因为它没有办法加载驱动程序。
英特尔的ACPI规范试图通过将微型驱动程序实现烘焙到平台、设备本身或两者的固件中来解决此问题。由于设备不一定知道它将在哪种cpu上运行,因此这些迷你驱动程序是在主机操作系统需要解释器的虚拟指令集中编写的。
UEFI提供了一种通过更通用的机制来解决引导依赖性的替代方法,以将迷你引导驱动程序用于相同的目的。
https://stackoverflow.com/questions/61822216
复制相似问题