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