对于内核的新手,您会建议哪些小项目,但是有足够的系统和C经验的人?目的是培养对内核源代码的熟悉程度,以及用于疯狂创意实验的工具.
我正在尝试考虑一些可管理的小任务(例如,添加一个系统调用),但你会建议什么?对于目标受众来说,想一个至少拥有本科操作系统课程的人.
该内核工友项目有一些很出色的.
当我参加上述本科操作系统课程时,我们的任务之一是添加一些系统调用.它们非常简单,只是读取和重置计数器,计算其他系统调用的次数.但是,添加一个系统调用需要查看和修改相当多的文件..其中很多都在内核源代码的相对较小的子树中,但它足以让你熟悉编码约定,至少.
您可能还会考虑:
将另一个(非常简单的)模式添加到调度程序以实现您感兴趣的策略."统一它们的一个实现"非常困难(甚至更难以达成一致),但是在算法上可以相对简单地完成简单的O(N)调度程序,甚至是基本的O(1)调度程序.即便如此,它还需要通过大量的代码来解决问题.
为一个非常简单的外部硬件编写设备驱动程序,例如通过串行通信的8位微控制器,甚至是你自己构建的东西.如果您有任何硬件经验,也许可以尝试编写一个可以模拟NES控制器的设备驱动程序(使用串行端口连接几条线路,也可以使用串行到并行移位寄存器).你也可以做一些事情,比如驾驶一个非常简单的7段LED显示屏(就像你在闹钟中那样)或者它们的一小部分.
冒着开始火焰战争的风险:我建议你远离Linux内核代码.如果您想亲自编程,请使用FreeBSD,NetBSD或OpenSolaris.代码更清晰,结构更好(这当然是主观意见),实际设计,甚至记录.另外,他们有一个内核调试器(请注意,Linus反对内核调试器和稳定的内核API,这使得任何内核成为您工作的移动目标).这些操作系统甚至在各自的网站上都有一个项目列表,我个人在OpenSolaris论坛和NetBSD邮件列表上有很好的经验.
你说你有使用C的经验 - 查看Linux和OpenSolaris或某些BSD的Web源代码库,比较代码,并提出自己的看法.我想说的是,我认为,开源UNIX比Linux更多,并且在开始使用Linux之前至少应该看一下它们.