linux启动过程

时间:2012-10-09 15:27:21

标签: assembly boot processor

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

此外,这些BIOS指令是否实际进入main memory执行?如果是,那么加载这些指令的位置,我的意思是starting address。如果不是,那是什么原因没有将它们带入记忆中?

除此之外,interrupt vector table实际存在于哪里? RAMROM ??

2 个答案:

答案 0 :(得分:2)

注意:这完全适用于x86。对于其他平台,这可能会有所不同。

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

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

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

答案 1 :(得分:0)

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

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