回覆列表
-
1 # 程式設計師小助手
-
2 # 挖挖機三號
是的,Linux kernel是軟體集大成者,弄懂Linux kernel再coding就沒問題了,不過如果想以kernel入門的話就比較不適合,因為kernel經過很多年迭代,程式碼上億行,結構複雜,新手看kernel程式碼會迷失的,最好有一定程式設計基礎後以kernel的驅動程式碼為突破口,慢慢深入瞭解kernel
-
3 # 繁星落石
這是一個奇怪的問題,Linux核心採用了十分複雜的邏輯關係,使用C強行構建了一套面向物件的框架,彼此之間的構成還算是十分複雜的。而且使用了很多獨特的方法來最佳化效率,特別體現在記憶體管理部分,對於記憶體的搜尋、分配和回收都做到了可能的極致。如果不會coding的話,光是這十幾萬行程式碼就已經頭大了,更不要說懂。或者換一個角度,看了這個數量程式碼並且理解其內容的人,怎麼可能不懂coding?
相關內容
- 國內在開源社群有哪些linux kernel和docker的大牛?
- Linux Kernel 4.20.1首個維護版本更新帶來了哪些內容?
- Collabora工程師對Linux Kernel 5.2分支都有哪些貢獻?
- Collabora開發者團隊對Linux Kernel 5.4都有什麼貢獻?
- Linux Kernel 5.2正式釋出了,更新了那些內容?
- Linux Kernel 5.3首個維護版本更新帶來了哪些內容?
- Linux Kernel 5.3更新了哪些內容?
- Linux Kernel 5.1中為Chrome OS都有哪些改進?
- Linux Kernel 5.1正式版釋出了,更新了哪些內容?
- 根據開發時間表,Linux Kernel 5.5核心系列有望何時到來?
結論:用反問句作答:“不會coding,看得懂kernel嗎?”
前言一張數學考卷,不是把最後一題最難的20分做出來,就算征服了整張考卷。
你會一道最難的題,真覺得剩下的80%,就是小菜一碟?
kernel不是程式設計天花板kernel在不斷地增長,torvalds大神也投入很多時間維護核心。全世界的開發者在用智慧貢獻自己的程式碼。看看git多麼地繁忙。
程式碼檔案目錄。
核心裡有許多驚為天人的巧妙設計,每個細節都值得推敲,每段註釋又是一段故事。
用漫畫看看核心裡都有些啥?
各司其職,還有汪汪,還有檔案系統的一個個抽屜,形象吧。
好了,外行看個熱鬧,內行看個門道。相信你一定會注意到一些精巧的小細節。下面是細節剖析。
一切的基礎,要從檔案存取開始。PID=421的程序在讀檔案。還有一個看門狗。
這一桌子上,在檔案系統的上層,是一堆程序,等著上飯。左邊有一個幼兒園老師一樣的小企鵝,指揮者各個程序聽話。
PID=1341的程序守護者80埠,這個是http服務。也就是apache http web伺服器。
注意到這個半垂的21埠嗎,ftp,早就不安全,而且也老舊了。
酷酷的22埠,是SSH服務監聽的埠,穩定安全而又耍酷。
注意到樓梯口這個指示牌了嗎,它指示這是去“檔案系統File System”的入口。
房間裡這個忙碌的小企鵝是cron,整個系統時間排程都是它在跑。
還有那些 pipeline 用於連線不同的功能。
還有這個喝的暈乎乎的wine,要不少需要執行windows應用,它也可以休息了。
使用者面對的,是一個個終端。linux是真正的多使用者系統。看,這個大螢幕多麼繁忙。
還有跑偏了的zombie程序,四處遊蕩。
怎麼樣,經過漫畫一看,是不是覺得linux有趣的多了?
掌握工具,創造工具都會編碼了,還有什麼能夠阻擋你對自由的嚮往?
想證明你的實力嗎,linus大神說了:
Talk is cheap, show me the code.甭嘚啵嘚,來段程式碼看看。而開源社群的打什麼,也真的是在用行動,用程式碼踐行著這個格言。所以,核心擁有者源源不斷的澎湃動力。
比如覺得核心裡
init
管理系統程序排程實在不便,編寫出來的指令碼檔案很麻煩,能不能化繁從簡呢?有的。Lennart Poettering為了解決這個混沌狀態,開發了systemd。在centos7以後標配為系統發行版的任務排程應用。下面是systemd套件的架構功能圖。
是不是看到很勵志啊?有想法,有能力,有思維,大膽地給核心貢獻程式碼吧。
全世界數以億計的計算機執行著你寫的程式碼,成就感能不爆棚嗎?
Come on!
結語學核心而不止於核心。
王安石說:“讀經則不足以知經”。
只有你博覽群書,開闊眼界之後,再回來kernel看風景,相信你“坐看雲起時”,別有一番領悟。