Windows或Linux等现代操作系统如何知道特定于芯片组的内存映射? [英] How does a modern operating system like Windows or Linux know the chipset specific memory map?

查看:62
本文介绍了Windows或Linux等现代操作系统如何知道特定于芯片组的内存映射?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

外围设备的内存映射由芯片组定义.但是,现代操作系统(如linux和Windows)几乎可以从每个芯片引导(如果针对正确的体系结构进行了编译).据我所知,诸如USB主机之类的内存映射设备未包含在体系结构标准中.操作系统仍如何引导,加载驱动程序和功能?我想必须有一些描述芯片组的规范.

The memory map of the peripherals are defined by the chipset. However, modern operating systems like linux and Windows can boot from pretty much every chip (if compiled for the right architecture). As far as I know, the memory mapped devices like the USB Host are not included in the architecture standard. How can the OS still boot, load the drivers, and function? I suppose there must be some specification where the chipset is described.

有些不同:芯片组的标识是如何工作的,什么标准定义了芯片组与处理器之间的通信,以便它可以在不同的硬件上工作,内核如何知道不同外设的正确物理地址?

Formulated a little different: How does the identification of the chipset work, what standards define the communication between the chipset and the processor so that it works on different hardwares and how does the kernel know the right physical addresses for the different peripherals?

推荐答案

开放系统通常使用设备树,它是所连接硬件及其连接方式的规范.还有另一个系统 ACPI 支持旧式PC.两种系统都允许OS定位和配置所需的总线和相关外围设备.

Open systems typically use a device tree, which is a specification of the attached hardware, and how it is attached. There is another system, ACPI which supports legacy PCs. Either system permits an OS to locate and configure the buses and associated peripherals it needs.

从来没有100%如此简单.例如,对于OS来说,知道总线1上的地址1000有一个scsi控制器是可以的;但是,如果scsi驱动程序的代码不在已加载的os映像中,则该知识用处不大,因为它无法加载驱动程序.

It is never 100% as easy as that. For example, it is fine for the OS to know there is a scsi controller on bus 1 at address 1000; but if the code for the scsi driver isn't in the loaded os image, then this knowledge is of little use, as it has no way to load the driver.

ACPI的英特尔规范试图通过将微小的驱动程序实现烘焙到平台,设备本身或两者的固件中来解决此问题.由于设备不一定知道它将在哪种CPU上运行,因此这些微型驱动程序以虚拟指令集编写,主机操作系统需要为其提供解释器.

The intel specification for ACPI attempts to fix this by having tiny driver implementations baked into the firmware of either the platform, the device itself, or both. Since the device doesn't necessarily know what sort of cpu it will run on, these mini drivers are written in a virtual instruction set which the host OS requires an interpreter for.

UEFI提供了一种替代方法,可以通过一种更通用的机制来解决启动依赖性,以便出于相同目的使用小型启动驱动程序.

UEFI provides an alternate way have addressing the boot dependency via a more generic mechanism to use mini-boot drivers for the same purpose.

这篇关于Windows或Linux等现代操作系统如何知道特定于芯片组的内存映射?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