0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux的確實(shí)挺復(fù)雜的

嵌入式與Linux那些事 ? 來源:嵌入式與Linux那些事 ? 2023-09-12 17:04 ? 次閱讀

前言

Linux 的優(yōu)秀之處自然不必多說。

如果將操作系統(tǒng)比作一輛汽車,那 Linux 就是一輛性能出色的多功能越野車,上山下海飛天無所不能。

如果你擁有了它,一定不會(huì)只滿足于駕駛它上下班,不能只會(huì)掛擋、踩油門和控制方向之類的基本操作。我們想充分了解并掌握它,挖掘其更多潛能。但是,這個(gè)過程有相當(dāng)?shù)碾y度。

Linux 系統(tǒng)編程的難點(diǎn)

對(duì)于有一定 Linux 開發(fā)基礎(chǔ)希望進(jìn)階學(xué)習(xí) Linux 系統(tǒng)編程的開發(fā)人員來說,其難點(diǎn)在于,Linux 所囊括的技術(shù)點(diǎn)繁雜,往往不知從何下手。

對(duì)于稍有些系統(tǒng)編程經(jīng)驗(yàn)的 Linux 開發(fā)者來說,難點(diǎn)往往在于,缺乏對(duì)底層技術(shù)的透徹理解,而不能自如地把握和控制好系統(tǒng)的復(fù)雜行為,同時(shí),底層技術(shù)也經(jīng)常成為中級(jí)開發(fā)者晉升到高級(jí)職位的瓶頸。

技術(shù)繁雜,很難把握頭緒

Linux 內(nèi)容紛繁復(fù)雜,會(huì)讓學(xué)習(xí)者不知從何處下手。雖說 Linux 開放了所有設(shè)計(jì)圖紙,可如果將這些圖紙全部打印出來,可能要裝滿整個(gè)房間,即使號(hào)稱 Linux 源碼航海圖的《深入理解 Linux 內(nèi)核》圖書也有 800 多頁。如果毫無方向地從頭看起,看不了幾頁可能就昏昏欲睡了。

在我最開始接觸 Linux 系統(tǒng)開發(fā),還沒有多少真實(shí)項(xiàng)目經(jīng)驗(yàn)時(shí),就曾數(shù)次撲進(jìn) Linux 設(shè)計(jì)圖紙里,但每次都堅(jiān)持不了幾個(gè)月,然后帶著受傷的自信心慘敗而歸。

對(duì)于 Linux 開發(fā)者,這時(shí)如果能有一本 Linux 航海圖的閱讀指引,標(biāo)注出航海圖上寶藏的埋藏位置和寶藏簡介,一定可以讓學(xué)習(xí)過程更有方向性,也更加輕松愉悅。

不了解底層原理,難從根源解決問題

開發(fā)者在最初開發(fā) Linux 系統(tǒng)上的應(yīng)用和服務(wù)時(shí),往往會(huì)將大量精力傾注在實(shí)現(xiàn)業(yè)務(wù)需求上,對(duì)底層技術(shù)的實(shí)現(xiàn)細(xì)節(jié)并沒有特別深刻的理解。

但隨著系統(tǒng)復(fù)雜性的提高,開發(fā)人員只有對(duì)底層實(shí)現(xiàn)細(xì)節(jié)有越來越透徹的理解,才能更好地把握和控制系統(tǒng)的復(fù)雜行為。否則一旦遇到如下這些問題,將很難從根源上解決。

程序在某個(gè)位置出現(xiàn)間歇性崩潰,可當(dāng)我添加一行調(diào)試用的日志后,就再也沒崩潰過了,這背后到底是怎么回事呢?

我寫了一個(gè)多進(jìn)程模型的服務(wù)器,但總感覺新進(jìn)程啟動(dòng)地不干凈,有時(shí)會(huì)有些父進(jìn)程的東西摻和到子進(jìn)程里來??扇绻尭高M(jìn)程在啟動(dòng)子進(jìn)程之前做更多的計(jì)算,或者單純多等一會(huì),這種情況發(fā)生的概率便大大減少了,該系統(tǒng)的行為讓人有點(diǎn)捉摸不透,其背后的原因是什么呢?

