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