BIOS 是直接读取引导加载程序还是将其加载到 RAM 中?

BIOS 是直接读取引导加载程序还是将其加载到 RAM 中?

我试图了解启动过程的第一步。

  1. CPU读取BIOS

    • 它读取固定地址指令
    • 会跳转到第一个BIOS指令地址
    • 它将执行代码
    • 它将执行“开机选择测试”,检查设备并找到第一个可启动设备
  2. 然后 Bios 将MBR 至加载主引导加载程序

  3. 主引导加载程序将执行加载程序的第二阶段(例如:Grub)
  4. 加载器的第二阶段将内核加载到内存中

我的问题是:

  • 当BIOS加载内存中的主引导加载程序,我们是在谈论 RAM 内存吗?
  • 中央处理器可以吗直接地址从 HDD(读取指令)而不将内容加载到 RAM 中(我们在这里忽略性能问题)?
  • 对于 BIOS 来说同样的问题:它是直接读取还是在执行前加载到 RAM 中?

答案1

谢谢@slm,我找到了大部分答案。

当 BIOS 读取并加载内存中的主引导加载程序时,我们是在谈论 RAM 内存吗?

是的,我们愿意。 BIOS将引导加载程序代码加载到特定地址( 0x7c00),然后跳转到该地址执行指令。

CPU是否可以直接从HDD寻址(读取指令)而不将内容加载到RAM中(这里我们忽略性能问题)?

我不认为CPU可以执行不在内存地址空间中的指令,但如果我错了,请纠正我(Can Iexecute an instructions from the I/O address space?)。

对于 BIOS 来说同样的问题:它是直接读取还是在执行前加载到 RAM 中?

BIOS是直接读取的:内存地址空间中的某些地址区域直接重定向到ROM内存。

来源:http://duartes.org/gustavo/blog/post/how-computers-boot-up/

参考

答案2

CPU 读取 BIOS [...]

这是一个有点简化的观点,但基本思想是正确的。典型的初始化代码实际上由几个连续的部分组成。

然后 Bios 将读取 MBR 以加载主引导加载程序

这是一个传统的 BIOS。现代 PC BIOS 具有标准化的引导加载程序接口:UEFI。非 PC 平台不会将制造商提供的引导加载程序称为“BIOS”。

当 BIOS 读取并加载内存中的主引导加载程序时,我们是在谈论 RAM 内存吗?

是的。没有其他存储器可以写入(在正常操作下)。

CPU是否可以直接从HDD寻址(读取指令)而不将内容加载到RAM中(这里我们忽略性能问题)?

不。据我所知,没有任何架构具有可由 CPU 寻址的磁存储。操作系统中总是需要一些代码来访问硬盘。

对于 BIOS 来说同样的问题:它是直接读取还是在执行前加载到 RAM 中?

这取决于硬件。 ROM 或闪存中的某些代码可以直接从 ROM 执行。通常,除了从 ROM(或者我认为是 PC 硬件上的 EEPROM)执行的一些初始引导加载程序代码之外,代码会首先复制到 RAM 中,因为 RAM 速度更快。

相关内容