linux内核学习资料总结

接触linux三年有余,虽然离通晓linux还有很远的距离,但是已经有些心得,先记下来。

为了学习linux看了很多书试过很多方法。虽然linux内核非常庞大而且发展很快,但前人也在不断给我们留下宝贵的学习资料,供后来者入门进阶。现在梳理一下各种学习资料的。

先看一些有关源码的数据:

4.19的内核,只统计c文件和头文件,总行数是49753954,接近五千万行。按顶层目录划分的组成分布如下:

去掉driver

从数据上看代码量最大的driver,大约占到一半,可喜的是这部分代码一般不用去看,其次是arch,一般只看你说关注的部分,代码量有减少很多,但是即便是只有10%也有五百万行,要说有人能够通读内核不太可能,Linus也没这功夫。好在没必要通读内核就可以了解内核的原理,当我们了解内核工作的原理,想要更深的了解某一块时就容易多了。在对linux了解不多的时候阅读前人留给我们的总结资料是入门的进阶不错的方法。下面总结下我所了解的有关内核的书籍。

入门实践类:最好的教材应该是《linux鸟哥的私房菜》,现在已经是第四版,这本书深入浅出的讲解了linux基本操作常用命令。实在是入门linux不可多得的好书。对于linux新手强烈推荐。

源码分析类:linux的源码非常庞大,要想把源码全部分析几乎是不可能的,因此一些人会对linux早期的代码拿来进行分析,他们中的优秀代表就是赵炯的《linux内核完全注释0.11》和中科院的《linux内核设计的艺术》,他们都是基于linux0.11版本进行分析的。前者讲解比较细致,几乎所有的源码都有注释,后者讲的整体性更好更流畅一些,看书同时结合源码将会对linux的整体结构有较深的理解。此外近年来有国内讲解4.x内核的书籍,如张天飞的《奔跑吧Linux内核》是基于arm架构的。

成熟版本整体分析类:这一类的书较多而且非常有名:国内的《linux内核情景分析》(2.4)《深入linux内核架构》(2.6)《linux内核设计与实现》(2.6)这基本书几乎是linux内核学习者的标配,linux发展到2.x代码量已经跃升至千万行,此时逐行分析是不可能了,这基本书按照模块划分,前两部是大部头的书,讲的较为详细,后一本几乎是提纲挈领式讲解,比较轻薄。这些书读过之后可以当做读内核源码的索引。

外设驱动类:linux内核之所以庞大,原因之一在于driver代码量极大,几乎占到总量的一半。上述的内核书籍侧重于整体分析,放到驱动编写部分就相对少些。专门的外设讲解书籍有著名的《linux设备驱动程序》,国内也有宋宝华等的驱动编写的书。

环境编程类:APUE是这个领域的王者,其他书就不需要看了。要说他有什么用,一般我们操作linux时常用到系统提供给我们的命令比如ls、rm之类,学了apue你就知道这些命令是如何实现的,甚至你自己也可以写替换这些命令的程序。

自己动手写内核类:为了学习操作系统,亲自动手实践也是很好的方法,这一类也有不错的书籍推荐,比如郑刚的《操作系统真象还原》于渊的《一个orange‘S操作系统的实现》日本的《30天自制操作系统》还有《x86汇编:从实模式到保护模式》,还可以看前面提到过得《linux内核完全注释》如果能够亲自实践将受益匪浅。其中《真象还原》所讲的内核最接近linux,此书讲解非常详细,从硬件架构到源码编写都讲解的非常通俗,新手强烈推荐。自己写内核还可以学到很多硬件架构汇编以及编写大型程序的很多实际知识。本人参考上述书籍也写了一个远不及作者的内核,确实收获很大。

猜你喜欢

转载自blog.csdn.net/wujianyongw4/article/details/86414013