我的信號(hào)處理程序與主程序使用同一個(gè)共享變量來交換信息,大多數(shù)時(shí)候都能正常工作,可總會(huì)時(shí)不時(shí)抽風(fēng)一下,代碼都已仔細(xì)檢查過,找不出任何邏輯上的問題。這讓人非??鄲?,到底是哪里出現(xiàn)問題了?

類似這種程序表現(xiàn)與預(yù)期不完全一致的情況會(huì)讓開發(fā)者非常頭疼,尤其是那種大部分時(shí)間表現(xiàn)正常,偶爾會(huì)“抽風(fēng)”的情況。這些令人頭疼的問題,我不止一次地經(jīng)歷過,數(shù)次被 Linux 傷害自信的感覺至今仍記憶猶新。

幸運(yùn)的是,在經(jīng)歷了多次探索、踩坑之后,Linux 系統(tǒng)的行為特點(diǎn)以及如此設(shè)計(jì)的內(nèi)在原因終于在我眼前逐漸明晰起來,這個(gè)系統(tǒng)內(nèi)部精巧的設(shè)計(jì)也越來越清晰地展現(xiàn)在我眼前。

如今,再回想那段在 Linux 世界中幾度迷失的經(jīng)歷,已經(jīng)能夠明確知道問題出在了哪里——還不知道它能做什么時(shí),便試圖弄清它是如何運(yùn)作的。正如還不知道一輛車發(fā)動(dòng)后如何前進(jìn),便開始研究發(fā)動(dòng)機(jī)、變速箱里的那一堆齒輪、聯(lián)動(dòng)部件,結(jié)果自然是事倍功半。

相信很多 Linux 開發(fā)者都曾經(jīng)或正在遭遇與我類似的痛苦經(jīng)歷。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    6649

    瀏覽量

    110755
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11332

    瀏覽量

    210024
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9267

    瀏覽量

    85799

原文標(biāo)題:Linux的確實(shí)挺復(fù)雜的

