有哪些有趣的小型Linux内核项目可以学习源代码?
时间:2020-03-06 14:44:43 来源:igfitidea点击:
我们会向使用该内核但具有丰富系统和C经验的人的新手建议哪些小型项目?目的是发展对内核源代码的熟悉,并提供试验疯狂想法的工具。
我试图考虑一些可管理的小任务(例如,添加syscall),但是我们会提出什么建议?对于目标受众,请考虑至少拥有本科操作系统课程的人。
解决方案
Kernel Janitors项目有一些很棒的项目。
当我参加上述本科OS课程时,我们的任务之一是添加一些syscall。它们非常简单,只不过是读取和重置计数器,这些计数器计算了其他系统调用的调用次数。但是,添加syscall要求查看并修改相当多的文件。它们中的许多文件都位于内核源代码的同一较小子树中,但至少足以使我们熟悉编码约定。
我们可能还会考虑:
- 向调度程序添加另一种(非常简单的)模式以实现我们发现有趣的策略。 "用一种规则来统治所有人"很难(甚至很难达成共识),但是从算法上讲,做一个简单的O(N)调度程序,甚至是基本的O(1)调度程序,都可以相对简单地完成。即使这样,它也需要拨很多代码。
- 为非常简单的外部硬件编写设备驱动程序,例如通过串行通讯甚至我们自己构建的8位微控制器。如果我们有任何硬件经验,则可以尝试编写一个可以模拟NES控制器的设备驱动程序(使用串行端口以及串行到并行移位寄存器对一些导线进行位撞击)。我们还可以执行一些操作,例如驱动一个非常简单的7段LED显示屏(例如,我们在闹钟中),或者一小部分。
有引发火焰战争的危险:我建议我们远离Linux内核代码。如果我们想动手进行内核编程,请使用FreeBSD,NetBSD或者OpenSolaris。该代码更简洁,结构更好(当然这是主观意见),实际上是设计的,甚至是文档化的。另外,他们还有一个内核调试器(请注意,Linus既反对内核调试器,又反对稳定的内核API,这使任何内核都成为我们工作的目标)。这些OS-es甚至在其各自的网站上都有项目列表,而且我个人在OpenSolaris论坛和NetBSD邮件列表上的人都拥有非常出色的经验。
我们说我们具有C的经验-查看Linux和OpenSolaris或者某些BSD的Web源代码存储库,比较代码,然后发表自己的看法。我想说的是,开源UNIX比Linux拥有更多的功能,并且在使用Linux之前,我们至少应该了解一下它们。