前言
Linux 的優(yōu)秀之處自然不必多說(shuō)。
如果將操作系統(tǒng)比作一輛汽車,那 Linux 就是一輛性能出色的多功能越野車,上山下海飛天無(wú)所不能。
如果你擁有了它,一定不會(huì)只滿足于駕駛它上下班,不能只會(huì)掛擋、踩油門和控制方向之類的基本操作。我們想充分了解并掌握它,挖掘其更多潛能。但是,這個(gè)過(guò)程有相當(dāng)?shù)碾y度。
Linux 系統(tǒng)編程的難點(diǎn)
對(duì)于有一定 Linux 開(kāi)發(fā)基礎(chǔ)希望進(jìn)階學(xué)習(xí) Linux 系統(tǒng)編程的開(kāi)發(fā)人員來(lái)說(shuō),其難點(diǎn)在于,Linux 所囊括的技術(shù)點(diǎn)繁雜,往往不知從何下手。
對(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í)職位的瓶頸。
技術(shù)繁雜,很難把握頭緒
Linux 內(nèi)容紛繁復(fù)雜,會(huì)讓學(xué)習(xí)者不知從何處下手。雖說(shuō) Linux 開(kāi)放了所有設(shè)計(jì)圖紙,可如果將這些圖紙全部打印出來(lái),可能要裝滿整個(gè)房間,即使號(hào)稱 Linux 源碼航海圖的《深入理解 Linux 內(nèi)核》圖書也有 800 多頁(yè)。如果毫無(wú)方向地從頭看起,看不了幾頁(yè)可能就昏昏欲睡了。
在我最開(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è)月,然后帶著受傷的自信心慘敗而歸。
對(duì)于 Linux 開(kāi)發(fā)者,這時(shí)如果能有一本 Linux 航海圖的閱讀指引,標(biāo)注出航海圖上寶藏的埋藏位置和寶藏簡(jiǎn)介,一定可以讓學(xué)習(xí)過(guò)程更有方向性,也更加輕松愉悅。
不了解底層原理,難從根源解決問(wèn)題
開(kāi)發(fā)者在最初開(kāi)發(fā) Linux 系統(tǒng)上的應(yīng)用和服務(wù)時(shí),往往會(huì)將大量精力傾注在實(shí)現(xiàn)業(yè)務(wù)需求上,對(duì)底層技術(shù)的實(shí)現(xiàn)細(xì)節(jié)并沒(méi)有特別深刻的理解。
但隨著系統(tǒng)復(fù)雜性的提高,開(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)??扇绻尭高M(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 世界中幾度迷失的經(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é)果自然是事倍功半。
相信很多 Linux 開(kāi)發(fā)者都曾經(jīng)或正在遭遇與我類似的痛苦經(jīng)歷。
-
控制系統(tǒng)
+關(guān)注
關(guān)注
41文章
6781瀏覽量
112195 -
Linux
+關(guān)注
關(guān)注
87文章
11511瀏覽量
213862 -
服務(wù)器
+關(guān)注
關(guān)注
13文章
9796瀏覽量
88013
原文標(biāo)題:Linux的確實(shí)挺復(fù)雜的
文章出處:【微信號(hào):嵌入式與Linux那些事,微信公眾號(hào):嵌入式與Linux那些事】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
找到一本不錯(cuò)的Linux電子書,附《Linux就該這么學(xué)》章節(jié)目錄。書寫的確實(shí)不錯(cuò),可以建議多讀
判斷硬件是否具有嵌入式Linux支持的方法
嵌入式linux學(xué)習(xí)方法總結(jié)
Linux基礎(chǔ)知識(shí)
原電池正負(fù)極的確定
比亞迪電池有這樣的超能力,確實(shí)挺牛X的
Linux時(shí)鐘精度的提高方法

Linux操作復(fù)雜?這里有每個(gè)Linux開(kāi)發(fā)者都應(yīng)該知道的一些知識(shí)

可以了解并學(xué)習(xí)Linux 內(nèi)核的同步機(jī)制
如何判斷硬件是否具有嵌入式Linux支持

評(píng)論