迈入Linux内核学习的神圣殿堂

发表于:2011-1-31 09:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  学习本身是件很玄乎的事情,有些人潇潇洒洒没见怎么用心就能够获得很好的成绩,而有些人则相反,投悬梁锥刺骨也还是成绩平平收获平平。这里面很大一部分的原因就是方法。当然因为每个人的情况并不相同,对于linux内核学习这件事来说,也就没有这样一个标准的方法存在,但是我们仍然可以来共同探讨一下如何才能更加有效的去学习linux内核。

  本期特邀请中国Linux内核领域的权威专家将针对在Linux内核学习过程中遇到的问题,给予解答。

  Q: 我想问一下专家,为了成为一名合格的网络工程师,他应该了解linux的那些方面?

  A: 既然是作为一名网络工程师,首要的自然网络方面的基础,比如局域网、广域网、各种网络协议等,操作系统本身只是作为将这些网络知识给予利用的一个平台。如果是希望从事linux平台上的工作,那么就需要对linux操作系统的系统架构以及工作原理进行一定程度的了解,当然对linux系统本身的使用也要非常的熟练,特别是要能够熟练的掌握linux平台上网络相关的命令、工具。

  Q:我想深入学习LINUX,打算从LINUX 0.01那一万行代码开始,你看合适吗?我接触LINIX不多,只有一些粗浅的知识,谢谢。

  A: 你的问题实际上可以分解为两个问题:如何深入学习linux,或者说如何学习linux内核?从哪一个版本开始学习比较合适,比如0.01?

  对于第一个问题,根据你描述的自己的情况,我的建议是:

  1. “先会使用它”,这也是linus本人的回答,也就是说首先要能够熟练的使用linux操作系统。如果连linux是什么、常用的操作都不会就去研究内核,是不可能入“门”的。

  2. 看懂内核源码需要一些操作系统、C语言等的基础。

  3. 对内核有个整体的理解和认识。这方面,lkd这本书,和我的linux内核修炼之道应该都能够帮助你。

  4. 会配置和编译内核,看得懂内核中的Kconfig和Makefile文件,这两个文件就是内核中的地图,看得懂它们,在内核里就不会迷路。

  5. 记住,学习内核就是学习内核的源代码,任何内核有关的书籍都是基于内核,而又不高于内核的。内核源码本身就是最好的参考资料,其他任何经典或非经典的书最多只是起到个辅助作用,不能也不应该取代内核代码在我们学习过程中的主导地位。因此你要做得是选择内核的一个部分或子系统,以韩峰同志对待日记的态度,严谨而细致得理解每一段代码的实现,多问多想多记。切勿抱着走马观花,得过且过的态度。

  其实也就是我在linux内核修炼之道中总结的:全面了解抓基本,兴趣导向深钻研;融入社区做贡献,坚持坚持再坚持。

  下面是第二个问题,从哪一个版本开始学习比较合适?

  我个人建议从新的内核开始,固然新内核的代码非常庞大,但并没有说非要求大求全,追求每个部分都要理解。学内核忌讳求大而全,如果对哪部分比较感兴趣,研究相关的源码和change就行了,当然仁者见仁智者见智,自己如果觉得从低版本开始更好更适合,那采用这种方式也未尝不可,毕竟各人的路还是各自走的。

  Q:尽管我知道Linux的内核有难度, 但是我还是想知道我要把C语言(或者汇编,再者其它语言)学到什么程度才能有足够的知识去学习Linux内核? -------感谢专家的回答.

  A:在《Linux内核修炼之道》的3.1节专门对类似问题做了回答,概括就是:

  首先,学习Linux内核并不仅仅只需要C语言的知识,还需要掌握一些操作系统的理论基础,甚至包括一些硬件的常识,毕竟linux内核源码是一个操作系统的核心代码。

  其次,对于C语言来说,也不需要很精通,但要能够链表等数据结构的C实现,当然对C越熟悉会越有帮助,意思就是说起码要能够看懂C代码。我们在研究分析内核源码的过程中,要去体会内核源码的美。
41/41234>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号