0

我开始学习 Linux 操作系统的启动过程。它说处理器执行的第一个程序是BIOS. 我想知道instruction pointer微处理器执行的第一条指令的内容是什么?

而且,这些BIOS指令是否真的被带入main memory执行?如果是,那么这些指令在哪里加载,我的意思是starting address. 如果不是,是什么原因没有将它们带入记忆?

除此之外,interrupt vector table实际居住在哪里?RAM还是ROM??

4

2 回答 2

2

注意:这都是针对 x86 的。对于其他平台,这可能会有所不同。

指令指针首先指向什么,这取决于。通常,处理器会在复位时将其设置为 0,但它是由处理器定义的,最终由谁来定义。在 x86 的情况下,它将跳转到 0xFFFFFFF0 ( source )。这将只包含跳转到 BIOS 代码的有用部分。

然后您的 BIOS 需要开始设置您的系统。为此,它直接从其 ROM 芯片执行,因为您的内存现在尚未正确初始化。这是特定于平台的,但通常在 x86 上,BIOS 会将 CPU 置于缓存即 RAM 模式,允许它在设置内存时进行一些临时存储。

然后它将设置系统的其余部分。这包括 IVT,它位于内存底部 (0x0) 和其他有用的东西(源 1源 2)。

于 2012-10-09T15:42:39.480 回答
0

BIOS与操作系统无关。这取决于处理器架构,您需要研究特定的处理器开发人员指南才能找到答案。

对于基于 x86 的机器,指令指针指向 ROM 中的最后一个内存位置,其中包含第一条 BIOS 指令的起始地址。使用跳转地址处理器执行 BIOS 例程,然后将控制权交给启动设备

于 2012-10-09T15:32:56.530 回答