linux0.11 引导启动程序目录boot/分析

     boot/包含三个汇编文件:bootsect.s,setup.s,head.s。bootsect.s程序是磁盘引导块程序,编译后会驻留在磁盘的第一个扇区中(引导扇区,0磁道,0磁头,第一个扇区),在PC加电ROM-BIOS自检后,将被BIOS加载到内存0X7C00处执行。setup.s程序主要用于读取机器的硬件配置参数,把内核模块system移动到适当的内存位置处。head.s程序会被编译连接在system模块的最前部分,主要进行硬件设备的探测设置和内存管理页面的初始化设置。

 

     BIOS:       PC上电后,执行ROM-BIOS中0XFFFF0处代码,将编译后的bootsect模块加载到0X7C00处,在绝对地址0处加载1KB的中断向量表。

 

     bootsect:将自己(bootsect.s而并非编译后的bootsect模块)移动到0X90000处,利用BIOS中断int 0x13将setup模块从此磁盘第2个扇区处读4个扇区的数据到0X90200处,获取磁盘驱动器参数(为读system模块做准备),显示"loading system", 将system模块读到0X10000处,确定根文件系统的设备号。

 

     setup.s: 利用BIOS中断int 0x10,int 0x15获取机器的硬件配置参数,将system模块从0X10000移动到0X00000处,加载idt, gdt,开启A20地址线,对8259A编程重新设置IRQ0~IRQ15的中断向量号,将CRO中的PE位置位,进入保护模式。

 

     head.s:   加载各数据寄存器,设置并加载idt,gdt,检查A20地址线,数字协处理,将内核页目录和4个页表放到0X00000处并设置其页表项,将CRO的PG位置位开启分页机制,跳转到init/main.c的main函数处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值