从11年下半年开始,对Linux内核发生了兴趣,我想:对一个好奇的程序员来说,他总是对某个东东是怎么实现的感兴趣的,那么,越来越底层是其必然。就我个人而言,路径之一是用库编程->用系统API编程->kernel实现?于是在近2年的时间里,对OS理论/Linux Kernel的书籍/代码,做了一番不小的投入,结果嘛……有兴趣看我后面写的东东^_^
此系列书籍分三类:
1.OS理论,即大学课程《操作系统》使用的教材类,Andrew S.Tanenbaum的《Modern Operating Systems》为其代表;
2.OS API编程,即OS API的理解及使用,W.Richard Stevens的《Advanced Programming in the UNIX Environment》为其代表;
3.Kernel,即OS kernel 设计、分析、源码、驱动开发等,Robert Love的《Linux Kernel Development》,Daniel P.Bovet & Marco Cesati的《Understanding the Linux kernel》,赵炯的《Linux内核完全注释》,Jonatban Corbet等人的《Linux Device Drivers》为其代表;
后面再对各类书籍详述,从我阅读经验来看,建议的阅读顺序是OS理论看一本(不必精读)->细看OS API的一本并实践->看kernel你希望了解的方面再结合OS理论的书看。这些书中,大部头很多,但千万别害怕,如果你想在程序员的领域做个大牛、专家,操作系统不通是不行的,是否要深入到kernel另当别论。想深入,一定要有花几年时间的准备,而且一定要看源码,否则泛泛看过,很快就还给作者了。
随便写几句:
1.目前,国人都很浮躁,我也是其中之一,很多程序员对OS完全木有了解也混得很稳当,还能转型成内行领导内行的前面哪个内行,如果您的追求是这样的话,您不必往下看,不适合您。
2.对OS来说,如果您想花上年内的时间,看上几本书,就成为专家,那么我打包票您会成为“半瓶水”,似乎懂几个术语,能用几个API,但出现疑难杂症、跑死跑飞、严重的性能瓶颈时,您发现您了解得还是不够。但是你如果打算用5年的时间成为专家,那么可能3年就够了。
3.成为OS的专家未必带来对应的高收入、轻松,只不过在分析很多问题时,能高屋建瓴、知其然更知其所以然、对代码的运行了然于胸,也就是,满足您探究原理、把握未知或是吸引程序员小mm的崇拜目光的一种虚幻的成就感,仅此而已^_^
4.以上不代表我是OS的专家,只不过是一程序员愤青的阿Q式表述,仅供娱乐,请勿当真。