近閑暇之余翻出大學時期操作系統(tǒng)課本,以系統(tǒng)架構(gòu)的角度重新學習操作系統(tǒng)。

  當不再把操作系統(tǒng)當作技術(shù)和知識點來學習的時候,完全有了另外一種認識,以前感覺操作系統(tǒng)是個集各種高端技術(shù)的領(lǐng)域,是那些技術(shù)大牛搞的領(lǐng)域,現(xiàn)在的感覺是操作系統(tǒng)實際上是個管理制度的集合,像一個公司甚至是社會,為了讓這個公司運行正常,管理者想出各種辦法制定了各種政策,很多政策的制定并不是天才們的憑空發(fā)明,而是在被各種問題給“逼”出來的。操作系統(tǒng)的發(fā)展史說明了這一點,操作系統(tǒng)的發(fā)展是在硬件不斷發(fā)展和人的需求不斷升級給逼出來的。

  學習操作系統(tǒng)先好不要陷入到技術(shù)細節(jié)里,而是站在設計者的角度,想想為什么要做出如此設計,是遇到了什么問題。比如關(guān)于鎖的設計,實際上是當時需要一個玩意來保證一組操作能不受其他操作的打擾,而要設計鎖需要有原子性操作的底層保證和對鎖的合理使用,這些東西當然基于各種“高端”技術(shù),但透過技術(shù)細節(jié),發(fā)現(xiàn)只是為了實現(xiàn)一個約定的制度。再比如各種進程調(diào)度算法,實際上是需要一個規(guī)則來公平地有效地把CPU分配給各個需要資源的進程,這其實是個各行各業(yè)都會面臨的共性問題,而各種調(diào)度算法也在其他領(lǐng)域能找到原型,基于的是一些共性的原理,只是實現(xiàn)方式不同罷了。

  因此,操作系統(tǒng)的精髓在于制定的各種制度和原則,學習操作系統(tǒng)也應該重點學習這些東西。對于架構(gòu)師而言,操作系統(tǒng)也折射出一個道理,的系統(tǒng)不是高端技術(shù)的堆砌,而是對特定問題采取有效合適的制度和實現(xiàn)。