开机的时候主板将首先从bios中获取数据,其中包含汇编代码这一类的东西,之后这些内容从bios移动到ram,之后告诉cpu将指令指针放到ram对应的位置,之后cpu就可以开始运行。
bios中的信息将会将引导加载程序grub加载到ram中,然后cpu就可以继续执行引导加载程序了。GRUB 是一个用于加载和管理系统启动的完整程序
引导加载程序将会知道分区表和文件系统,并因此可以处理目录结构,因此可以访问boot/grub/grub.cfg,这个式grub的设置文件。该设置文件将决定使用哪个操作系统
之后操作系统内核将会被复制到RAM中,然后cpu就能够执行操作系统内核。
操作系统开始时是32位结构,64位是后面切换过去的。
为了找到操作系统内核所在,需要设置esp寄存器到指定的地址,esp是堆栈指针寄存器用于指向栈顶。ebp存放的就是基指指针,用于指向栈帧的底部。SP,指针即地址,存放栈顶指针,目的就是,下一次对栈操作的时候,系统可以及时找到栈的当前位置
(116条消息) 从汇编角度理解 ebp&esp 寄存器、函数调用过程、函数参数传递以及堆栈平衡_ebp汇编_江下枫的博客-CSDN博客
为了让加载程序知道这是个操作系统内核,会设置魔术数为0x1badb002
0xB8000,是图形卡调用显示信息的位置
在boot/grub/grub.cfg中设置新操作系统的信息并且重启就能够见到新的操作系统了
标签:操作系统,grub,内核,开机,时候,指针,cpu,加载 From: https://www.cnblogs.com/uestc-du/p/17455911.html