慕課18原創作品轉載請注明出處 + 《Linux內核分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000
< 一 >、linux內核學習心得:
linux內核是一個非常龐雜的系統體系,既是因為它功能強大,也是是因為它對不同處理器架構、硬件平台的支持。在學習和分析linux內核的時候應該選定一款處理器平台去深入探究,然而這也不是那麼容易就能做到的,因為要高效穩定的實現進程創建、調度、內存管理等功能本身就是一件非常復雜、精益求精的事情,而且linux是一個開源的操作系統,由全世界的資深編程人員在自發的開發與維護,所以內核代碼的風格各不相同,這在變量命名、函數接口定義等方面很突出,也使得很多代碼感覺在功能上有重復,所以在讀linux內核源碼的時候會很吃力,對於我們初學者而言不可能一遍就能得其精髓,必須得反復的看(所以第一遍沒看懂的地方,該跳就跳吧
),等到整體框架明朗了再回去推敲那些晦澀的代碼可能會更有效一點。
< 二 >、課程筆記
一、計算機是如何工作的?
/content/9992158.html
二、操作系統是如何工作的?
/content/9992168.html
三、構造一個簡單的Linux系統MenuOS
http://www.cnblogs.com/PINN/p/5267217.html
四、扒開系統調用的三層皮(上)
/content/9992172.html
五、扒開系統調用的三層皮(下)
/content/9992175.html
六、進程的描述和進程的創建
/content/9992178.html
七、可執行程序的裝載
/content/9992180.html
八、進程的切換和系統的一般執行過程
/content/9992182.html
< 三 >、學習linux內核的總結:
通過對linux內核分析這門課的學習的收獲:
從底層的匯編語言開始,對程序嵌套調用的過程中函數的參數保存和堆棧變化;
linux系統如何在各進程之間自由切換,從而實現在一台計算機上“同時”運行多個任務,並通過簡單的匯編代碼模擬上下文的切換;
權限較低的用戶程序如何通過系統調用訪問內核資源,如何在用戶態與內核態之間進行切換;
內核怎樣創建一個進程、進程有哪些組成部分、涉及哪些重要的數據結構,以及有哪些方式可以創建一個進程,不同的方式創建的進程有何異同等;
如何將一個程序的源碼編譯成一個可執行的二進制程序,靜態庫文件與動態鏈接庫文件的制作方法以及兩者之間的異同,和如何將可執行的程序加載到內存中作為計算機中的一個任務運行。
深入分析linux內核在如何實現上下文的切換,以及內核什麼時候對是否需要調度進行檢查即任務的調度時機,內核的調度機制,如何實現效率優先兼顧公平等問題。
這門課程的遺憾之處在於:
課時太少!像內核的文件管理、內存管理、進程通信等好多內容還沒有介紹。 不過師父領進門修行在個人,linux內核的學習與分析,本來就該是每個人自己的事情,任重道遠!