linux0.11内核加载过程(一)

本文深入解析了电脑开机初始化过程,从CS=0xFFFF、IP=0x0000开始,BIOS启动检测显卡内存并加载中断向量表、BIOS数据区,接着加载操作系统内核程序,包括bootsect的加载、内存规划、复制和执行setup程序等关键步骤。

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提供的中断服务程序从设备上提取内核运行所需的机器系统数据 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值