对于 BIOS,维基百科指出:
BIOS 内存的地址位于计算机首次启动时将执行的位置。然后跳转指令指示处理器开始执行 BIOS 中的代码。
我知道 BIOS 存在于非易失性存储器中。但它必须加载到 RAM 中才能执行。那么谁将 BIOS 加载到 RAM 中呢?
我还读到在启动时加载了内存映射。BIOS 是否加载此内存映射?存储在哪里?
对于 BIOS,维基百科指出:
BIOS 内存的地址位于计算机首次启动时将执行的位置。然后跳转指令指示处理器开始执行 BIOS 中的代码。
我知道 BIOS 存在于非易失性存储器中。但它必须加载到 RAM 中才能执行。那么谁将 BIOS 加载到 RAM 中呢?
我还读到在启动时加载了内存映射。BIOS 是否加载此内存映射?存储在哪里?
初次开机时,BIOS 直接从 ROM 执行。ROM 芯片映射到处理器内存空间中的固定位置(这通常是芯片组的一个特性)。当 x86 处理器退出复位后,它会立即从 0xFFFFFFF0 开始执行。
但是,直接从 ROM 执行非常慢,因此 BIOS 所做的第一件事通常是将 BIOS 代码复制并解压缩到 RAM 中,然后从那里执行。当然,必须先初始化内存控制器!BIOS 会事先处理好这件事。
内存映射布局因系统而异。开机时,BIOS 将查询连接的 PCI/PCIe 设备,确定需要哪些资源,并将它们放置在内存映射中的最佳位置。如果一切正常,内存映射设备不应与 RAM 重叠。(请注意,在 RAM 大于 3GB 的 64 位系统上,事情会变得复杂,因为您需要在 RAM 中间为 32 位 PCI/PCIe 设备设置一个“孔”。一些早期的 x64 BIOS 和芯片组对此存在问题.)