linux 0.11 源碼學習(一)


linux源碼斷斷續續看過好多次,可能是工作中用到linux的項目也斷斷續續的,總感覺理解的東西還浮在面上。本系列文章記錄對linux 0.11版本源碼的學習,主要參考資料是趙炯的《Linux內核完全注釋》。記得買這本書的時候還在念研究生,當時是完全看不下去,工作這些年算是粗讀過,但都不求甚解,好像每次都有收獲,但每次都不敢說理解這1萬來行代碼。今年抽年前這一兩周又通讀了一遍,這篇文章就作為一個引子,等春節回來好好精讀一把整理出一批文章,算是傷其十指不如斷其一指吧。

linux 0.11版本相對於現在的2.6版本的內核(就是那本經典的《深入理解linux內核》)而言,真簡單很多了,從功能塊和核心文件看主要分解如下(待完善):

 

備注:在上面這些模塊中,我覺得比較復雜是系統調用execuve(把一個執行文件加載到內核),因為跨的模塊(內存管理、文件系統、塊設備驅動)比較多,又涉及到了保護模式的分段分頁,先記錄如下:

linux 0.11是通過加載XX.out的執行文件產生新的進程。linuxexec.c的do_execuve中加載執行文件,但此時該執行文件並沒有被加載到主存,只是分配了虛擬地址空間(即創建了頁表)。當CPU執行該進程時,會產生缺頁錯誤中斷,此時內存管理模塊的do_no_page會被調用,在這個函數中調用塊設備驅動的函數II_rw_blk()將相應的執行文件塊拷貝到主存。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM