用过Linux的图形界面的人,都会感到反应速度与Microsoft Windows差得不是一点点。我一开始想不明白这件事:Linux的资源占用显然比Microsoft Windows要少得多,在486上就能跑得很顺,你试试在486上跑跑Microsoft Windows 95呢!直到有一天,有一个业界的朋友喝了点儿小酒,对我说了一句话,我就全明白了。他说什么?他说,Linux根本就他妈的不应该想桌面的事儿,它连GUI都没做到Kernel里!
做到Kernel里意味着什么?意味着不必经过系统调用,多过了一层,可以直接访问底层的资源。想怎么用,就怎么用。这种极高的权限,没有任何一个用户进程能达到,它们想要访问任何的资源,都要先向操作系统打报告。操作系统慢条斯理地从请求队列中一条一条地拿过来看,还要用几千个时钟周期来想想谁先谁后,还要防死锁了,还要平衡这个平衡那个了,等到用户进程的代码真正被推进CPU,已经黄花菜儿也凉啦! 所以说,如果一种服务想要真正跑得快,没别的话,你非得把它做到Kernel里不可。
很多人都来向我这个英语水平很差的人发问:你的英语为啥可以学得不错?呵呵,你看看人家外国的小孩子,那么小英语就开得极溜儿,什么方言俚语了,什么引经据典了,什么过去将来进行时了,人家张口就来。根本不像我们的一些同志,说一句洋文要想n久,考虑了语法,又考虑语义;考虑了语义,又考虑语序;考虑了语序,又考虑修辞。等他准备开口要讲的时候,嘿嘿,人家都睡着了!我的一个英语水平真的很好的朋友和我说,要记住一个英语单词,你只要在不同的地方看到9次,你就永远忘不了它。这是很好的经验,但我说即使这样,中国人还是怎么都学不过美国小孩子的英文,法国小孩子的法文,或是土著小孩子跳大神儿的咒语。人家那是做到了Kernel里的!我们的英文再硬,也还只不过是系统调用。只是“程序优化与否”的区别而已!当然如果比中文的话,那就是我们的Kernel了,这才是我们真正能够依赖的东西。
无论做什么技术也是一样的,如果始终是为了考核,为了奖金,为了非技术本身的东西去做技术,就永远也做不到Kernel里去。只有将它完全融入肌体和灵魂,才有可能出神入化。我特别喜欢Bruce Eckel的书,当然主要的原因的是它们写得好,另一个原因是它的名字也非常有深意。《Thinking in C++》,是的,你总是用英语或汉语思考,再转成C++的么?试着直接用C++去思考,把C++做到你的Kernel里去!试试看,你会发现自己能够做到自己原来想都不敢想的事,达到自己原来想都不敢想的高度,你就是一切的操作系统。
发表回复