什么是一些有趣的小型Linux内核项目来帮助学习源代码?

时间:2008-09-25 19:59:24

标签: linux operating-system kernel projects

对于内核的新手,您会建议哪些小项目,但是有足够的系统和C经验的人?目的是熟悉内核源代码,以及疯狂创意实验设施。

我正在尝试考虑一些可管理的小任务(例如,添加一个系统调用),但你会建议什么?对于目标受众来说,想一个至少拥有本科操作系统课程的人。

5 个答案:

答案 0 :(得分:6)

Kernel Janitors project有一些很棒的。

答案 1 :(得分:6)

当我参加上述本科操作系统课程时,我们的任务之一就是添加一些系统调用。它们非常简单,只是读取和重置计数器,计算其他系统调用的次数。但是,添加一个系统调用需要查看和修改相当多的文件..其中很多都在内核源代码的相对较小的子树中,但它足以让你熟悉编码约定,至少。

您可能还会考虑:

  • 向调度程序添加另一个(非常简单的)模式,以实现您感兴趣的策略。 “统一它们的一个实现”非常困难(甚至更难以达成一致),但是在算法上可以相对简单地完成简单的O(N)调度程序,甚至是基本的O(1)调度程序。即使这样,它也需要通过大量的代码来解决。

  • 为一个非常简单的外部硬件编写设备驱动程序,例如通过串行通信的8位微控制器,甚至是您自己构建的东西。如果您有任何硬件经验,可能会尝试编写一个可以模拟NES控制器的设备驱动程序(使用串行端口串行连接几根线路,也可能是串行到并行移位寄存器)。你也可以做一些事情,比如驾驶一个非常简单的7段LED显示屏(就像你在闹钟中那样)或者它们的一小部分。

答案 2 :(得分:6)

冒着开始火焰战的风险:我建议你远离Linux内核代码。如果您想亲自编程,请使用FreeBSD,NetBSD或OpenSolaris。代码更清晰,结构更好(这当然是主观意见),实际设计,甚至记录。另外,他们有一个内核调试器(请注意,Linus反对内核调试器和稳定的内核API,这使得任何内核成为您工作的移动目标)。这些操作系统甚至在各自的网站上都有一个项目列表,我个人在OpenSolaris论坛和NetBSD邮件列表上有很好的经验。

你说你有使用C的经验 - 查看Linux和OpenSolaris或某些BSD的Web源代码库,比较代码,并提出自己的看法。我想说的是,开源UNIX比Linux更多,你至少应该在开始使用Linux之前先看看它们。

答案 3 :(得分:2)

一个好的起点是基于Unix v6的project。 “Xv6,一个简单的类Unix教学操作系统”

还有cynix,一个简单的IA-32单片unix-like内核(Unmaintained)

一个很棒的教程是“Roll your own toy UNIX-clone OS”。

答案 4 :(得分:0)

尝试下载MINIX源代码  尝试使用它,尝试理解逻辑,毫无疑问需要时间,但如果坚持下去,你可以在一段时间内成为专家