勢是未來發(fā)展的大勢。操作系統(tǒng)的作用不言而喻,它是現(xiàn)代計算平臺的核心支撐,向下負責硬件資源,向上控制軟件程序。如果把芯片比作一個人的心臟,那么操作系統(tǒng)的地位無疑是一個人的靈魂,面對”卡脖子“的歷史階段,學習操作系統(tǒng)迫在眉睫。
道是事物背后的規(guī)律。智能終端使操作系統(tǒng)有了更好的落地,回顧歷史,每一次隨著智能終端的發(fā)展,都會帶來翻天覆地的變化。隨著5G帶來的低延時,高吞吐,廣連接,以及異構(gòu)設備的蓬勃發(fā)展,我們正在進入萬物互聯(lián)的新世界。萬物互聯(lián)的世界對傳統(tǒng)單一操作系統(tǒng)提出了新的需求,比如微軟新研究的Windows CoreOS,谷歌新研究的Fuchsia,華為新研究的鴻蒙等,它們都是為萬物互聯(lián)新時代而生的新的操作系統(tǒng)。
除了國家和時代的需要,操作系統(tǒng)也能為你的職業(yè)發(fā)展保駕護航。眾所周知,操作系統(tǒng)作用于硬件上第一層軟件,也是其它軟件的基礎,承上啟下,實現(xiàn)它,你要了解硬件體系 ,而對它本身的了解 ,就相當是擁有了武俠片中的內(nèi)功 ,一旦有了雄厚的內(nèi)功,其它武功你一看就明白,一學就會,任何招式你和別人打出去的威力就不是一個級別。這種幫助無論對嵌入式開發(fā)者,還是對互聯(lián)網(wǎng)程序員都是非常明顯的。
術(shù)是技術(shù)層面的操作方法。那么,如何學習操作系統(tǒng)?內(nèi)核涉及到的模塊很多,包含內(nèi)存管理,進程管理,中斷管理,同步機制,文件系統(tǒng),電源管理,網(wǎng)絡等。不同模塊之間又是關聯(lián)的,想要精通這些模塊沒有好的學習方法,基本無從下手。雖然”Talk is cheap. Show me the code“,但除非你本身就是做內(nèi)核相關工作的,否則我不推薦大家把內(nèi)核源碼通讀一遍,因為首先大部分小伙伴自己工作的時間已經(jīng)夠辛苦,工作之余并沒有大量的時間去通讀。其次即使你啃完了代碼,但手頭的工作和內(nèi)核關系不大,沒有工作的實踐,過段時間還是會忘掉。
這里我建議在閱讀代碼時注意邏輯性,不要摳細節(jié),遇到難點跳過,結(jié)合整段功能去閱讀,等有了整體框架的了解后再根據(jù)工作中的需要去深挖細節(jié)。要時刻記住自己想要解決的問題是什么,無關的代碼能繞開的就繞開。吾生有涯,而知無涯,我們只挑對我們有用的進行學習。
這里提供內(nèi)存管理和進程管理兩個模塊講解,個人認為內(nèi)存管理和進程管理是內(nèi)核的基石,是打通操作系統(tǒng)任督二脈的基礎。我們知道,一個操作系統(tǒng)的最終目的是運行多個程序。一個程序要運行,首先要加載,然后執(zhí)行,也就是說程序的運行離不開內(nèi)存的支撐。多個程序要運行,需要調(diào)度,調(diào)度的策略又離不開進程管理。所以說,理解了內(nèi)存管理和進程管理,也就理解了操作系統(tǒng)的核心。