首頁>Club>

作為一名普通的c++程式設計師,目前想要學習linux核心原始碼,想逐步閱讀,需要多久才能看完linux核心原始碼呢?

22
回覆列表
  • 1 # 經緯科技談

    先拋結論,Linux核心原始碼屬於那種有生之年都不能看完的型別,但是並不妨礙我們通過努力成為某個領域的系統專家。

    Linux核心程式碼行數有多少?

    最近Phoronix釋出了對Linux核心倉庫的統計資訊。統計資訊顯示Linux核心程式碼庫雖然過去一年linux核心大肆精簡了大約100萬的程式碼,仍然有2780萬行程式碼,其中核心程式碼佔5%,網路相關的程式碼佔35%,驅動超過40%。

    看重點,總程式碼行數超過2700萬行,而且這個總量還在因為新的硬體驅動程式碼加入而持續增加中。

    核心裡面有很多子模組,包括排程,記憶體管理,檔案系統,網路,系統介面,驅動等等,每一個模組都代表一個大的領域。每個人不可能有這麼多精力去全部都精通,因此只能選擇一個感興趣的方向去深入研究,而其它的模組只需要大概瞭解即可。

    作為Linux創始人Linus Torvalds ,他貢獻的程式碼現在在核心裡面也僅僅佔到百分之3點幾,Torvalds負責稽核的程式碼倉庫也就那麼幾個,其它的大多都交給開源社群去維護管理了。

    要成為大神一定要讀一讀Linux原始碼嗎?

    很多人都抱著朝聖的心理,想去拜讀一下Linux核心原始碼,好像沒有看過原始碼就不夠格成為大神,真的是這樣嗎? 作為一個多年的核心開發者,真的不建議新手就去直接學習核心原始碼。

    且拋開作業系統的複雜性不談,光是核心裡面的各種巨集技巧,各種炫技的寫法,就足夠新手迷惑好半天。事實上,核心程式碼並不是一個很好的入門讀物,你得有一定的開發基礎,並且在真正需要的情況下,才會試圖去了解它的原理。而且絕大部分情況下,你都用不著修改它,畢竟能發現了一個核心bug,都算是很牛的事情了。

  • 2 # 正直筆尖

    Linux核心相容的驅動太少,現在老的新的海量的晶片核顯和獨立顯示卡等硬體研發生產時,各廠家都是圍繞Windows進行驅動程式除錯適配生產的,硬體一出廠就和Windows定下了青梅竹馬的“娃娃親”,燒成灰都相互認識,裝機順利沒有Linux裝機磕磕碰碰鼻青臉腫也進不去。跟Linux完全就是“陌生人”,又看不上Linux窮小子,相容不相容無所謂,不是這些硬體廠家考慮的事,各大硬體官網只有Windows7、Windows10主流系統的驅動提供下載。

    有些小白說,驅動不是問題,光要中國產軟體應用豐富就行,說得倒很輕飄簡單。他們不知道生態分兩部分:①硬體及驅動 ②應用軟體。沒有主要核心零部件驅動,連裝系統和體驗系統的門都進不去。電腦的機理跟我們人體系統機理差不多,手腳、眼睛、耳鼻等一系列的器官只不過是人體系統的硬體,神經系統才是器官連線大腦CPU的驅動程式,讓人能夠活動自如,沒有神經驅動我們人就變成聾子、睜眼瞎、癱子、瘸子型別的殘疾人。大家平時主要直接跟各種行業應用和系統設定面對面的打交道,系統執行穩定時跟驅動接觸少,只有裝系統和出故障時才接觸到驅動程式,驅動程式是系統中協調系統各層面的默默無聞的幕後英雄。

    驅動相容缺失會導致很大一部分機器U盤引導裝深度Deepin64位和優麒麟系統時就卡死到藍屏狀態,裝Deepin32位正常,裝Windows64位也正常,說明Linux核心和硬體廠商沒有相互協作把Linux驅動維護升級,半途荒廢到那兒了。所以Linux和這些晶片顯示卡硬體相遇時會出現“你不認識我,我不認識你”的卡死狀態,能裝上deepin都是碰上了運氣!像中彩票一樣。

    實在要硬碟真實安裝,製作U盤啟動盤安裝碰碰運氣吧,如果裝不上,就不要勉強,不管你用什麼U盤燒錄工具都沒用,白費勁。即使通過什麼除錯勉強安裝上,接下來會有各種各樣的其他型別驅動引起的問題讓你寸步難行,掛了都是家常便飯。

    要想看看Deepin是個啥樣子,裝個虛擬機器,虛擬機器就像是“孫悟空”,會七十二般變化,它能虛擬變化成出各種各樣的相容Linux的驅動,虛擬機器執行deepin非常穩定流暢,沒有各種驅動困擾。作為體驗過各大Linux的過來人說句實話,不管是deepin還是優麒麟、新支點、Ubuntu等五花八門的Linux發行版都是非常低階的,都屬於狗肉上不了席的程式設計師使用的小眾系統,成不了大眾系統,尤其是AI智慧的未來,像原始DOS的命令列方式的系統只能當個玩具玩玩而已,不能當作生產力,跟不上時代發展的要求。

    國內一些的Linux技術人員和團隊仍然固步自封,自我陶醉在Linux所謂的程式碼效率高的小圈子裡,成了“井底蛙”,就不想跳出井口看看外面的世界,哪怕看一眼Android這個成功的範例,它可是Linux的親兒子,問Android中有一條或者是有半條命令行了嗎?想起了一位主持人說的話:就算低頭拉車,也要抬頭看一看天。

    目前的Deepin被一批膚淺者帶偏了,正事不足討論什麼圓角直角的美與醜、額頭的大與小、老桌面與新桌面的比較投票,走偶像派。無可厚非,走偶像是收穫了一點粉絲,“新鮮勁”是有期限的,還得靠系統的可靠和能力維持人機的長期協作夥伴關係。就目前深度不可能維持魚和熊掌二者兼得的局面,把有限的精力投入到關鍵的地方。

    關於Linux核心,它是屬於全世界的,不專屬於哪個國家地區和組織。中國還沒有哪一家公司有強大的人力、物力、影響力、科技實力對Linux核心進行改進和提升,貢獻中國智慧,中國力量,中國解決方案,改善核心相容海量的驅動,都想投機取巧,喜好形式主義的表面文章,爭先恐後幹換皮的裝修公司一大堆,包括華為、小米這樣典型的公司都拿現成的安卓換皮裝修。鴻蒙系統,自己和媒體一波一波吹牛聲波傳遍了全世界,只有敏銳者看清的是隻剩名字起得好!連哄帶蒙,至今連個影子都沒有。

    國內Deepin和優麒麟將要面對生態鏈中遇到第一道難以逾越的驅動鴻溝。一大部分機器安裝失敗其實是Linux核心天生的營養不良的缺陷導致。

  • 3 # 吹點雪

    老鐵,我也在學習linux核心,我說一下我的想法吧。

    我曾經很早的時候就想學習linux核心了,當時準備啃書,並對著程式碼看,熱情了一陣子,可由於太深奧就不了了之了。

    最近工作原因,涉及到核心檔案系統的研究,重新學習核心,感覺比較容易弄懂了。為了避免走彎路,我建議:

    1. 不要一來就對著核心原始碼啃。核心原始碼壓縮後現在都一百多M了,有生之年你也別想全看完弄懂,各種演算法,詭異的寫法會弄暈你。

    2. 先找一些核心實現原理的書來大致看一遍,這個時候不必深究細節,不懂的就做一些問題清單記起來。

    3. 核心由幾大模組構成,你要大概瞭解它們的相互關係。例如程序中就記錄了開啟的檔案資訊,程序的地址空間主要記憶體管理模組來分配和管理記憶體。

    4. 選擇一個模組作為切入點,通過實驗對核心下手!我是從檔案系統這塊開始的,比較簡單這次沒有搞暈我了。

    5. 必須動手實驗,光看書是沒用的!!!你親自通過加列印,或斷點除錯跟蹤程式碼呼叫路徑,通過自己寫程式碼實現一些功能後,你自己會豁然開朗,信心大增了!

  • 4 # 哼哼個啥

    linux核心不需要看完,分分類,選幾個必須看的研究一下,多數不需要看。

    記憶體管理,中斷管理,程序管理,程序排程,裝置管理,inode資料結構等是必修的,裝置驅動看倆代表性的,串列埠的,鍵盤的, 磁碟的。檔案系統看一個意思一下,檔案系統很多,程式碼太多一輩子都看不完。中斷管理要多看看,涉及到很多定時,包括程序排程。

    當年我花一學期陸陸續續看完所以unix核心程式碼,但那時的程式碼少,就2,3萬行,現在linux全部核心一輩子也看不完。

  • 5 # DeepLearning

    可能需要三五年吧!現在的核心程式碼越來越大,如果你只是想學習核心的知識,可以看看以前的核心程式碼,比如 Linux2.4程式碼情景分析,估計幾個月就可以看完。

  • 6 # 紫水晶9795

    是否先去學習如何基於Linux寫系統軟體,然後有了完整的Linux系統軟體工作經驗,再去深入學習Linux程式碼,會不會更好?

    請有基於Linux系統軟體的大神指點。中國基於Linux寫系統軟體的公司應該不多吧?華為鴻蒙、阿里雲,深度、紅旗麒麟、紅旗xx。

  • 中秋節和大豐收的關聯?
  • 為什麼任正非會說「華為永遠都不造汽車」?