LINUX内核启动流程-2

向32位模式转变,为main函数的调用做准备

1、关中断并将system移动到内存地址起始位置0x00000

1.1 关中断:将CPU的标志寄存器(EFLAGS)中的中断允许标志(IF)置0。

main函数中能够适应保护模式的中断服务体系被重建完毕才会打开中断,而那时候响应中断的服务程序将不再是BIOS提供的中断服务程序,取而代之的是由系统自身提供的中断服务程序。

关中断

EFLAGS:标志寄存器,存在于CPU中,32位,包含一组状态标志、控制标志及系统标志。

关中断(cli)和开中断(sti)操作将在操作系统代码中频繁出现,其意义深刻。目的是避免中断在此期间的介入。

CPU关中断为实模式下中断向量表和保护模式下中断描述符表(IDT)的交接工作。避免出现实模式的中断机制已经废除、保护模式的中断机制尚未完成的尴尬局面,从而出现系统崩溃。

2、setup程序做了一个影响深远的动作:将位于0x10000的内核程序复制至内存地址起始位置0x00000处!

复制system模块至内存起始处

复制动作将BIOS中断向量表和BIOS数据区完全覆盖,使它们不复存在。直到新的中断服务体系构

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值