說說我們以前的培訓經驗。先看Unix核心相關的書籍,瞭解核心的經典實現方法,然後再結合原始碼去研究Linux核心。這樣做的原因是避免從一開始就陷入細節。核心重點關注這幾個部分:程序管理及排程,記憶體管理,檔案及檔案系統,Cache,I/O,SMP(多CPU)。Unix核心推薦很老的一本書《UNIX作業系統設計》,英文原版的叫做《The Design of The UNIX Operating System》。重點關注這些章節(我手上拿的是英文版的):程序管理及排程:
The Structure of ProcessesProcess ControlPrecess Scheduling and Time記憶體管理:Memory Management Policies 檔案及檔案系統:The Buffer CacheInternal Representation of FilesSystem Calls for the File System Linux核心就看那本經典的基於2.6版寫的書《深入理解Linux核心》。這本書相當的枯燥,最好結合實際的程式碼看,可以瞭解它們是如何實現的。給幾個建議先:細看的時候,不用按章節的順序去看,而是最好是從點到面,先了解一些基本的實現方法,再去結合程式碼把這些點穿起來。重點關注這些:程序(包括管理和排程),地址空間,記憶體管理,檔案及VFS,Page Cache(頁快取記憶體),PFRA,I/O及裝置驅動等等。積極的去探索一些書上沒有詳細說明,但是核心中又實現了的;或者是那些核心程式碼已經有很大改變的部分。例如:電梯演算法(CFQ,紅黑樹),通用Block層的I/O請求佇列和排程,基於VFS之上的具體檔案系統的實現(如ext2/3,YAFFS),頁從分配到回收的整個過程,裝置驅動的具體實現(如USB,儲存裝置)等等。自己畫圖、作筆記,把重要知識點用自己能理解的方式全部記錄下來,因為如果你不用,也許半年之後就忘的都差不多了。有一些簡單的圖片和筆記往往能快速的回憶起來。這幾本書作為輔助也相當的棒:《Linux裝置驅動程式》,《深入理解計算機系統》,《Professional Linux Kernel Architecture》,還有相當經典的fudan_abc寫的那一套Linux核心程式碼分析。不過在做所有的這些之前,請把C語言學好,並且去了解一些簡單的Shell的語法。推薦一本Shell的書籍:《UNIX Shells by Example, 4th Edition》。
說說我們以前的培訓經驗。先看Unix核心相關的書籍,瞭解核心的經典實現方法,然後再結合原始碼去研究Linux核心。這樣做的原因是避免從一開始就陷入細節。核心重點關注這幾個部分:程序管理及排程,記憶體管理,檔案及檔案系統,Cache,I/O,SMP(多CPU)。Unix核心推薦很老的一本書《UNIX作業系統設計》,英文原版的叫做《The Design of The UNIX Operating System》。重點關注這些章節(我手上拿的是英文版的):程序管理及排程:
The Structure of ProcessesProcess ControlPrecess Scheduling and Time記憶體管理:Memory Management Policies 檔案及檔案系統:The Buffer CacheInternal Representation of FilesSystem Calls for the File System Linux核心就看那本經典的基於2.6版寫的書《深入理解Linux核心》。這本書相當的枯燥,最好結合實際的程式碼看,可以瞭解它們是如何實現的。給幾個建議先:細看的時候,不用按章節的順序去看,而是最好是從點到面,先了解一些基本的實現方法,再去結合程式碼把這些點穿起來。重點關注這些:程序(包括管理和排程),地址空間,記憶體管理,檔案及VFS,Page Cache(頁快取記憶體),PFRA,I/O及裝置驅動等等。積極的去探索一些書上沒有詳細說明,但是核心中又實現了的;或者是那些核心程式碼已經有很大改變的部分。例如:電梯演算法(CFQ,紅黑樹),通用Block層的I/O請求佇列和排程,基於VFS之上的具體檔案系統的實現(如ext2/3,YAFFS),頁從分配到回收的整個過程,裝置驅動的具體實現(如USB,儲存裝置)等等。自己畫圖、作筆記,把重要知識點用自己能理解的方式全部記錄下來,因為如果你不用,也許半年之後就忘的都差不多了。有一些簡單的圖片和筆記往往能快速的回憶起來。這幾本書作為輔助也相當的棒:《Linux裝置驅動程式》,《深入理解計算機系統》,《Professional Linux Kernel Architecture》,還有相當經典的fudan_abc寫的那一套Linux核心程式碼分析。不過在做所有的這些之前,請把C語言學好,並且去了解一些簡單的Shell的語法。推薦一本Shell的書籍:《UNIX Shells by Example, 4th Edition》。