文章出處:【微信號(hào):嵌入式與Linux那些事,微信公眾號(hào):嵌入式與Linux那些事】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    紙板度儀說明書

    附件是紙板度儀說明書
    發(fā)表于 04-21 10:48

    找到一本不錯(cuò)的Linux電子書,附《Linux就該這么學(xué)》章節(jié)目錄。書寫的確實(shí)不錯(cuò),可以建議多讀

    此書是由全國多名紅帽架構(gòu)師(RHCA)基于RHEL7系統(tǒng)共同編寫的高質(zhì)量Linux技術(shù)自學(xué)書籍,各章節(jié)知識(shí)點(diǎn)從實(shí)踐出發(fā)且具有較強(qiáng)連貫性,極其適合Linux初學(xué)者或用作Linux相關(guān)輔助教材,專注于
    發(fā)表于 05-29 22:42

    判斷硬件是否具有嵌入式Linux支持的方法

    如何判斷硬件是否具有嵌入式Linux支持在為您的定制電子設(shè)計(jì)挑選零件時(shí),可以預(yù)先檢查Linux驅(qū)動(dòng)程序支持。為不受支持的硬件編寫新驅(qū)動(dòng)程序非常耗時(shí),會(huì)帶來風(fēng)險(xiǎn),并增加了項(xiàng)目的復(fù)雜性。最好選擇支持
    發(fā)表于 11-05 06:38

    嵌入式linux學(xué)習(xí)方法總結(jié)

    嵌入式linux學(xué)習(xí)方法總結(jié) 嵌入式linux的學(xué)習(xí)現(xiàn)在流行
    發(fā)表于 09-10 10:44 ?3546次閱讀

    Linux基礎(chǔ)知識(shí)

    Linux基礎(chǔ)知識(shí) 硬盤 硬盤是可以存儲(chǔ)大量信息資源的媒介。我們平時(shí)看到的硬盤是方方正正的一塊沉的鐵匣子,但是其實(shí)硬盤是圓的,加上一些控制電路以后,為了便于
    發(fā)表于 01-18 09:57 ?494次閱讀

    延遲時(shí)間的確

    延遲時(shí)間的確
    發(fā)表于 07-31 12:33 ?1444次閱讀

    原電池正負(fù)極的確

    原電池正負(fù)極的確定 原電池正負(fù)極的確定 將銅鋅兩種金屬放在電解質(zhì)溶液中,用導(dǎo)線連接,便構(gòu)成原電池的兩極,如圖
    發(fā)表于 10-21 08:41 ?6936次閱讀

    比亞迪電池有這樣的超能力,確實(shí)牛X的

    比亞迪電池有這樣的超能力,確實(shí)牛B的 提到比亞迪,大家肯定知道它是一個(gè)汽車生產(chǎn)廠商,隨著比亞迪汽
    發(fā)表于 10-27 14:11 ?1487次閱讀

    Linux時(shí)鐘精度的提高方法

    本文對(duì)KURT_Linux、RT-Linux提高時(shí)鐘精度的方法進(jìn)行分析,采用一種動(dòng)態(tài)的多模式時(shí)鐘機(jī)制來提高Linux的時(shí)鐘精度,并通過分析測試證明該方案確實(shí)可行。
    發(fā)表于 05-20 09:39 ?6906次閱讀
    <b class='flag-5'>Linux</b>時(shí)鐘精度的提高方法

    基于反向?qū)W習(xí)與Levy飛行的改進(jìn)蜂群算法_趙

    基于反向?qū)W習(xí)與Levy飛行的改進(jìn)蜂群算法_趙
    發(fā)表于 03-19 19:19 ?0次下載

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

    作為現(xiàn)代操作系統(tǒng)的代表之一,Linux操作系統(tǒng)非常復(fù)雜,內(nèi)部有多得令人眼花繚亂的各種組件在同步運(yùn)行和相互通信。
    的頭像 發(fā)表于 03-28 09:04 ?5678次閱讀
    <b class='flag-5'>Linux</b>操作<b class='flag-5'>復(fù)雜</b>?這里有每個(gè)<b class='flag-5'>Linux</b>開發(fā)者都應(yīng)該知道的一些知識(shí)

    可以了解并學(xué)習(xí)Linux 內(nèi)核的同步機(jī)制

    Linux內(nèi)核同步機(jī)制,復(fù)雜的一個(gè)東西,常用的有自旋鎖,信號(hào)量,互斥體,原子操作,順序鎖,RCU,內(nèi)存屏障等。
    發(fā)表于 05-14 14:10 ?714次閱讀

    如何判斷硬件是否具有嵌入式Linux支持

    如何判斷硬件是否具有嵌入式Linux支持在為您的定制電子設(shè)計(jì)挑選零件時(shí),可以預(yù)先檢查Linux驅(qū)動(dòng)程序支持。為不受支持的硬件編寫新驅(qū)動(dòng)程序非常耗時(shí),會(huì)帶來風(fēng)險(xiǎn),并增加了項(xiàng)目的復(fù)雜性。最好選擇支持
    發(fā)表于 11-02 10:21 ?10次下載
    如何判斷硬件是否具有嵌入式<b class='flag-5'>Linux</b>支持

    Unix和Linux的差異

    摘要:程序員都知道,Linux 不是 Unix,不過二者之間確實(shí)存在關(guān)系,即 Linux 系統(tǒng)是從 Unix 派生出來的,而 Linux 是一個(gè)類 Unix 的操作系統(tǒng)。那么,二者之間
    發(fā)表于 09-04 12:42 ?662次閱讀

    電源空載電壓的確定應(yīng)遵循的原則是什么

    電源空載電壓的確定是一個(gè)復(fù)雜的過程,涉及到許多因素和原則。 1. 引言 電源是電子系統(tǒng)中不可或缺的組成部分,它為系統(tǒng)提供所需的電能。電源的空載電壓是指在沒有負(fù)載的情況下,電源輸出的電壓值。空載電壓
    的頭像 發(fā)表于 08-08 14:28 ?1278次閱讀