弯曲评论论文集(上)
(TekTalk Lecture Notes)
[谨于此文集献给以邓稼先(1924/6/25/--1986/7/29)/等为代表的,为国家和民族利益鞠躬尽瘁的科技知识分子]
弯曲评论编辑部
2012年6月25日
目录(上)
对中国系统软件发展的思考与建议
系统设计黄金法则:简单之美
浅谈性能优化方法和技巧
下一代互联网初探
Cisco和Junper操作系统简析
OpenFlow技术深入分析
多核系统大讨论与通信设备的思考
浅谈高端CPU的Cache Page-Coloring
ARM与x86
云计算数据中心网络技术
陈怀临
包云岗
KernelChina
高飞
杰夫
russellw
弯曲评论
陈怀临
王奇
Roy
对中国系统软件的思考与建议
陈怀临,首席科学家
《弯曲评论》
www.tektalk.cn
huailin@tektalk.cn
1. 引言
此原文成稿于2004年并发布于系统计算研究所网站上,并被许多网站转载,转眼近四年过
去。现重读此文,颇有感慨。现校订整理发表于此,对一些学术和技术观点做了一些相应
的补充或修改。关于中国系统软件的评论已经不少。大多数是从爱国主义与民族产业的角
度来阐述的。本文试图从技术的角度来探讨系统软件,并提出中国系统软件方面的问题,
更为重要的是,中国的机会所在。另外对要达到长远战略目标所应该做的一些准备提出一
些不成熟的建议。
2. 系统软件与操作系统
系统软件是一个比较大和泛的概念,很难有一个具体的定义。一般而言,我们可以认为:
操作系统(OPERATING SYSTEM),编译器与工具链(COMPILER AND TOOL-CHAIN),
编程环境(特别是高性能编程环境,如PVM, MPI, GLOBUS等等),中间
件(MIDDLEWARE,如CORBA, DCOM)等都属於系统软件的范畴。
其中,操作系统是系统软件中的一个重要部份。编程环境和中间件技术都是与操作系统非
常紧密结合在一起的。
一个国家在软件技术方面的强弱基本上可以通过其系统软件技术,或操作系统的水平来体
现。
换句话说,一个国家在计算机软件方面的发展战略,必须对操作系统的研发,使用规划等
等有一个清晰的认识和定位。不能绕过或有意规避。否则,对其它方面,如应用系统,是
把握不住发展脉络的。
操作系统按应用的领域划分,一般可以分为:桌面操作系统、服务器操作系统、嵌入式操
作系统等。比较典型的例子是:
× 桌面操作系统: Microsoft Windows Series、 Linux、 BSD、和其他的一些UNIX的变
种。
×服务器操作系统:高档Microsoft Windows和配套的Cluster。Linux/BSD/Solaris服务器和
相应的Cluster技术等,比较熟悉的系统应用如:Google的LINUX机群系统,Yahoo的BSD
服务器机群系统等等。
*嵌入式操作系统:从概念上来讲,这是一个比较模糊和混乱的灰色区域。从传统操作系
统方面(如LINUX,BSD等),工业界和开源社区花了很多力量力图将非实时
(real-time)的LINUX系统向嵌入式领域靠拢,典型的如:Monta Vista Inc 和FSMLabs,
另外VXWORKS也有很多的装机量。这些操作系统一般都应用在中低档嵌入式系统方
面;或高档系统控制平面(CONTROL PLANE)上。
从嵌入式设备公司的角度,对嵌入式操作系统的理解与经典的操作系统理解不一样,如华
为,中兴,Cisco, Juniper, Foudry等在路由器,交换机公司。从这些大型通信设备公司的
角度,其操作系统包括更广泛的内容,如CISCO的IOS和最近的HFR/CSR,
JUNIPER的JUNOS等等,传统的操作系统在这些大型的嵌入式系统中扮演着一个内核或
基础的地位,并且被人为的修改以满足高档嵌入式系统,特别是高端系统特殊的需要。当
然有一点可以肯定:即使对於CISCO和JUNIPER这样的技术力量非常雄厚的公司而言,他
们在传统操作系统方面的能力也不强,这也是为什么他们系统的基础仍然是传统的操作系
统,比如CISCO 的HFR建立在QNX/NEUTRINO微内核(Micro-Kernel)的基础上。JUNOS的
控制平面建立在BSD的基础上,数据平面(DATA PLANE)软件部分建立在一个微内核
上。有一点要注意:CISCO和JUNIPER的重点是在其数据平面。但是控制平面软件工作量
和复杂性更大,要求更高。
在嵌入式操作系统方面,另外一个巨大的使用领域是Mission Critical Systems. 比如,美国
宇航局(NASA)的火星探索器上的软件系统,大型军事监控系统,航空控制系统等等。
这方面要注意的公司是Green Hills Inc. (www.ghs.com). 笔者认为,NASA目前仍然没有放
弃VXWORKS的主要原因是代码的历史遗留(Legacy)问题。目前在军事方面的OS应
用,Green Hills已经取得了主导地位。Green Hills RTOS系统的核心是ARINC-653。在这
方面,开源的LINUX,BSD 等等向ARINC-653方面发展的可能性不大,即
使IBM在LINUX后面出钱出力。单靠自由软件的力量在Mission Critical系统方面有所作为
可能性不大。
从上述各个方面的阐述分析,我们要考察的是我们的贡献在哪里?更重要的是,我们的重
点应该放在哪里?
3. 中国系统软件的现状
随着芯片设计产业在中国的逐步发展,中国的系统软件研发面临着一个进退维谷的境界。
最近几年来,大陆陆续推出了一系列的中低端的通用CPU,SoC和一些专用的DSP芯片。
通过发布的信息,可以了解一些性能参数,比如:
“据参与项目开发的技术人员介绍,目前的龙芯2号最高频率为300MHz,功耗1W-2W,成
品率约为80%左右。通过使用相关测试对龙芯2号的性能分析表明,相同主频下龙芯2号的
性能已经明显超过PII,达到PIII的水平,设计人员称龙芯2号的设计SPEC CPU2000分值可
达到300分以上,设计频率在500MHz以上时性能可与1GHz以上的PIII或PIV的性能相当。”
从上述参数可以看见,通用CPU设计方面我们已经开始起步并且积累了一定的工程经验。
关于龙芯的更多资料可参阅www.xtrj.org/godson. 虽然对于硅谷的CPU或网络处理器公司而
言,做一个MIPS的CORE的CPU是一个相对并不复杂的工程项目,但毕竟是我们自己从无
到有走了一回。工程经验价值很大。
但我们在系统软件领域基本上是没有任何量化的成绩。基本是LINUX, BSD等的一些相
对简单的移植,基本上还没有涉及到BSP的地步。KERNEL的重要工作和贡献就更无从谈
起。我们在商业操作系统方面的工作表现比较清晰,也就是基本上没有真正市场化的系
统。在对开源操作系统方面的参与和贡献方面,通常几个标志性的判别指数是:有多少人
能将代码加LINUX, BSD的代码系统里?应该是不多。有几个有影响力的系统级的项目
在http://sourceforge.net上?引用数是多少被用户下载的数量是多少?开源社区的人参加共
建的数目是多少?
我们的贡献基本上接近为零。这就是现实。没有任何非常突出的贡献。
我国的商业系统软件公司其实并不少。但好像主要还是在汉化方面和用户界面的调整上做
一些工作,再深一点的,就是对不同的用户需求,做一些相应的定制裁剪工作,比如,对
企业单位的系统集成,调试和安装。红旗LINUX是其中比较典型的一个代表。下面的的
链接是红旗LINUX的产品介绍:http://www.redflag-linux.com/chanpin/index.php。在其网站
上,对其产品的介绍是这样描述的:“红旗软件提供高端服务器操作系统、集群解决方
案、桌面版操作系统、嵌入式系统以及技术支持服务和培训等一系列的Linux 产品和服
务,开创全新的计算体验,帮助企业增强其整体竞争力,提高个人工作效率,将用户业务
价值和 Linux 的自由开放精神有力地结合在一起。”
我们可以看出红旗LINUX的产品和市场方向:LINUX为操作系统的数据中心服务器,企
业服务器,LINUX桌面系统,和嵌入式产品等等。下图所示是红旗Linux描述其“红旗核心
技术”的体系结构。
在红旗Linux的网站上,引人注目的是这样的词汇:“红旗嵌入式核心技术框架”。从图
中,笔者无法判断红旗LINUX的技术在那里,对开源社区的贡献在那里。在Linux核心的
工作在那里。笔者的观点是:还没有或者没有公布。与之相反, MVISTA
IN(www.mvista.com )在对LINUX KERNEL PREEMTPTION对方面的贡献很大,其许多工
作已经进入LINUX 2.6中。另外,MVISTA开发的大量工具也为基於LINUX的应用程序开
发提供了非常重要的支持。
FSMLabs 是另外一个在LINUX领域,特别是实时方面,比较引人注意的一个。他们通过
一个LKM的方式将原来LINUX的中断处理程序和调度截获,并将自己的调度算法放入其
中,其模块称为RTCORE。通过提供一套RT_THREAD的编程方式,用户可以编
写EITHER 用户态的实时程序OR核心态的实时程序。这种显示的将UNIX
DOMAI与REAL_TIME DOMAIN在调度上分开的方法在一定的程度上解决了经
典UNIX(如LINUX,BSD)等等操作系统核心操作的非确定性而带来的非实时性的重要问
题,比如:要支持高速的硬实时的应用;控制平面和数据平面没有分开的中高档网络通信
设备(如路由器,交换机,防火墙等等)。
上述是举了两个例子来说明别人的工作在什么方面。当然,MVISTA和RTLINUX在技术
上多有问题需要解决。笔者会在下面的章节中讨论。
总之,通过阅读红旗LINUX其他产品的介绍,我们大概可以得出这样的结论:红
旗LINUX基本上还是一个LINUX产品的集成和发布商,基本上无单独二次深层开发的计
划或能力。
在整理此文时,笔者发现,红旗Linux现在已经将飞漫软件公司的Linux为基础
的MiniGUI图形系统融入其红旗Linux的嵌入式解决方案中。这确实是一个不错的进步。
在2004年这篇文章成文时,还没有这个集成的方案。笔者认为,MiniGUI的对低档嵌入式
设备或便携式设备(内存都比较小)是一个不错的应用软件。笔者将在以后专门写一篇评
论文章介绍飞漫软件。
“一叶而知秋”。通过对红旗LINUX的技术结构的考察,我们可以这样认为,国内其他的类
似的做Linux销售、集成、定制的操作系统公司应该都处于这个层面上。
2006年,国防科技大学发布了其麒麟操作系统。这一新闻在网络上引起了激烈的讨论。许
多BSD的技术人员通过分析得出麒麟操作系统其实是FreeBSD的一个克隆。其中一篇从内
核相似性分析的技术文章引起了广泛的注意:麒麟操作系统内核同其他操作系统内核的相
似性分析。从文章作者的数据分析,其结论是:“Kylin 2.0.0和FreeBSD 5.3的相似度达到
了60.26%,与FreeBSD也达到了59.04%的相似度”, “从已知的数据我们只能说,创新可能
只有10%到20%之间”。
其实就麒麟操作系统的创新性和独立研发的程度,国防科技大学,在受到各方面质疑后,
也公开表示麒麟操作系统不是一个独立研发的系统,而是一个充分利用BSD社区的微内
核Mach和FreeBSD5.x的基础上经过一些算法修改和增添一些新功能而来的。下图所示为
国防科技大学的相关声明: