学习linux内核

【2009-04-03】
linux-0.00的代码已经反复读过几遍,每一行都读的很明白了,感觉收获不小,虽然只有300多行代码,但是让我对X86体系架构有了更进一步的理解,像调度的基本原理、定时器的使用、A20地址线怎样开启、最底层的磁盘操作、最底层的显示控制、怎样从内核任务切到用户任务、GDTCPU的心跳是怎么来的等等技术细节,还有对GDT、LDT、TSS、IDT表结构,及表内描述符格式的印象更加深刻了,AT&T的汇编语法也得到了进一步的学习,还有很多技术细节都得到了加强学习,受益匪浅。

下一步准备把boot.s及head.s的实现流程整理出来。


【2009-03-23】
一提起来谁都说知道启动的大致流程,但很多细节是否真的清楚呢

1、bootsects.s在最后将System模块读入0x10000地址处,是怎样做的呢,提起来都说知道是调用DOS中断读的,那么从哪里读,硬盘还是软盘?读起来有什么区别,从哪个磁头开始读,一次读多少个字节,怎样知道全读完了,呵呵,这就是细节

2、IA32在进入保护模式时有1MB内存的限制,怎样突破此限制,为保护模式提供更多的内存访问范围?

开启A20地址线呗。

那怎样开启A20地址线?

写寄存器呗。

跟没说一样,难道要点击确定按钮不成!?写哪个寄存器,再说也根本不是写寄存器,纯属瞎蒙。

开启A20地址线需要写端口,写哪个端口,地址是多少,是直接把一个值写到端口上去,还是有写端口的协议,写端口的协议是怎样操作的,这些就是细节!

待续......
 

你可能感兴趣的:(linux,学习,操作系统)