當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 什么程度才算精通 Linux
Linux 是一個(gè)非常優(yōu)秀的操作系統(tǒng)。如果將操作系統(tǒng)比作一輛汽車,那 Linux 就是一輛性能優(yōu)越的爬山王,上山下海飛天無(wú)所不能。
如果你能駕馭這輛爬山王,一定不會(huì)只滿足于駕駛它上下班,不能只會(huì)掛擋、踩油門和控制方向之類的基本操作。我們想充分了解并掌握它,挖掘其更多潛能。但是,這個(gè)過(guò)程有相當(dāng)?shù)碾y度,但是你一旦能夠駕馭他就能夠享受其中的快樂(lè)。
01 / Linux 系統(tǒng)編程門檻
對(duì)于想學(xué)習(xí) Linux 系統(tǒng)編程的開(kāi)發(fā)人員來(lái)說(shuō),其難點(diǎn)在于,Linux 所囊括的技術(shù)點(diǎn)繁雜,往往不知從何下手,去買一本書(shū)來(lái)看發(fā)現(xiàn)有800頁(yè)看著看著就睡啦。
對(duì)于稍有些系統(tǒng)編程經(jīng)驗(yàn)的 Linux 開(kāi)發(fā)者來(lái)說(shuō),難點(diǎn)往往在于,缺乏對(duì)底層技術(shù)的透徹理解,而不能自如地把握和控制好系統(tǒng)的復(fù)雜行為,同時(shí),底層技術(shù)也經(jīng)常成為中級(jí)開(kāi)發(fā)者晉升到高級(jí)職位的瓶頸。
02 / 學(xué)校Linux需要指南針
Linux 發(fā)展到今天內(nèi)容非常多而且復(fù)雜,這給想接觸Linux的小伙伴來(lái)說(shuō)不是一個(gè)好消息。雖說(shuō) Linux 開(kāi)放了所有設(shè)計(jì)圖紙,可如果將這些圖紙全部打印出來(lái),可能要裝滿整個(gè)房間,這估計(jì)得把好多人嚇退,即使號(hào)稱 Linux 源碼航海圖的《深入理解 Linux 內(nèi)核》圖書(shū)也有 800 多頁(yè)。如果毫無(wú)方向地從頭看起,苦海無(wú)邊回頭是岸。
在我最開(kāi)始接觸 Linux 系統(tǒng)開(kāi)發(fā),還沒(méi)有多少真實(shí)項(xiàng)目經(jīng)驗(yàn)時(shí),就曾數(shù)次撲進(jìn) Linux 設(shè)計(jì)圖紙里,但每次都堅(jiān)持不了幾個(gè)月,每次在夜深人靜的時(shí)候就想起為什么受傷的都是我。
對(duì)于 Linux 開(kāi)發(fā)者,這時(shí)如果能有一本 Linux 航海圖的閱讀指引,標(biāo)注出航海圖上寶藏的埋藏位置和寶藏簡(jiǎn)介,一定可以讓學(xué)習(xí)過(guò)程更有方向性,也更加輕松愉悅。
03 / 想要飛的更高必須的要,根基牢固
隨著時(shí)間的發(fā)展人們的需求越來(lái)越復(fù)雜,對(duì)開(kāi)發(fā)人員的要求越越來(lái)越高,開(kāi)發(fā)人員只有對(duì)底層實(shí)現(xiàn)細(xì)節(jié)有越來(lái)越透徹的理解,才能更好地把握和控制系統(tǒng)的復(fù)雜行為。否則一旦遇到如下這些問(wèn)題,將很難從根源上解決。
程序在某個(gè)位置出現(xiàn)間歇性崩潰,可當(dāng)我添加一行調(diào)試用的日志后,就再也沒(méi)崩潰過(guò)了,這背后到底是怎么回事呢?
我寫了一個(gè)多進(jìn)程模型的服務(wù)器,但總感覺(jué)新進(jìn)程啟動(dòng)地不干凈,有時(shí)會(huì)有些父進(jìn)程的東西摻和到子進(jìn)程里來(lái)。可如果讓父進(jìn)程在啟動(dòng)子進(jìn)程之前做更多的計(jì)算,或者單純多等一會(huì),這種情況發(fā)生的概率便大大減少了,該系統(tǒng)的行為讓人有點(diǎn)捉摸不透,其背后的原因是什么呢?
我的信號(hào)處理程序與主程序使用同一個(gè)共享變量來(lái)交換信息,大多數(shù)時(shí)候都能正常工作,可總會(huì)時(shí)不時(shí)抽風(fēng)一下,代碼都已仔細(xì)檢查過(guò),找不出任何邏輯上的問(wèn)題。這讓人非常苦惱,到底是哪里出現(xiàn)問(wèn)題了?
類似這種程序表現(xiàn)與預(yù)期不完全一致的情況會(huì)讓開(kāi)發(fā)者非常頭疼,尤其是那種大部分時(shí)間表現(xiàn)正常,偶爾會(huì)“抽風(fēng)”的情況。這些令人頭疼的問(wèn)題,我不止一次地經(jīng)歷過(guò),數(shù)次被 Linux 傷害自信的感覺(jué)至今仍記憶猶新。
幸運(yùn)的是,在經(jīng)歷了多次探索、踩坑之后,Linux 系統(tǒng)的行為特點(diǎn)以及如此設(shè)計(jì)的內(nèi)在原因終于在我眼前逐漸明晰起來(lái),這個(gè)系統(tǒng)內(nèi)部精巧的設(shè)計(jì)也越來(lái)越清晰地展現(xiàn)在我眼前。
如今,我已從事 Linux 開(kāi)發(fā)近十年,再回想那段在 Linux 世界中幾度迷失的經(jīng)歷,已經(jīng)能夠明確知道問(wèn)題出在了哪里——還不知道它能做什么時(shí),便試圖弄清它是如何運(yùn)作的。正如還不知道一輛車發(fā)動(dòng)后如何前進(jìn),便開(kāi)始研究發(fā)動(dòng)機(jī)、變速箱里的那一堆齒輪、聯(lián)動(dòng)部件,結(jié)果自然是事倍功半。