【文魁大腦讀書會】16/60馬帥《LINUX內(nèi)核0.11全面注釋》

閱讀時間:2015年10月27日20:00/21:17

閱讀技巧:略讀全書,細(xì)讀書中細(xì)節(jié)

讀書筆記:

打開內(nèi)核文件:

圖片發(fā)自簡書App

打開boot文件:

圖片發(fā)自簡書App

打開head.s文件

圖片發(fā)自簡書App

圖片發(fā)自簡書App

圖片發(fā)自簡書App

圖片發(fā)自簡書App

圖片發(fā)自簡書App

圖片發(fā)自簡書App

圖片發(fā)自簡書App

head.s 程序在被編譯后,會被連接成 system 模塊的最前面開始部分,這也就是為什么稱其為頭部 (head)程序的原因。從這里開始,內(nèi)核完全都是在保護(hù)模式下運(yùn)行了。heads.s 匯編程序與前面的語法 格式不同,它采用的是 AT&T 的匯編語言格式,并且需要使用 GNU 的 gas 和 gld 1 進(jìn)行編譯連接。因此請 注意代碼中賦值的方向是從左到右。

這段程序?qū)嶋H上處于內(nèi)存絕對地址 0 處開始的地方。這個程序的功能比較單一。首先是加載各個數(shù) 據(jù)段寄存器,重新設(shè)置中斷描述符表,共 256 項,并使各個表項均指向一個只報錯誤的啞中斷程序。然 后重新設(shè)置全局描述符表。接著使用物理地址 0 與 1M 開始處的內(nèi)容相比較的方法,檢測 A20 地址線是否 已真的開啟(如果沒有開啟,則在訪問高于 1Mb 物理內(nèi)存地址時 CPU 實際只會訪問(IP MOD 1Mb)地址 處的內(nèi)容),如果檢測下來發(fā)現(xiàn)沒有開啟,則進(jìn)入死循環(huán)。然后程序測試 PC 機(jī)是否含有數(shù)學(xué)協(xié)處理器芯 片(80287、80387 或其兼容芯片),并在控制寄存器 CR0 中設(shè)置相應(yīng)的標(biāo)志位。接著設(shè)置管理內(nèi)存的分 頁處理機(jī)制,將頁目錄表放在絕對物理地址 0 開始處(也是本程序所處的物理內(nèi)存位置,因此這段程序 將被覆蓋掉),緊隨后面放置共可尋址 16MB 內(nèi)存的 4 個頁表,并分別設(shè)置它們的表項。最后利用返回指 令將預(yù)先放置在堆棧中的/init/main.c 程序的入口地址彈出,去運(yùn)行 main()程序。

閱讀心得:感覺看了幾天書后,先開始讀不懂,現(xiàn)在感覺每個文件夾是的大的系統(tǒng),然后小文件就是一個小小的程序,把文件看成是一個小小的系統(tǒng)就會很好的理解書中所寫的內(nèi)容。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容