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