深入介紹Linux內核(一)
第一章
我們在這里介紹的Linux內核,可以分為15章,其中Linux的誕生、名稱(chēng)來(lái)源和眾多的開(kāi)發(fā)者,我都不再重復的介紹了,開(kāi)始我們講解的是電腦硬件的基本知識。硬件與Operation systems有著(zhù)密切的關(guān)聯(lián)。如果想徹底了解Operartion systems的執行全部過(guò)程,那首先就要了解它的硬件運作環(huán)境,特別的是CPU多工執行機制。在這里我們也詳細的來(lái)介紹電腦硬件組成、編制Linux內核程序使用的程序語(yǔ)言以及Intel 80x86保護模式下的程序設計原理;這都是對研究?jì)群斯ぷ魅藛T有所幫助的;從第8章-第13章是介紹內核代碼的主要部分。最后一節,我們是介紹如何使用PC機模擬軟件系統Bochs對Linux 0.12內核進(jìn)行多樣式的實(shí)驗,Bochs是一種開(kāi)源且高度可移植的IA-32(x86)PC模擬器,用C++寫(xiě)成,能夠在大部分常見(jiàn)的平臺上運行。它包括了對Intel x86 CPU,通用I/O設備,和定制BIOS的模擬。如果想進(jìn)一步了解的話(huà),請大家到"http://bochs.sourceforge.net"網(wǎng)站瀏覽。
為了便於大家閱讀,在本文章的附錄中單獨列出了內核中要用到的有關(guān)PC硬體方面的資訊。在參考文獻中,我們僅列出了在閱讀原始碼時(shí)可供參考的書(shū)籍、文章等資訊,我們不想給大家一大堆的繁雜凌亂的文獻列表。比如在引用Linux文檔專(zhuān)案LDP (Linux Document Project) 中的文件時(shí),我們會(huì )列出具體需要參考哪一篇HOWTO文章。
Linus在最初開(kāi)發(fā)Linux作業(yè)系統內核時(shí),主要參考了3本書(shū)。一本是Maurice J.Bach著(zhù)的《The Design of the Unix Operating System》,該書(shū)描述了UNIX System V內核的工作原理和資料結構,(這本書(shū)有中文譯本,北大版與機工版。)Linus使用了該書(shū)中很多函數的演算法,Linux內核原始碼中很多重要函數的名稱(chēng)都取自該書(shū)。因此,在閱讀本書(shū)時(shí),這是一本必不可少的內核工作原理方面的參考書(shū)籍。另一本是John H.Crawford, Patrick P.Gelsinger 等編著(zhù)的《Programming the 80386)》 ,是講解80x86下保護模式程式設計方法的好書(shū)。
另一本就是Andrew S.Tanenbaum和Albert S Woodhull著(zhù)的《Operating Systems, Design and Implementation》一書(shū)。Linus主要是使用了該書(shū)中描述的MINIX檔案系統1.0 版,而且在早期的Linux內核中也僅支援該檔案系統,所以在閱讀本書(shū)有關(guān)檔案系統一章內容時(shí),檔案系統的工作原理方面的知識完全可以從Tanenbaum的書(shū)中獲得。
在對每個(gè)程式進(jìn)行解說(shuō)時(shí),我們初步簡(jiǎn)單說(shuō)明程式的主要用途和目的、輸入輸出參數以及與其他程式的關(guān)系,然后列出程式的完整代碼並在其中對代碼進(jìn)行詳細注釋?zhuān)⑨寱r(shí)對原程式碼或文字不作任何方面的改動(dòng)或刪除,因為C語(yǔ)言是一種英語(yǔ)類(lèi)語(yǔ)言,程式中原有的少量英文注釋對常數符號、變數名等也提供了不少有用的資訊。在代碼之后是對程式更為深入的解剖,並對代碼中出現的一些語(yǔ)言硬體方面的相關(guān)知識進(jìn)行說(shuō)明。如果在看完這些信息后,再返回瀏覽一遍程式,能使你會(huì )有更深一層的體會(huì )。
對於閱讀本文章所需要的一些基本概念知識的介紹都散佈在各個(gè)章節相應的地方,這樣做主要是為了能夠方便的找到,而且在結合原始碼閱讀時(shí),對一些基本概念能有更深的理解。
最后要說(shuō)明的是當你已經(jīng)完全理解了本文所解說(shuō)的一切時(shí),並不代表你已經(jīng)成為一個(gè)Linux行家了,你只是剛剛踏上Linux的征途,具有了一定的成為一個(gè)Linux內核高手的初步知識。這時(shí)你應該去閱讀更多的原始碼,最好是循序漸進(jìn)地從1.0版開(kāi)始直到最新正在開(kāi)發(fā)中編號的版本。編者在編輯這文章時(shí)最新的Linux內核是2.6.12版。
注譯:
Stack - 堆疊 或者稱(chēng)呼為 堆棧
Segment - 段
Flag - 旗標 或者稱(chēng)呼為 標志
暫存器又稱(chēng)呼為寄存器
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。