天天看點

學習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位址線需要寫端口,寫哪個端口,位址是多少,是直接把一個值寫到端口上去,還是有寫端口的協定,寫端口的協定是怎樣操作的,這些就是細節!

待續......

繼續閱讀