我从 osdev 下载了几个引导加载程序并成功加载了内核。但现在我想学习引导加载程序背后的理论。我想知道系统启动的原因以及引导加载程序代码背后的所有内容。谁能给我一个链接或一本书的链接?提前致谢。系统是x86。
问问题
1603 次
1 回答
2
https://pdos.csail.mit.edu/6.828/2014/xv6/book-rev8.pdf
在附录 B 中,它在第一段中给出了一个简短的概述:
当 x86 PC 启动时,它开始执行称为 BIOS 的程序,该程序存储在主板上的非易失性存储器中。BIOS 的工作是准备硬件,然后将控制权转移给操作系统。具体来说,它将控制转移到从引导扇区(引导磁盘的第一个
512
字节扇区)加载的代码。引导扇区包含引导加载程序:将内核加载到内存中的指令。BIOS 在内存地址加载引导扇区,0x7c00
然后跳转(设置处理器的%ip
) 到那个地址。当引导加载程序开始执行时,处理器正在模拟 Intel 8088,加载程序的工作是将处理器置于更现代的操作模式,将 xv6 内核从磁盘加载到内存中,然后将控制权转移给内核。xv6 引导加载程序包含两个源文件,一个是用 16 位和 32 位 x86 程序集 (bootasm.S
; (8900) ) 组合编写的,另一个是用 C (bootmain.c
; (9000) ) 编写的。
于 2017-03-06T14:58:24.173 回答