• 11
  • 12月

过去的一周估计是我这学期过得最紧张的两周了。一周时间内看明白并修改一个Linux内核实在是一件相当挑战的工作。

事情还要从头说起,这学期我们开了一门bt的实验课,名字叫《系统软件分析与设计》,从第12周上到第15周,一周就两节,应该是个很小的课。这课课时虽少,老师出的题可不简单,整个课就研究一样东西Linux 0.11的内核源码,主要的问题有两个:

1.详细分析至少150行的一段代码

2.改造Linux内核,使其启动时能依次显示三个问题,由用户输入三个答案,然后退出。

初看起来两道题都不怎么难,因此前两个周我基本上都在看《linux011内核注释》前面的理论部分,没开始研究源码。到第三周开始看代码时真是服了——面向过程的典型非正交代码。代码之间有大量的交叉引用,想看明白确实不是件容易的事。

幸运的是之前囤的软件没有白囤,SourceInsight这款软件在分析源码时帮了我极大的忙。按住ctrl点一下就能转到引用处,在处理这种复杂代码时帮助太大了。

不过第二个问题就没那么简单了。内核毕竟不是应用软件,除了自己定义的函数可没有可以调用的“系统函数”(“系统”之中哪来“系统函数”?)。内核中定义了一个printk函数,输出问题不用考虑了。但内核里是没有任何类似scanf之类的输入函数的。怎么接收用户的输入成了难点。

一个在普通编程中简单到不能再简单的接收用户输入操作,放到内核里把我卡了好几天

(未完待续…)

标签:

您可以对这篇文章发表一条评论,或者在您自己的网站中引用 (Trackback) 它

发表一条评论

所有标签:.net Ajax Java javascript Linux map MySQL RSS TD-SCDMA Ubuntu vim web Win7 乱码 基础知识 备份 奥运会 希望泉 性能 缓存 编程