陈莉君教授: 回望踏入Linux内核之旅(下篇)
从机制与策略探究Linux内核设计之道
2011年的Linux内核开发者大会邀请我做主题发言,但给大家分享些什么,起初选定Linux的安全,因为那几年的项目是这方面的。但是,当我着手准备讲稿时,才发现安全是个太广的话题,根本难以把握。于是想起自己常常告诉别人的话,从自己最熟悉的地方下手。于是,还是从自己最熟悉的Linux内核入手吧。但是,内核也是太大的话题,漫无边地,怎样才能在有限的时间把自己这么多年的体会分享出去,有两个词在瞬间跳在眼前:机制与策略,这也是自己常常挂在口边的词,怎样从内核的设计释义这两个词的含义,这实际上也是一个哲学命题。当开始写讲稿时,题目自然就蹦出来了:”从机制与策略探究Linux内核的设计之道“ 当题目确定下来后,才发现跳进自己挖的大陷阱中,这个涉及哲学、技术的宽泛题目我能把握么?但,没有其他令自己更满意的题目,只能是它了。因此,讲稿的第一页分别引用了易经和圣经中的两句话:“形而上谓之道,形而下谓之器”;“看见的是暂时的,看不见的是永远的”。这两句话一出来,思路一下子打开了。实际上,我要分享给大家的不是具体的技术,而是思考问题的方式。于是,第二页上引用了龙应台在”百年思索“中对文、史、哲的释义—”文学-使看不见的东西被看见,哲学-迷宫中望见星空,历史-沙漠玫瑰的开放“。当我们仅仅在技术的坐标系中看问题时,实际上总有一定的局限性,那些万事万物之间的联系因为我们固有的观念而被割裂了。至此,我定位了自己的位置:如果说”道“是一只大象(忽然想起老子说的“大象无形”,但我这里是偷换概念),那么我在这里讲的观点只是摸到了大象的鼻子。这样以来,自己一下子释然了,我并不是什么专家,我只是在这个领域呆的时间长了,比大家早知道一些东西,多知道一些道理,有些感悟,但远不是全部事实。 当这样的开场白后,讲稿上打出屈原“天问”中的几句(这是学人家龙应台)“天何所沓 十二焉分 日月安属 列星安陈 何阖而晦 何开而明 角宿未旦 曜灵安藏”,屈原一个文学家,怎么问天文地理不着边际的这些问题:“天为什么和地相合,...",这是为了引出胡适的观点“做学问要在不疑出有疑”。 引子部分全部结束后就进入主题,首先用一组数据观察Linux内核演变历史,然后,从Linux整体结构入手,分析机制与策略分离的设计原则,再然后,从各个子系统中这一设计原则的应用入手,说明机制与策略的分离实际上是计算机科学中的设计理念,而不仅仅用在操作系统中。最后引出手机操作系统Android以及虚拟机xen的设计思路。 回头看整篇讲稿,与自己最初设想的根本不一样了。一件事情动手做起来以后完全是按照事情本身的规律往前走了,而不是脑子固有设想的非得怎样去做,也许这也是一种“道”。 后来,华为的深研所,西研所,北研所邀请我去他们的大讲堂讲讲关于Linux内核方面的东西,“从机制与策略探究Linux内核的设计之道”的通用性省却了我每次要重新准备讲稿的时间,而把大量的时间花在了解他们具体的需求上,在不同的地方,面对不同的人群,只需要针对具体需求实例化后进行发挥,就有游刃有余的感觉了。
迷时师度 悟了自度
曾在企业实习的学生发来邮件说,企业在培训中推荐他们阅读侯捷写的《迷时师度 悟了自度》一文,我读罢叹为观止,先把其中的故事贴过来:
● 六祖坛经 佛教东传中土之後,虽然大德大贤备出,但由中国和尚所著,被奉为「经者],也只「六祖檀经」一书而已。六祖檀经记录着佛教禅宗六祖惠能一生的思想言行。其中对於六祖得道的过程,有详细的叙述。 六祖惠能俗姓卢,南海新兴人。年少失父,母且寡居,家亦屡空,业无腴产。所以他从小做了樵夫,养家活口。有一天偶闻肆间诵金刚般若经,心有所感,於是询问邻人何处学佛,遂安置母亲,至河北黄梅山礼拜五祖。
●五祖弘忍 五祖弘忍见惠能谈吐甚有根性,不动声色地让他到後院碓米。八个月後有一天,弘忍告诉众弟子说,每一个人写一首偈,谁能悟道,我便传他衣钵。当时人人以为五祖座下第一大弟子神秀必得衣钵,所以也没有人去作这首偈。神秀在这种情况下,一来「责无旁贷」,二来也想让师父看看自己心中的见解,便在三更时候於南廊壁上写下心偈一首:
身是菩提树,心如明镜台; 时时勤拂拭,莫使惹尘埃。
第二天五祖弘忍见到了这首偈,把神秀叫到座前询问。并谓:「汝作此偈,见即未到,只到门前,尚未得入...」。要神秀回去再作一偈。过了数天,神秀却作不出来。
●千古名诵 有个童子行过碓房,唱诵神秀的偈。惠能闻後,问明缘由,便请童子引至大堂。礼拜之後,惠能说自己也有一首偈,但是他既不识字更不会写字,乃请人代书写下千古名诵:
菩提本非树,明镜亦非台; 本来无一物,何处惹尘埃。
此偈一成,众总皆惊。消息传至五祖,了然於心,但恐人损害,遂脱了鞋子 当抹布,立刻把这首偈擦掉,并且说「这首也嘛没有悟道」! 第二天,五祖弘忍悄悄来到後院,看到惠能把大石头系在腰上,增加身体的重量来碓米,很是感动,於是和惠能展开一段非常空灵神妙的对话。弘忍问「米熟也未」?惠能曰:「米熟久矣,犹欠筛在」。於是祖以仗击碓三下而去。惠能知祖意,是夜三鼓入室,由祖为说金刚经。当说到「因无所住而生其心」,惠能大悟,於是五祖授衣钵以为信,并且说「衣为争端,止汝勿传...,汝须速去,恐人害汝」。
●迷时师度,悟了自度
五祖弘忍亲自送惠能到九江驿,令上船,把自摇。惠能曰:「请和尚坐,弟子合摇」。祖云:「合是吾渡汝」。惠能云:「迷时师度,悟了自度」。
我的观点:
●谁是师?
古人一字,涵盖多义。我常常会觉得自己为师多年,是当仁不让的师,可有一天与一位40多岁还从头学计算机编程的人聊后 ,就从心里认他为师,不是因为他的知识,而是因为他纯粹的学习兴趣和没有功利心而为的劲头。
●怎么悟
一个“悟”字,太有禅意,似乎遥不可及,但每个人都有感受到悟的时刻,只是当你寻找悟的感觉时,它反倒跑的无影无踪。追溯“悟”的源头,大都是因为日思夜想,吞下无数文字,驰骋于思维的高山峡谷,有那么一时刻,有了众里寻他千百度的顿悟。在这之前,一次次模模糊糊的感觉似影似幻,总困扰着你。如果放弃了,那本该触手可及的顿悟也就逃之夭夭。
●悟什么
比如,在Linux内核这样有禅意的作品中,高人的代码散落四处,那些代码后的文字和原理,或者一些经典原理落地有声的代码,关联起他们的,非文字所能描述,悟就别无选择了。