我开始学习 Linux 操作系统的启动过程。它说处理器执行的第一个程序是BIOS
. 我想知道instruction pointer
微处理器执行的第一条指令的内容是什么?
而且,这些BIOS
指令是否真的被带入main memory
执行?如果是,那么这些指令在哪里加载,我的意思是starting address
. 如果不是,是什么原因没有将它们带入记忆?
除此之外,interrupt vector table
实际居住在哪里?RAM
还是ROM
??
注意:这都是针对 x86 的。对于其他平台,这可能会有所不同。
指令指针首先指向什么,这取决于。通常,处理器会在复位时将其设置为 0,但它是由处理器定义的,最终由谁来定义。在 x86 的情况下,它将跳转到 0xFFFFFFF0 ( source )。这将只包含跳转到 BIOS 代码的有用部分。
然后您的 BIOS 需要开始设置您的系统。为此,它直接从其 ROM 芯片执行,因为您的内存现在尚未正确初始化。这是特定于平台的,但通常在 x86 上,BIOS 会将 CPU 置于缓存即 RAM 模式,允许它在设置内存时进行一些临时存储。
BIOS与操作系统无关。这取决于处理器架构,您需要研究特定的处理器开发人员指南才能找到答案。
对于基于 x86 的机器,指令指针指向 ROM 中的最后一个内存位置,其中包含第一条 BIOS 指令的起始地址。使用跳转地址处理器执行 BIOS 例程,然后将控制权交给启动设备