第七步:模块架构图

  透过模块间的依赖关系图,可以很清楚的表达模块在整个待分析代码中的地位和功能。基于此,我们可以将模块分类,整理出代码的架构关系。

  如cpufreq的模块依赖关系图所示,我们可以很清楚的看到所有的调频策略模块都是依赖于核心模块cpufreq、cpufreq_stats和freq_table的。如果我们把被依赖的三个模块抽象为代码的核心框架的话,这些调频策略模块都是建立在这个框架之上的,它们负责和用户层交互。而核心模块cpufreq提供了驱动等相关的接口负责与系统底层交互。因此,我们可以得到如下的模块架构图。

  当然,结构图并非模块的无机拼接,我们还需要结合查阅的资料去丰富架构图的含义。因此,这里的架构图的细节会随着不同的人的理解有所偏差。但是架构图主体的含义很基本一致的。至此,我们完成了待分析的内核代码的所有分析工作。

  四、总结

  正如文章开始所说,我们不可能对全部的内核代码进行分析。因此,通过对待分析的代码进行信息搜集,然后按照上述的流程分析出代码的原本始末是了解内核本质的有效手段。这种按照具体需要分析内核代码的方式,为快速进入Linux内核的世界提供了可能。通过这种方式,不断的对内核的其他模块分析,后综合得到自己对Linux内核的理解,也达到了我们学习Linux内核的目的。

  后向大家推荐两本学习内核的参考书。一本是《Linux内核的设计与实现》,该书为读者快速精简的介绍了Linux内核的主要功能和实现。但不会把读者带入Linux内核代码的深渊中,是了解内核架构和入门Linux内核代码的非常好的参考书,同时该书会提高读者对内核代码的兴趣。另一本是《深入理解Linux内核》,该书的经典我不必多说。我只是建议,如果想更好的学习本书,好是结合着内核代码一起阅读。由于这本书对内核代码描述的十分详细,所以结合代码进行阅读可以帮助我们更好的理解内核代码。同时,在分析内核代码的过程中,也可以在本书中找到具有参考价值的资料。后,愿大家早日进入内核的世界,体验Linux带给我们的惊喜!

  本文转载自:http://www.cnblogs.com/fanzhidongyzby/archive/2013/03/20/2970624.html