什么小的项目将你的建议来一个新手的核心,但是有人有大量的系统和C的经验?其目的是开发一个熟悉与核源代码和一个设施用于实验疯狂的想法。

我试图想的一些可管理的小任务(例如,增加一个系统调用),但你有什么建议吗?对于一个目标观众觉得有人具有至少一个大学生OS课程根据他们的腰带。

有帮助吗?

解决方案

当我采取了前述的本科OS然,我们的任务之一是增加几个系统调用.他们都非常简单,但没有阅读和重置计数器计数的次系统调用其他被援引。但是,添加一个系统调用需要寻找和修改相当多的文件..他们很多都是在同一个相对较小子树的核心来源,但它足以让你熟悉的编码的公约,在最少。

你可能还会考虑:

  • 增加的另一个(非常简单的)模式的调度程序,以实施一项政策你觉得有趣。"一个执行对统治他们"是相当困难的(甚至难以同意),但这样做的一个简单的O(N)调度程序,即使一个基本O(1)调度程序,可以完成相对简单,算法发言。即便如此,它需要戳通过大量的代码。

  • 写一个装置驱动程序的一个非常简单的一块外部硬件,如一个8位微控制器,通过的序列,甚至有些东西你建立自己。如果你有任何硬件的经验,也许是尝试写一个装置驱动程序,可以效仿的一个NES控制器(bit-砰的一些电线使用串口和可能的序列并行转移登记册).你也可以做些什么喜欢驾驶一个非常简单的7段显示的(像你已经在警报时钟),或者一个小型的收集他们。

其他提示

Kernel Janitors项目有一些很棒的项目。

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

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

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

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

一个很棒的教程是“滚动你自己的玩具UNIX克隆操作系统 "

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top