10

对于 BIOS,维基百科指出:

BIOS 内存的地址位于计算机首次启动时将执行的位置。然后跳转指令指示处理器开始执行 BIOS 中的代码。

我知道 BIOS 存在于非易失性存储器中。但它必须加载到 RAM 中才能执行。那么谁将 BIOS 加载到 RAM 中呢?

我还读到在启动时加载了内存映射。BIOS 是否加载此内存映射?存储在哪里?

4

1 回答 1

15

初次开机时,BIOS 直接从 ROM 执行。ROM 芯片映射到处理器内存空间中的固定位置(这通常是芯片组的一个特性)。当 x86 处理器退出复位后,它会立即从 0xFFFFFFF0 开始执行。

但是,直接从 ROM 执行非常慢,因此 BIOS 所做的第一件事通常是将 BIOS 代码复制并解压缩到 RAM 中,然后从那里执行。当然,必须先初始化内存控制器!BIOS 会事先处理好这件事。

内存映射布局因系统而异。开机时,BIOS 将查询连接的 PCI/PCIe 设备,确定需要哪些资源,并将它们放置在内存映射中的最佳位置。如果一切正常,内存映射设备不应与 RAM 重叠。(请注意,在 RAM 大于 3GB 的 64 位系统上,事情会变得复杂,因为您需要在 RAM 中间为 32 位 PCI/PCIe 设备设置一个“孔”。一些早期的 x64 BIOS 和芯片组对此存在问题.)

于 2014-01-09T13:56:36.843 回答