终于坚持把Linux0.11内核给看了一下。懂了不少东西,心里面的疑惑解放了不少。
几点要点:
1、启动阶段,几个执行环境的切换:实模式--》“临时”保护模式--》“正式”保护模式。实模式到临时保护模式的切换,关键点在准备一个临时的GDT,必须包含代码段和数据段,而且必须包含所以线性地址空间(这个时候没有分页,也就是物理地址空间啦)。
2、GDT
需要一个描述符,是逻辑地址空间和线性地址空间对应(逻辑地址和线性地址一样);
3、BIOS
可以看出,进入内核代码后,原来BIOS基本没有用到。IDT所指向的中断/异常处理都是由内核相关的汇编代码或者C函数实现的。