這門課的精髓在于,不僅教會你如何分析Linux內(nèi)核,更教你做事的方法論:“天下難事必做于易,天下大事必做于細”,對于代碼量龐大無從下手的內(nèi)核,我們從小處入手,步步為營,最終掌握全局。
Linux內(nèi)核分析的過程,是對自己肯定,否定,再肯定并不斷重復這個循環(huán)的過程。作為coder,唯一的快感就是有一種自我肯定的得意。然而這個過程很快會被無情的打破,因為這么龐大的內(nèi)核,我們始終有一種盲人摸象的茫然。
進程調(diào)度算法從實現(xiàn)的角度看僅僅是從運行隊列中選擇一個新進程,選擇的過程中運用了不同的策略而已。對于理解操作系統(tǒng)的工作機制,反而是進程的調(diào)度時機與進程的切換機制更為關(guān)鍵。schedule()函數(shù)用來選擇一個新的進程來運行,并調(diào)用context_switch()進行上下文的切換,這個宏調(diào)用switch_to()來進行關(guān)鍵上下文切換,其中pick_next_task()函數(shù)封裝了進程調(diào)度算法。