1,电脑加电初始化CS=0xFFFF, IP=0x0000,CS:IP = 0xFFFF0,而0xFFFF0这个位置就是BIOS程序的入口地址。(BIOS在主机板上的一块很小的ROM芯片里)。
2,BIOS启动,检测显卡内存……并在内存中加载中断向量表和中断服务程序(这对启动操作系统至关重要)。0x0000~0x003FF共1K内存空间构建中断向量表,0x00400~0x004FF共256字节构建BIOS数据区,在0xE05B处加载了8K左右的与中断向量表相应的若干终端服务程序。
3,加载操作系统内核程序
3.1 BIOS中断 int 0x19h 调用“启动加载服务程序”把磁盘第一扇区的bootsect(512B)的内容加载到内存。0x07C00处
3.2 bootsect加载第二和第三批代码
3.2.1 bootsect对内存规划
setup程序的扇区数和被加载到的位置(SETUPLEN, SETUPSEG)
启动扇区被BIOS加载的位置BOOTSEG,及其被移到的新位置INITSEG
kernel被加载的位置 SYSSEG,内核的末尾位置ENDSEG
根文件系统设备号ROOT_DEV
3.2.2 复制bootseg到INITSEG处 256B
3.2.3 将setup程序加载到内存中
init 0x13h(磁盘服务程序)4个扇区 90200开始与bootsec紧邻
3.2.4执行setup,利用BIOS提供的中断服务程序从设备上提取内核运行所需的机器系统数据
本文深入解析了电脑开机初始化过程,从CS=0xFFFF、IP=0x0000开始,BIOS启动检测显卡内存并加载中断向量表、BIOS数据区,接着加载操作系统内核程序,包括bootsect的加载、内存规划、复制和执行setup程序等关键步骤。
&spm=1001.2101.3001.5002&articleId=8836946&d=1&t=3&u=f85b34e45d9c49999dda6b67db20ecbd)
3721

被折叠的 条评论
为什么被折叠?



