對於將來想從事內核級開發的coder,以下兩件事情,哪一個更有意義?

1. 完全理解linux0.1版本的代碼,達到能夠基於該代碼,逐步改進各個模塊。(基於bochs或者早期x86機都可...)

2. 看幾本所謂講內核或驅動方面的書,學會各模塊的驅動編寫規範,能夠基於現代linux內核(2.6版本以上)開發新硬體的驅動.


3. MIT的xv6,~10k行。早期Unix的重新實現。代碼簡單清晰。


2


驅動沒有錢途的, 搞 IO Network 虛擬化 方向吧。

還有, 內核的學習重點是 中斷/調度/任務管理, boot是很麻煩而且不重要的, 你需要換一本講新內核的書。


內核開發其實也是一個較大的概念,因為內核裡面的東西太多了。我目前的學習思路是逐個理解內核的各個子系統(內存管理,設備驅動,文件系統,網路子系統,==),當然,不可能每個子系統都掌握,選擇幾個和自己工作相關或者自己感興趣的研究。你會發現這些子系統雖然職責不一,但在內核的組織結構上還是有很多相似的地方。然後,在理解各子系統的基礎上,去理解或者接觸與該子系統相關的基本知識點。比如在看設備驅動時,你需要了解許多硬體協議,硬體工作原理等等。最後,再將這些子系統關聯起來,子系統與子系統之間有很密切的聯繫。還是拿設備驅動來說,它涉及到文件系統,內存分配,進程管理。

答畢。希望對你有所幫助。


都沒有意義。


時間比較充裕的話,從早期版本開始吧。不太摳細節,關注整體設計,應該會比單專現代內核驅動更有收穫。


可以看內核開發郵件列表,來慢慢的了解內核現在的開發情況,以及各種各樣的問題。我已經連續看了半年多左右,感覺還是挺有趣味的。

但是還是需要一些基礎知識的。

另,如果要看內核源代碼的話,推薦

John lions 的書本&

on Unix 6th Edition, with Source Code&>.

附參考鏈接:

內核開發:

http://news.gmane.org/gmane.linux.kernel

網路模塊:

http://news.gmane.org/gmane.linux.network

內存模塊:

http://news.gmane.org/gmane.linux.kernel.mm


關掉知乎開始看書更有意義.


題主我給你一個實際一點的建議,你要不給perf/ftrace加一個特性吧,比如可以跟蹤一個udp處理過程的時延分布希么的,把patch傳到主線上。這樣你的問題就解決了。

不過要抓緊,這個工作估計要耗你一年以上的時間


推薦閱讀:

學習 Linux 內核能找到工作嗎?
多線程追加文件,不加鎖,會出現什麼情況 ?
linux系統會中比特幣病毒嗎?
有沒有學習Linux比較好的入門書籍?
如何紮實系統地學好後端開發(Linux 環境下)?細分方向有哪些?可否推薦一些好的開源項目?

TAG:Linux | Linux內核 | 操作系統內核 |