bzImage和zImage的区别

bzImage和zImage的区别来自于保护模式代码的放置位置:
1.众所周知,内核映像包括两部分代码:实模式代码和保护模 式代码,当引导装载器装载内核映像到代码段内存时,分别放置实模式代码和保护模式代码到不同的位置,然后进入实模式代码执行,实模式代码执行中转入CPU 保护模式,开始执行32位保护模式代码。

2.不管是zImage还是bzImage,他们的实模式代码部分都被装入0x9000:0000(物理地址 0x90000)-0x9A00:0000(物理地址0x9A000),其中0x9000:0000-0x9020:0000是内核引导扇区,现在只是些 假代码,无用。0x9020:0000-0x9800:0000是内核实模式代码。内核从这里开始执行。

3.bzImage的内核映像中的保护模式代码,由引导装载器直接装载入高位内存(物理地址0x100000),就是1M以上。内核实模式代码在完 成检查引导装载器兼容性(旧loader可能把实模式代码放在不是0x90000的其他地方,这是需要移到这里),A20(不明白:-(),初始化 gdt,idt(全局描述表,和中断描述表)之后,就将CPU初始化为保护模式,然后跳转到0x100000。至此内核活了起来,他进入了强大的32位线 性地址空间执行。由于bzImage是在1M以上,所以它的大小理论上是没有限制的。

4.zImage的的内核映像中的保护模式代码由引导装载器装载入低位内存区0x1000:0000-0x9000:0000(物理地址 0x10000-0x90000),然后实模式代码在把它移到从64K=0x10000位置移到4K位置0x1000,然后做和bzImage实模式代码 一样的事情,如:检查引导装载器兼容性,A20,初始化gdt,idt(全局描述表,和中断描述表),最后进入保护模式代码执 行,0x100:0000(物理地址0x1000)位置。所以我们看到保护模式代码范围必须是0x10000-0x90000,大小是512K字节,再大 就会覆盖实模式安装代码。所以zImage的内核最大只能512K.


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值