2008-09-25 16 views
13

你會向內核的新手建議哪些小項目,但是擁有大量系統和C經驗的人員?目的是培養對內核源代碼的熟悉程度,以及用於實驗瘋狂想法的工具。什麼是一些有趣的小型Linux內核項目來幫助學習源代碼?

我想要考慮一些可管理的小任務(例如,添加一個系統調用),但你會建議什麼?對於目標受衆而言,認爲某人至少有一門本科OS課程。

回答

5

當我參加上述的本科OS課程時,我們的一項任務是添加一些系統調用。它們非常簡單,只是讀取和重置計數器,這些計數器計算了其他系統調用被調用的次數。但是,添加系統調用需要查看和修改相當多的文件..它們中的很多都位於內核源代碼的相對較小的子樹中,但它足以讓您熟悉編碼約定,至少。

你也可以考慮:

  • 添加另一個(很簡單)模式的調度來實現你覺得有趣的策略。 「統一規則的一個實現」非常困難(甚至很難達成一致),但是從算法上講,做一個簡單的O(N)調度器,甚至是一個基本的O(1)調度器都可以相對簡單地完成。即便如此,它需要戳穿大量的代碼。

  • 爲非常簡單的外部硬件寫一個設備驅動程序,例如通過串行通信的8位微控制器,甚至是自己構建的東西。如果你有硬件方面的經驗,也許可以嘗試編寫一個可以仿真NES控制器的設備驅動程序(使用串口和串行到並行移位寄存器對位進行一些連接)。你也可以做一些事情,比如駕駛一個非常簡單的7段LED顯示屏(就像你在鬧鐘中一樣)或者一小羣。

5

在開始火焰戰爭的風險:我建議你遠離Linux內核代碼。如果你想用內核編程來解決你的問題,例如使用FreeBSD,NetBSD或OpenSolaris。代碼更清晰,結構更好(這當然是主觀意見),實際設計,甚至記錄。另外他們有一個內核調試器(注意Linus反對內核調試器和穩定的內核API,這使得任何內核成爲你工作的移動目標)。這些操作系統甚至在他們各自的網站上都有一個項目清單,而且我個人在OpenSolaris論壇和NetBSD郵件列表上有非常好的經驗。

你說你有C語言經驗 - 查看Linux和OpenSolaris的Web源代碼庫或者一些BSD,比較代碼並發表你自己的觀點。我想說的是,除了Linux之外,還有更多的開源UNIX,並且你應該至少在Linux之前看看它們。

+0

[來源請求]是一個專家反對內核調試器?我知道他的理由不承諾提交API。 – pjc50 2009-07-08 13:17:32

0

嘗試下載MINIX源代碼 並使用它,試着理解的邏輯,它需要一定的時間,但毫無疑問,如果你堅持下去,你可以在萊納斯一段時間

相關問題