深度探索Linux操作系统 ——系统构建和原理解析
真正认真开始学习计算机是在2000年,当时书店里到处充斥着一系列如“21天精通xxx”、“7天掌握xxx”之类的图书,更有甚者宣称“24小时学会xxx”。既是高科技,又这么容易学,谁会拒绝呢?于是我走上了这一行。最初,确实如这些书所说,只要按照书中描述,将类似于Visual Studio等IDE安装到机器上,然后像搭积木一样,拖拽几个控件,再添加几行代码,一个程序就完成了。
短暂的兴奋后,好奇心驱使我想更深层次地探索这一切是如何发生的。于是我开始关注更多的书籍、更多的文章、更多的编程参考,国内的、国外的。但是,结果让我很沮丧,如果依然是用积木来举例子,我发现它们的区别就像一盒10块的积木和一盒100块的积木,只有量的变化,没有质的区别。有人说Win32编程更底层,于是我抛开MFC,研究Win32编程。但是,结局一样让我失望。其实它们也没有本质区别,只不过如果把MFC比作大块积木,Win32是小块积木而已。其间我又遍寻那些Windows内幕的书进行研读,也是铩羽而归,似乎前方已无路可走……
2003年4月毕业后,我到了中科院软件所工作,开始从事与Linux相关的开发。经历了从Windows到Linux转型的阵痛后,我开始喜欢上了Linux,因为它是开源的,我似乎看到了曙光。于是我开始疯狂地购买Linux方面各种各样的书籍,阅读各种权威资料,基本上网络上各种权威专家推荐的书籍在我的书桌上全部可以找到。其中,绝大部分是关于内核源码分析的书,于是我一头扎进讲解内核源码分析的书中。但是我很快淹没在庞大的内核代码中,几次都到了难以坚持的程度,但是我强迫自己坚持,强制自己接受作者的灌输。但是,最终的结果是:看的时候似乎明白,但是看完后感觉又什么也没有看。现在回头看,当初很有点像“盲人摸象”这个典故所描述的,在我还没有看清整个“大象”的时候,我就直接去研究“大象”的某些部分的构造了。
彷徨中,我又看到了另外一条路,低版本的内核。我就像一个在沙漠中饥渴难忍的人突然看到了绿洲,我甚至将低版本的内核打印出纸版,然后就像拿着伟人语录一样,只要觅得空隙,就虔诚地潜心研读。但是这条新路除了代码量小了点,与之前的相比并没有太多本质的区别,而且还有一个致命的缺点——早期版本的内核不能和工作中使用的Linux很好地结合。
2005年,我从软件所被派到了中科红旗。最初从事桌面操作系统的开发,使用的是基于Qt的KDE,因为比较成熟,所以当时做得更多的是一些维护工作。但是在我的探索过程中依然重复着上面的故事,没有任何的起色。转折大概出现在2007年,Intel因为一个低功耗平台项目开始和中科红旗合作,他们要在低功耗平台上开发一套Linux操作系统,我接手了这项工作。因为这个平台的处理器性能相对要低,所以对于操作系统的要求比较高。同时因为用于消费类电子产品,用户体验要求也与普通的PC环境完全不同。所以,基于已有的桌面系统几乎是不可能了。于是,我们开始从头开发和定制。
这个从零开始的过程,让我彻底认识了整个Linux操作系统,而不仅仅是Linux的内核。曾经对内核中很多做法和模块不明了,通过构建整个操作系统,我豁然开朗。比如,内核中的DRM模块,其全称是Direct Rendering Manager,从字面上看是直接渲染管理,这到底是什么意思?如果你仅仅从内核的角度来理解,相信我,你永远也不能正确理解它。恰恰是在构建系统时,亲手组装和调试图形环境,包括X、OpenGL、2D/3D图形驱动,让我明白了DRM的用途。这样的例子举不胜举。
经过这个过程中,我深刻认识到,学习操作系统,有三件最重要的事:第一是实践,第二依然是实践,第三还是实践。老祖宗说“纸上得来终觉浅”,唯物主义者说“实践是检验真理的唯一标准”,两句话中都蕴含着同一个道理——追求真理离不开实践。只是阅读、分析源码还远远不够,我们要动手实践,从实践中学习,实践反过来再促进思考。而且,实践也使学习不再是一个枯燥乏味的负担,而是一个乐趣。
通过这个过程,我也体会到,即使只为了学习内核,也不能将目光全部放在内核上。从整个操作系统的角度,从各个组件间关系的角度理解内核,效果反而更好。当对整个系统有了深入的理解后,再去理解组成操作系统的各个组件,会事半功倍。一旦从总体上理解了系统,你就会“艺高人胆大”,就可以尽情地“折腾”Linux系统了,因为每一个组件尽在你的掌握之中。而恰恰在这不断的“折腾”中,理论又得到不断的提高,从此进入一个良性循环。
很早我就想把这种方法整理成书,和更多的读者分享,希望帮助所有有志于操作系统、又尚在门外徘徊的年轻人少走些弯路。但是因为忙于生计,只能在有限的业余时间写作,所以直到2013年中期,才基本把整个书稿写完。
对于计算机而言,操作系统的重要性不言而喻,但它也是我们心中的痛,我将为此求索一生。如果有生之年没能成功,请将我埋在后来者脚下。
-
英语八级视听美文20篇视频
1.Tears of Joy.exe10.How Do I Love Thee.exe11.Being in Love.exe12.Unrequited Love.exe13.Napoleon to Josephine.exe14.The... 761 0 24-08-20 -
奈特消化系统疾病彩色图谱
如果在过去的25年里你曾经是一位医学生的话,就一定不会忘记已故的奈特博士在医学图谱方面的巨大贡献--他以生动的形象教学代替了刻板的灌输... 913 0 24-06-18 -
环球小镇小程序
"微信小程序开发-仿环球小镇案例源码"是一个典型的微信小程序开发实例,用于帮助开发者理解小程序的开发流程和技巧,通过模拟“环球小镇”... 1380 0 24-11-05 -
微信引流加好友单页网站源码 复制微信号可以跳到微信里
微信营销推广引流页面做项目必备带wap自适应 带修改说明,在其他浏览和qq打开,复制微信号可以跳转微信加好友,但是已经搭建有演示站,一... 416 0 21-06-24 -
25年腿姐考研政治全程资料
01.25腿姐马原强化1.pdf.pdf02.25腿姐马原强化2.pdf.pdf03.25腿姐马原强化3.pdf.pdf04.25腿姐强化马原4.pdf05.25腿姐马原强化5.pdf.pdf06.2... 1204 0 24-08-18 -
Unsplash - 极具美感的无版权图库
Unsplash是由Mikael Cho于2013年创办的一个图片社区,任何人都可以在此分享高分辨率的照片供所有人免费使用(无著作权)。如果你的日常工... 1509 0 24-08-08 -
学而思秘籍·初中语文文言文阅读专项突破
1076 0 24-07-14 -
教师资格证清晨读书计划
2022.06.22+传统文化之天文历法+艺楠(讲义+笔记).pdf2022.06.23+传统文化之神话传说+艺楠(讲义+笔记).pdf2022.06.24+传统文化之古代称... 1194 0 24-08-19
发表我的评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~