姓名:何偉欽html
學號:20135223linux
( *原創做品轉載請註明出處*)架構
( 學習課程:《Linux內核分析》MOOC課程http://mooc.study.163.com/course/USTC-100002900框架
學習Linux內核的心得和對linux系統的理解函數
時光匆匆,轉眼爲期十一週的學習結束了,猶在耳邊環繞的是孟老師詼諧幽默的言談和深刻透徹的講解。感謝中科大孟寧老師推出的《Linux內核分析》這門課程,使我這個在工做中使用多年的操做系統第一次能有機會分析的這麼透徹。post
在這爲數不長的幾周學習裏,對Linux系統的工做有了一些初步的瞭解,不能說太過深刻,可是至少心中有了一個具體的框架。在學習的過程當中,還參考了相應書籍幫助本身深刻理解Linux內核,如《Linux內核設計與分析》和《深刻理解計算機系統》。 第一週課程基礎知識的學習中,我掌握了計算機的結構--馮諾依曼體系結構以及x86彙編指令基礎。尤爲是x86彙編基礎,能夠說是貫穿了整個學習過程。我以爲老師的教學方式是十分優秀的,沒有一開始就講解,而是按部就班,先介紹基礎知識,而後再開始課程內容的教學,這樣對咱們這些沒有基礎的同窗是很合適的。第二週,老師經過對上週內容的補充教學,承上啓下的開始了操做系統的相關內容介紹,沒有絲毫突兀。除了知識的教學,老師還會佈置與知識相關的實驗,讓咱們經過本身動手實踐,更快的掌握課堂所學並對課堂知識有着更加深入的理解和掌握。第三週的構造一個簡單的Linux系統MenuOS,經過形象的比喻:三個法寶:存儲計算機、函數調用堆棧、中斷;兩個寶劍:中斷上下文的切換(保存現場和恢復現場)、進程上下文的切換以及對Linux內核的啓動過程的跟蹤調試,讓咱們很快對linux內核有了深入的認識。第四周、第五週兩週的時間對系統調用有了一個系統地介紹,讓我知道系統有內核態、用戶態之分,知道系統調用的過程,以及中斷處理程序。最後是整個系統調用的過程。都有着深入的認識。連續兩次的實驗是相互關聯,按部就班的讓我掌握系統調用。第六週雖篇幅少,但內容卻一點很多。從進程的基礎知識,基本概念,到進程的建立,再到最後讓我本身建立新進程,並分析其過程,這樣一系列學習下來,毫無疑問地掌握了進程的知識。第七週脫離了內核態,開始了用戶態的知識講解,但又不侷限於此,對其餘知識也有着涉及,例如:共享庫、動態連接、目標文件格式等知識,雖篇幅較少,但也有所涉及。實驗更加須要對linux有較爲全面的認識。第八週是最後一週,因此除了對進程最後一點知識的補充外,還有對整個linux系統的介紹,包括linux系統架構和執行過程,經過對進程切換和系統執行過程的測試,形象立體地向我展現了linux系統執行的過程。學習
在源代碼的分析上,主要經過調試源代碼進行分析,我以爲在從此的學習裏,我將會在Linux內核的分析裏,進行一些更深刻的學習,如進行一些實踐,編一個系統調用以便更好地瞭解Linux內核,並加深知識點對本身的印象。測試
最後,謝謝孟老師這幾周來的辛勤教導,老師辛苦了!url
做業目錄列表:spa
計算機是如何工做的
存儲程序計算機工做模型
32位X86彙編基礎
反彙編一個簡單的C程序
操做系統是如何工做的(三個法寶:
存儲程序計算機、函數調用堆棧、中斷機制
兩把寶劍:
中斷上下文、進程上下文的切換
)函數調用堆棧
藉助Linux內核部分源代碼模擬存儲程序計算機工做模型及時鐘中斷
構造一個簡單的操做系統內核
構造一個簡單的Linux系統MenuOS
Linux內核源代碼導讀
構造一個簡單的Linux系統
跟蹤調試Linux內核的啓動過程
系統調用1
使用庫函數觸發一個系統調用
C代碼中嵌入彙編代碼的寫法
使用嵌入式彙編代碼觸發同一個系統調用
系統調用在內核代碼中的處理過程
系統調用2
使用庫函數觸發一個系統調用
C代碼中嵌入彙編代碼的寫法
使用嵌入式彙編代碼觸發同一個系統調用
系統調用在內核代碼中的處理過程
進程的描述和進程的建立
程序和進程
程序的編譯、連接和可執行文件格式
進程的描述和程序的裝載
進程的切換和執行過程概覽
用戶態堆棧和內核態堆棧
進程上下文的保存和恢復
進程切換的關鍵代碼switch_to分析
這門課程就像一個嚮導,把我帶入Linux內核的大門。固然,想要深刻理解,僅靠聽這幾節課還遠遠不夠,須要在之後理論結合實際,吃透、摸準。經過這門課程的學習,使我在從此調試程序,分析問題的時候更有針對性,更便於找到緣由。
最重要的是找到了學習的方法。(觸類旁通,學會總結等等)
1.課程過短暫,對Linux內核分析也只是略懂皮毛而已,但願能夠進一步去了解Linux內核。
2.在學前沒有一個好的計劃,沒有跟上老師的教學速度
3.時間安排很差,有幾章學習時間比較緊湊,沒能好好吸取消化