当前位置: 技术问答>linux和unix
Linux-0.11内核引导中关于bootsect.s的问题
来源: 互联网 发布时间:2016-12-30
本文导语: 最近刚刚开始学习操作系统,对于linux的引导过程(参考的书籍是赵老师的《Linux内核完全剖析-0.11》)中的bootsect.s文件,不明白它为什么要将自己从0x7c00处移动到0x9000处,直接在0x7c00处加载setup.s不可以吗?觉得这步移...
最近刚刚开始学习操作系统,对于linux的引导过程(参考的书籍是赵老师的《Linux内核完全剖析-0.11》)中的bootsect.s文件,不明白它为什么要将自己从0x7c00处移动到0x9000处,直接在0x7c00处加载setup.s不可以吗?觉得这步移动多余,请问我是不是错了?
|
嗯,上面记错了, 不是中断表,是内核.
!bootsect.s被bios启动程序加载至0x7c00 31k处,并将自己移动到地址0x90000 576k处,并跳转到那里。
!
!它然后利用bios中断将setup直接加载到自己后面0x90200 576.5k,并将system加载到地址0x10000处。
!
!注意 : 目前的内核系统最大的长度限制为8*65536 512k字节,即使是在将来这也应该没有问题的
0x90000 - 0x10000 = 0x80000 就是说留给 system的最大空间是是512k字节.
!bootsect.s被bios启动程序加载至0x7c00 31k处,并将自己移动到地址0x90000 576k处,并跳转到那里。
!
!它然后利用bios中断将setup直接加载到自己后面0x90200 576.5k,并将system加载到地址0x10000处。
!
!注意 : 目前的内核系统最大的长度限制为8*65536 512k字节,即使是在将来这也应该没有问题的
0x90000 - 0x10000 = 0x80000 就是说留给 system的最大空间是是512k字节.
|
可以这样做.
这个是个人实现的选择.
放在0x10000处有一个好处就是靠进低地址, 再低位置就是中断表.
而不是放在更高的地址, 我觉得这样方面后面的内存管理.
这个是个人实现的选择.
放在0x10000处有一个好处就是靠进低地址, 再低位置就是中断表.
而不是放在更高的地址, 我觉得这样方面后面的内存管理.