2000年5月,在Mark Himelstein橄榄枝的召唤下,我重回Sun,任Solaris内核研发总监。我发现这里可真谓人才济济,高手如云。一个小伙子,Andy Tucker,居然是高级工程师。问他做什么项目,回答很简单:虚拟化。这家伙!当我没念过书吗?计算机中90%的学问就是虚拟化。但几个月后,我明白了,他的确是在做计算机中90%的学问。Andy不到20岁就从斯坦福大学毕业了,直攻博士后,进入Sun继续研发Solaris内核技术。他先加强scheduler,让Solaris的扩展性从一个到上千个用户,可以线性扩展。之后,在Tim Marsland的鼓励下,Andy以虚拟技术为基础,继续提高Solaris的扩展性。四年后,Andy带出了Container,使Solaris的扩展性达到世界第一的水平。.
我和Tim Marsland做了五年的邻居。在有名的MPK17大楼的三楼,我的办公室位于一个角落,他就在隔壁。Tim是Solaris内核的灵魂。他的办公室总是门庭若市,每天都有工程师、经理、总监来找他,还有副总裁等人找他。做他的邻居,沾光不少,也因此认识了Sun公司的各方豪杰,其中不少就在MPK17的三楼。Michael Shaparo和Bryant Cantril是多年的好友,他们在布朗大学就是一对搭档。Bryant毕业后到Sun,Michael则留下攻读硕士。一年后,Bryant跟着Michael进了同一家公司,也一起平步青云。在没有经理人的指导下,他们写出了aTrace——一个用来追踪内核中内存地址的软件工具。我问Bryant下个项目要做什么?“DTrace”他想都没想就说了。这个工具可以迅速诊断全系统的运行,也能细查小单位的优化状态,是公司运行的一大利器。
MPK17的同事们有几个好喝两杯。一天我走过Stephen Hahn的办公室,一股酒香扑鼻而来。里面的几个人或站或坐,神秘兮兮的,一见我,都不说话了。过了两天,Stephen Hahn自己到我的办公室来了,要我准他做他的“星期五项目”。 至于“星期五项目”是什么,照例不必问了。这有点奇怪了。原来,他不是要我批准,而是要我保密。他也不知道我那天听到了多少,反正不论如何,我不得泄露风声。这个项目,就是Greenline。后来改名为Solaris Management Framework(SMF)。
Cindy McQuire不在那群酒友当中。她是当时少有的女性资深工程师,个性平和,做事周密,说话中肯。我有意请她做经理,她却一口回绝了。第一,她的故障管理当时做了一半,后一半不做不行;第二,软件工程比软件管理有趣多了;第三,她有两个孪生女儿,她要让她们知道,女性软件工程师不比男性差。我哑口无言,她也就去带FMA队了。Cindy善于踢男女混合室内足球,所以经常带伤上班。
另一个不在那群酒友中,但酒量却不错的是Paul Sangster。我在做内核时,需要知道一些安全方面的知识,Mark Himelstein要我和他聊聊,这一聊就是三个小时。最难得的是他在三小时内清楚地解释了什么是Single Sign-on。我后来就任网路及安全总监和Paul有很大的关系。要Single Sign-on,必须有个完整的加密系统。Solaris Encryption Framework就是这样做出来的。这套软件让客户用自己的算法,不用国家检验,不受出口管制,也不需美国知道算法。安全界的Glenn Faden和Gary Winiger,埋在Trusted Solaris里十几年。他们耐心教我其中复杂的观念,坚持Trusted 10的架构。加上Scott Rotondo,几个人把Solaris 10做成了世界第一安全的操作系统。Scott想出了一个办法,可以安全且高速地给每个文档签名。为了保险起见,他向Whit Diffie请教后才开始使用。他常说要发表,取名为Diffie-Rotondo Algorithm(外行人请搜索Diffie-Hellman Algorithm)。
当大家知道我也能喝两杯后,Sunay Tripathi带着一瓶Scotch来到我的办公室。当时是晚上六点多,他带着他的经理、三个杯子、一瓶酒出现在我门前。一看来者不善。好在我还能抵挡,不过也给他骗去了几小时,定下他CTW的蓝图。几周前,我要Sunay想想如何能改变全世界(Change the World)。他要带烈酒来配合这个大题目(通常别人只带些红酒来,诉诉苦,解解闷)。Sunay接着“Brutus”(Bruce Curtis)后,写出了FireEngine,让Solaris的网络功能增强三倍以上,足以和任何操作系统抗衡。
周曙东是IO(Input/Output)领域的突出人物,也是华人工程师的明灯。他一头钢丝乱发,身材飘逸,走在长廊里,像个大学教授。在Solaris 10后期,曙东临危受命,接下新的启动程序项目,重写了Solaris十数年没动过的启动系统。启动时间从数十分钟减到十数秒,带上漂亮的图面,大幅度提升了可用性。
Jeff Bonwick是另一位领袖。他从CalTech(加州技术学院)毕业,两三年时间就成为Sun软件工程界的著名英雄。早年他和Roger Faulkner合写了一个软件工具,可以极快地安装软件包。他们说是英雄就要用快刀。这“快刀”叫bfu。他们说是Blindingly Fast Utility,可是每个人都说是Bonwick Faulkner Utility。Jeff带了个团队做新一代的文档系统(ZFS),如果说宇宙中每一个原子都是一个文档,这个系统都能容纳。当然,当真如此,也没原子给我们人类了!
如果说Jeff是把快刀,Bart Smaalders就是门重炮。他出身机械工程,出道时在国防工业做事,制造战车。他一头乱发,一脸大胡子,雨天时戴个宽沿皮帽,形象和软件工程师实在不符。Bart是Solaris的哲学家。他坚持软件开发的程序和精神——把问题定好、数据收齐、提出方案、试用、审议、再收集数据。问题解决了,就行了,不必再啰唆。这一哲学,是Solaris队伍共同的信念。他的libmicro项目,就是这一哲学的具体实现。Cindy McQuire坐Bart隔壁,她收集了些Bart的名言贴在门口,称之“Bart语录”(Bartism)。
Solaris 10经历了四位副总裁,历时四载,参与的工程师达1500人以上,是Sun有史以来最大的系统项目。2002年,John Loiacono决定重新进入x86,并在北京组建百人驱动程序队伍。我在美国聘到何英,在中国和宫力合作,三个月雇了近40人。之后Bev Crair到任,一年后扩大到90人。2005年Solaris与JDS队合并。北京的Solaris队伍已达180人,北京成为在美国Menlo Park以外最大的地区。
我有幸主持了Solaris PAC(Product Approval Committee),在2005年1月底推出产品。一年内新用户超过300万,打破所有Linux版本的纪录。产品开发中的主要人物可比梁山泊108条好汉,个个本事高强、个性鲜明。..
大中国区,是世界仅存的IT战场。从操作系统的角度,只有开放和封闭两个选择。封闭的路,会让一家公司控制整个市场。自主创新必须走开放的路。本书读者选择的就是这个战场。我相信,中国区中的读者,一个都不会选错。在开放的这边,Linux和Solaris是同源亲家。Linux这个小老弟,近年来在这方面跑得快些。可是Solaris路走多了,不需回头走冤枉路。读者可以两者兼得。站在巨人的肩上,迈的步又快又大。人聪明、志向大、底子厚、工具快,创新立业,有何困难?
Sun中国工程研究院院长,王星耀
2007年春
原序
过去十年来,人们对操作系统普遍有一种误解,认为它已经是一个已完成、已解决的问题,虽然操作系统仍能引起人们的兴趣。产生这种想法的原因是多方面的,但其中最大的因素可能只是因为操作系统没有被理解;在很大程度上它们不是作为透明系统,而是作为专有的黑盒子发布的,甚至无法满足人们简单的好奇心。这与理解操作系统是格格不入的;如果某项事物不能被分解,即它的内部工作机制是隐藏的,那么它的复杂结构和工程上的细微差别将很难被理解。对于软件系统尤其如此,它们甚至不能在传统的意义上被分解。尽管软件的象征意义是信息而不是机器,但一个封闭的软件系统就像一个工程化的系统一样不易被理解。
这就是Solaris大约在2000年时的状况,它确实没有被很好地理解。它的内部结构和工作机制仅仅在令人费解的注释或者旧的USENIX论文中公开描述过,它的行为对于当时的工具是不透明的,源代码深藏于“密室”之中。从2000年开始,情况开始(可能是慢慢地)好转——这部分归功于Jim Mauro和Richard McDougall的《Solaris内核结构第1版》所开创的先河。Jim和Richard面临极大的挑战——描述一个如此复杂的系统,而事实上却没有一个人真正理解它的全部。在写作过程中,Jim和Richard认识到一本书根本不能完全涵盖它。尽管内容一再压缩(例如不包括网络部分),《Solaris内核结构第1版》仍然厚达600页以上。
《Solaris内核结构》的出版标志着过去十年的前五年是加速变化的开始,使用和理解Solaris的障碍已经被清除。Solaris成为自由软件,它的工程师们开始通过新的媒体(如博客)广泛谈论它的实现,最重要的是,Solaris本身在2005年6月成为开源软件,成为第一个从专有转变为开放的操作系统。同时,Solaris的机制变得更加有趣,几项革命性的新技术在Solaris 10中首次亮相。这些技术动摇了很多人的怀疑,并证明了操作系统仍然保持活力。当然,仍有一些困难的、重要的问题有待解决。
如果将2000年看作是Solaris变化的开始,2005年就可以看作是这一开始的终结。到2005年末,曾经看起来已完成的专有产品已转化为一个令人激动的、开源的系统,系统的潜能使其更具有活力。恰巧《Solaris内核结构第2版》迎来了这些变化。面对一项异常艰巨的任务,即如何反映五年来的大规模的工程变化,Jim和Richard做出一个重要决定——他们邀请那些设计子系统和编写代码的工程师给予帮助,其中的一些章节完全是由这些工程师们在自己所设计的子系统的基础上编写的。得益于此,《Solaris内核结构第2版》成为一部得到极大扩展且具有高度权威性的专著——同时很好地保持了社区开发和写作这一新的Solaris时代精神。
就我个人而言,我很高兴看到Jim和Richard使用了DTrace,Mike Shapiro、Adam Leventhal和我在Solaris 10中开发了这项技术。Mike、Adam和我都曾是操作系统课的助教,我们有过一个非公开的目标,即开发一个教学工具以彻底改变操作系统的教学方式。因此,我鼓励读者不仅仅是要读《Solaris内核结构》,还要下载Solaris,在台式机、笔记本或虚拟机上运行它,并使用DTrace在自己的机器上亲自看看Jim和Richard描述的概念!
.不管你是学生还是专业技术人员,是因为课程、工作还是因为好奇来读此书,我都很高兴大家能阅读这本Solaris内部机制的指南。享受这一过程,并记住Solaris并不是一件已终止的工作,而是一项不断发展的技术。如果读者有兴趣加速这一发展,或者仅仅是对于使用或理解Solaris有问题,请加入我们http://www.opensolaris.org的很多社区。欢迎您的到来!...
Bryan Cantrill
旧金山,加州
2006年6月