学习的过程是漫长的,有一本优秀合适的教材,无意是一个无形的良师益友,他可以使我们免走很多弯路,使我们以比较合理的思路去理解他。对于linux的学习,由于他牵扯的内容很多,有计算机体系结构的知识,操作系统的知识,网络方面的知识,嵌入式硬件的知识。学习linux基本上将计算机所有的东西都融为一炉。对于这浩如烟海的内容,大部分人会望洋兴叹。
但再大的困难,我们只要将它分解,去各个击破,总有解决的时候。所以我们需要的只是勇气,方法和时间。对于认识一个事情,我认为如果能从总体和局部双管齐下的去把握,是会很高效的。所以我给需要学习linux系统的童鞋一些学习路线图和相应的教材。
首先整体把握,这方面的教材比较经典的有《linux内核设计和实现》,这本书很适合入门级的学习。里面内容比较通俗浅显,但很容易给大家建立一个对linux整体认识的概貌。在学习这本书时,最好结合操作系统原理之类的书,目标就是理解基本原理,并对一个真实的系统概貌心中有数。将这本书学习完后,会在脑海里建立linux系统的整体框架。之后学习《深入理解linux操作系统》,这本书比起前一本有更多技术上的实现细节,是我们渐渐深入到代码级的实现。通过这本书的学习,我们会对内核里面的一些编程特点有一个特别的认识。对一些我们理论到实践过渡的实现技巧而拍手叫好。这两本书学习应以一个半月时间为宜。最好是看书并结合浏览源代码,及时写总结,体会。通过不断的实践,去加深理解。如果能将这两本书拿下,那应该已经有了高屋建瓴的认识了。
之后,我们需要精读linux的内存管理,文件系统,网络,进程调度,驱动等模块。这个过程应该是更漫长的。但这个过程对我们对这几个模块更深入的了解,我们的代码水平的提高都是很有裨益的。在研读这几个模块时,我还是坚持整体把握和局部细化分解,各个击破的策略。这几个模块也有好多经典的书籍,比如《深入理解linux内存管理》,《深入理解linux网络内幕》,《深入理解linux设备驱动》等。这个过程我们应序号自己的喜好,不肯能在短期内将所有的模块都精通学透。一般优先选择内存管理,网络,其次设备驱动。每本书应该耗时在一个月时间或更多。注意点和上述相同。
在经过你坚决的决心后,在经过你漫长的学习后,你会站在一个高度,这个高度是一种一览众山小的感觉。你会对一般的系统能从整体上把握,你会对有理论框架到实现有一种实现力,你的代码水平也会有质的提升。在你付出漫长的时间,经历代价后,你会收获持久的成就感和喜悦感。快乐的学习linux吧,去发现属于你的神奇!