当前位置:新闻中心行业动态 → 正文

对中国系统软件的思考与建议

责任编辑:cres 作者:陈怀临 |来源:企业网D1Net  2022-01-27 12:50:10 本文摘自:弯曲评论

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. 笔者认为,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核心的工作在那里。笔者的观点是:还没有或者没有公布。与之相反, MVISTAIN(www.mvista.com )在对LINUX KERNEL PREEMTPTION对方面的贡献很大,其许多工作已经进入LINUX 2.6中。另外,MVISTA开发的大量工具也为基於LINUX的应用程序开发提供了非常重要的支持。
 
FSMLabs 是另外一个在LINUX领域,特别是实时方面,比较引人注意的一个。他们通过一个LKM的方式将原来LINUX的中断处理程序和调度截获,并将自己的调度算法放入其中,其模块称为RTCORE。通过提供一套RT_THREAD的编程方式,用户可以编写EITHER 用户态的实时程序OR核心态的实时程序。这种显示的将UNIXDOMAI与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的基础上经过一些算法修改和增添一些新功能而来的。下图所示为国防科技大学的相关声明:
 


 
通过上述的数据和文字,笔者认为,在肯定国防科技大学的确做出了非常多的独立自主的技术开发之外,也要清醒的认识到,麒麟操作系统离操作系统核心的关键技术的创新还是有不少差距的。关于笔者对麒麟操作系统的更多评论可参阅文章:对国防科技大学麒麟操作系统的思考一文。
 
下面我们来考察一下国内的大型通信监控软件的发展情况。
 
华为,港湾等国内的高端嵌入式系统好像没有在系统软件方面有自己的东西。从各方面的消息来看,许多产品是基于VXWORKS,Linux和其他一些第三方的操作系统。另外华为与CISCO的官司也是弄得路人皆知。笔者不知华为等高端产品数据平面上的软件是什么体系结构。但自己写的核心的可能性不大。当然,华为的产品为我们国家挡住了欧美相应产品的冲击,这是有目共睹的和值得肯定的。
 
笔者认为系统软件的研发在高校相对工业界要差一点。基本上没有可值得特别提及的地方。85计划的操作系统部分应该是入了许多钱的。“青鸟”计划曾经投入了许多人力物力。结果我们大家都已经比较了解。一个非常可惜的投入和产出比。
 
科学院计算所“曙光”CLUSTER计算机是我们在服务器和高性能计算方面的一个成果。可喜可贺。但从技术上来看,问题也是很多。笔者有幸在计算所一个出差的机会参加国家智能中心的研究生论文答辩会。从其中心的研究生论文答辩中,大概可得知曙光机的体系结构一二。其基本上是一个机群计算的体系结构。其操作系统用的是IBM的AIX 或者是Linux. 在操作系统之上,构架了一系列的中间件包括:MPI,PVM和实时CORBA(TAO). 曙光用TAO来构架了其实时事件服务处理和整个机器的高可靠性系统。MPI或PVM是其并行计算的环境。当时,智能中心的主任,博导孙教授说,为什么把高可靠性系统构架在CORBA这么高的概念/层出上?HA能发现一个节点服务崩溃的速度是多少?这些都是非常好的问题。
 
从笔者的角度看,曙光的存在是非常令人振奋的,是我们的骄傲。但同时,我们要看到不足。笔者知道节点通信的快速硬件设备是自己设计的。这是非常让人高兴的事情。但在软件方面,笔者明显感到吃力和没有足够的力量。
 
另外,联想也设计了类似曙光的机器并和计算所竞争。这是个好事情。一方面我们知道曙光的技术含量不是高不可攀。另一方面,有竞争,在高性能计算方面我们才能提高。
 
联想应该是国内一个很大的计算机公司,但总体感觉其仍然是卖机器的。就象美国的DELL公司。当然没有什么不好。虽然拥有一个庞大的联想研究院,但联想好像没有在独立研发方面作过什么让笔者引目的东西.
 
笔者非常寄希望于高校在GRID COMPUTING上不要错过为我们将来的高性能计算作出基础和培养人才的工作。在系统实现方面,笔者对高校信心不大。这一点与目前高校教师的科研素质是密切相关的。
 
我们有了龙芯?如果没有系统软件?就像缺少了重要的一环。芯片设计与系统软件的配合是紧密相关的。缺少对系统软件的思考,龙芯或将来的其他芯往那份走?拼高端?还是SoC,去抢占嵌入式系统和MISSION CRITICAL 系统?
 
最近,一些鉴定会上,一些发布会上,网络上,一些德高望重的老教授和院士们都情绪激动的表示中国一定要坚持LINUX的道路,去和微软斗。
 
有时,是乎LINUX或开源社区成了我们系统软件产业的救星。这是正确的吗?我们对系统软件的理解只在LINUX这个层次吗?有没有其他的问题我们忽视了?我们对LINUX的正确态度应该是什么?在开源领域,我们的立场应该是什么?
 
4. 系统软件发展趋势分析与下一代系统软件
 
在桌面系统上,微软基本上控制了整个市场。LINUX/BSD/SOLARIS等的占用率基本上无可能与其对抗。放眼硅谷大小公司,不用Windows Office软件的好像不多。应用程序决定一切。WIN32大量的应用使得用户不得不用Windows.
 
在(高端)服务器方面,LINUX/BSD有一席之地。IBM在这方面下功夫不小。当然其真正动机绝非喜欢“自由”的软件。分布式数据库和HA技术都是高性能服务器的要求。
 
嵌入式系统中,微软目前无任何优势;LINUX等在低端PDA方面有一定的市场。另外要注意的是:用在思科的HFR上的微内核QNX/NEUTRINO在智能化汽车市场上是赢家. 在高端嵌入式系统中,目前无任何操作系统能很好的胜任,微内核技术有可能是最后的赢家。思科花费5年之久宣布了其最新的其与QNX/NEUTRINO的网络操作系统。其用心良苦可见一斑。也让我们知道,当一个真正的大系统到了一定地步后,其内核的基础架构的取向是非常重要的。而这些不是靠几个人凭空决定的,而是多少用户反馈的经验中产生的,是从多少个公司集成整合中的痛苦中获得的判断力。
 
在MISSION CRITICAL系统中,VXWORKS和GREEN HILLS的INTEGRITY占据一定市场。笔者认为GREEN HILLS技术上应该赢。其实,当年NASA的Mars Lander由於优先级翻转(Priority Inversion)出事后,就应该计划将VXWORKS逐步淘汰。
 
笔者认为,随着高档NP网络处理器(NETWORK PROCESSOR)或网络服务处理器(Network Service Processor)在今后一两年的出现,业界对传统的NP的概念将彻底改变。原来,一谈起NP,就是其非常局限的指令内存和非常少的数据内存。很少的和功能非常局限的功能引擎。一两年后,高档的NP将是一系列非常高性能的网络服务处理器–可以同时拥有10多个通用CPU CORE,例如,MIPS CORE, ARM CORE等等;各种多个的网络处理,安全处理引擎等。
 
【注:笔者在2004年的上述预测,在2006,2007年左右基本上全部实现。目前高端网络处理器的浪潮非常凶猛,冲击着下一代高端网络设备的体现结构的设计。】
 
这些芯片的出现,将会对系统软件,特别是嵌入式系统软件有很大的影响。
 
在高端嵌入式系统中,一般而言系统分为:控制平面和数据平面。控制平面一般是采用经过修改的操作系统并在其上运行那些实时性要求不高的应用程序或协议。对那些需要高性能的数据处理功能模块,都放在数据平面上。
 
对数据平面的理解,传统的理解是:ASIC, FPGA, SWITCH FABRIC和一些其它辅助作用的网络处理器(NP)。在数据平面上,基本上无软件成分。控制平面和数据平面通过内
部以太接口, PCI或其他高速BUS来通信交换信息。
 
对上述有了一个理解后,我们就会理解思科, JUNIPER,3COM, FOUNDARY,华为,中兴等公司的技术最重要的一面就是ASIC的研发。
 
为了赢得市场份额,上述公司都不得不花费大量的人力物力去不断的开发下一代ASIC。其中一个重要的工作就是不断将原来在控制平面上的逻辑、算法或协议,为了性能或其他的原因,做到数据平面上。
 
产品的速度,性能,高可靠性–这就是决定这些公司能否生存和持续性发展的唯一标志。
 
在没有高端网络服务处理器之前,上述的工作的投入非常大;工程风险也非常高。一个ASIC的成败基本上影响一个整体产品的成败。一个芯片的一个设计缺陷经常会导致一个公司的产品推迟发布,或一个产品的失败。
 
从技术的角度考察,笔者认为,这一切都来自ASIC的不灵活性。
 
在没有高端NP之前,数据平面没有选择。只能在ASIC上赌博与打拼。NP只能起一个协处理器地位,比如,做一些简单的分类(Classify)。从而使得在数据平面上的工作很局限。仍然有大量的逻辑,算法或协议不等不放在控制平面上运行。而由於控制平面的通用CPU的局限性和操作系统的局限性,除了由于与大量的应用程序共同分享资源而带来的稳定性问题之外,通常一个很难处理的技术问题就是:控制平面系统的DoS(Deny of Service)而使得整个控制平面停止响应,最后导致整个系统崩溃。
 
有了高端网络服务处理器之后,笔者认为,整个局面将获得很大的改进。
 
将会有更多的公司可以进入高端市场。以前ASIC研发是一个高门槛。资金的投入与芯片设计成功的风险使得大量的公司只敢在低端市场徘徊。有了高档NP,原来在ASIC中逻辑可以在NP中以软件实现。性能却不会下降很多。带来的灵活性巨大。
 
更多的控制平面的逻辑将被较容易的挪到数据平面上。控制平面的负载将大大减低。整个大系统的可管理性将很大提高。
 
公司产品的更新将会非常灵活。原来ASIC 芯片回来之后,很多的功能就做死了。一但一个预定的功能有问题,带来的后果是整个产品非常被动。而在有高端网络处理器之后,产品线对客户问题的处理将会比原来反应更迅速。
 
这上述的一切是因为:传统以ASIC为主的数据平面体系结构将会被以软件为主的数据平面的体系结构所代替!以协处理器身份为主的传统网络处理器NP(上面运行而且只能运行一些简单的ENINE-SIMD和MIMD数据处理方式)将会被高端网络服务处理器所替代!
 
这个深层的变化对系统软件提出了一个非常新的要求—-数据平面操作系统。
 
要在一个拥有10多个CPU CORE ON-CHIP的处理器上运行复杂的数据平面逻辑,没有一个数据平面软件系统内核(Kernel/OS)是不现实的。这里会涉及大量的ASIC驱动,各个CPU间的数据同步,临界区操作,锁操作,与后台的控制平面的合作等等。
 
对这样一个数据平面操作系统的要求是什么?
 
高性能(HIGH PERFORMANCE);高实时性( REAL-TIME);简单和友善的多线程编程环境(SIMPLE AND NICE MULTI-THREAD PROGRAMMING MODEL);良好的与控制平面的通信机制。运行时系统检测和量化分析工具(SYSTE PROFILINGTOOLS);小而紧凑的代码( FOOT-PRINT)等等。
 
这一切的上述要求,使得在控制平面上运行的传统操作系统(LINUX/BSD)等等都不能很好的胜任。
 
以LINUX为例,直到2.6, LINUX才正式OFFICIALLY支持内核抢先机制(KERNEL PREEMPTIVE)。这对LINUX的实时性是一个很好的改进。但在中断的延迟,一些内核重要数据结构上,系统仍然无法支持很好的性能。其本质原因是:UNIX的设计不是为了实时系统。Monothlithic 操作系统的缺点不是一个实时系统的补丁(PATCH)所能完全解决的。另外,为了避免大量系统调用(SYSTEM CALL)的代价,大量基於LINUX/BSD的开发是在内核代码里面。从而使得内核越来越大,复杂度的增加使得系统的稳定性极端降低。一个非法指针就可以非常容易的使得整个嵌入式设备全部崩溃。这样的事情是高端嵌入式设备公司非常害怕和要尽量避免的。
 
RTLINUX/RTCORE 和RTAI确实解决了部分实时应用的问题。但其解决问题的思路是:将UNIX 部分与REAL-TIME 部分显示的划分开。其带来的缺点明显可见:
 
* 大量需要软实时(SOFT REAL-TIME)的UNIX部分的应用程序非常有可能被饿死(STARVING),例如路由协议部分;
* 不好的编程环境:缺乏完整的POSIX API。可移植性很不好。
*系统缺乏灵活性。很难在一个大系统的范畴内去考虑一个产品的设计。
* 对人员的技术要求和额外培训的要求大大增加。
 
这些缺点的原因其实也很简单:UNIX非实时设计的本质。RTCORE 和RTAI本质上还是一个补充的技术补丁,解决了部分问题,但带来更多的问题。
 
那么微内核(Micro-Kernel)能否胜任数据平面的OS/Kernel的工作呢?
 
笔者认为:微内核是相对较好的一个数据平面操作系统的选择。但是也存在一些缺点需要解决:
 
* 对多个,8,10,16,32或更多CPU CORE的支持。
* 对高端网络服务处理器中的Interconnect和硬件通信机制的相应操作系统方面的优化。
* 对消息传递机制性能的优化。
* 对控制平面操作系统合作的考虑。大多数控制平面一般都使用MONOLITHIC OS,如Linux, BSD等。
* 对各种ASIC, FPGA等提供的软件调试支持。通常操作系统公司对嵌入式系统的理解不深,例如,对CACHE,MEMCOPY, DMA等等的支持方式。
 
有上述分析可见,传统的各种操作系统都不能很好的胜任驱动高端网络服务处理器而担当数据平面操作系统的重任。
 
笔者认为:这就是中国系统软件业的机会所在。
 
5. 中国系统软件的机遇和契机
 
中国系统软件起步确实晚了,但仍有博弈的机会。笔者在前述几节的分析,特别是大型实时监控系统的数据平面操作系统就是一个良好的契机。
 
没有系统软件,国家自主研发通用CPU, SoC等等的战略意义就不可能得到最大的扩展。
 
我们要清醒的考察自己的处境,并制定自己的战略和战术路线。
 
笔者认为在系统软件方面,我们已经就绪。是可以有一番作为的时候了。笔者根据如下数据和观察做的这番判断。
 
* 系统软件的科技人员的数量已经很大。在民间,由於有开源社区等操作系统的参照性,我们已经具备大量熟悉操作系统核心算法,核心数据结构的科技人员。这些人员大都散布在各个科技公司之中。在高校的相对较少。
 
* 随着国内出现一些具有一定实力,能与国外大公司相抗衡的公司,在系统软件方面的发展的要求将逐步体现出来。否则就会出现更多的类似于华为与思科的官司,我们也可以了解:没有系统软件的支撑的艰辛。高科技公司在走向国际化道路上是举步艰难。
 
*大量的海外中国学者和工程师们正在通过双赢的方式,用各种自觉的,不自觉的方式影响着国内的同行,彼此交流。
 
* 在操作系统具体开发上,其真正的难度是POSIX支持的工作量。但由於具备开源社区,我们只要开发核心部分即可。许多其他部分都可以重用。另外,对专用系统,根本不需要POSIX的支持。我们的目的不是通用系统。
 
鉴于以上观点,下面是笔者的一些个人建议:
 
*CPU芯片设计上,高端通用CPU时机过早,要大力发展DSP, SoC和ASIP(APPLICATION SPECIFIC INSTRUCTION PROCESSOR)。【笔者注:ASIP:应用系统专用指令处理器】
 
嵌入式设备是中国的一个非常好的机会。一定不能错过。高端CPU设计方面,我们的实力相差实在太远。非一日之功。要再忍耐5,10年方有一搏之力。芯片设计的目标对了,系统软件就不会迷失方向。通过芯片设计产业,也可以带动我国在高性能编译,TOOL-CHAIN方面的人才培养。目前,我们非常缺乏这方面的人才。
 
*切勿将人力和物力放在通用操作系统方面。
 
通用操作系统对国家的战略意义不大。这方面,让LINUX与WINDOWS去相互制约。在桌面系统上,不应该有国家级的投资。让市场去说话。只要作LINUX发行商有商机,自然有人会在其中。要把其当作一个单纯的商业行为。不管什么版本的LINUX,都支持和欢迎。
 
*倾全力保护和发展ASOS(Application Specific Operating System). 【笔者注:ASOS:应用系统专用操作系统】
 
大力发展针对具体行业的,有国家战略意义的,专用系统。在核心软件方面务必开发出自己的基础软件。就象笔者已经阐述的,如果不需要POSIX支持,一个很好的实时操作系统并非难事。POSIX只会在通用操作系统方面有用。比如一个微内核系统可以足够支持一个大型的监控软件。通用的UNIX,如LINUX, BSD, Solaris都可以被模拟在其上作为一个服务器进程。
 
* 开放民间研究机构参与国家项目申请
 
目前,项目经费严重倾向于几个高校和科学院。但是从他们的的产出来看,这种方式要调整。民间企业也应该可以竞争国家项目。要消减高校在系统软件,体系结构方面的投资,而改为投向具有真正R&D实力的企业。在这个领域,工程的难度比科研的难度大很多。系统软件都是在测试版上一点一点调出来的,绝不可能是想和写出来的。国内高校在这方面的技术储备和工程经验明显薄弱。
 
*留住人才
 
系统软件和体系结构方面务必要国家支持。完全扔到市场上,很有可能会夭折。原因是:我们起步比较晚。很难接受工业界的残酷竞争。所以,我们要做系统软件,一定要有自己的人才。中国现在明显缺乏工业界的研发实验室和研究院。比如IBM Labs, MicrosoftLabs,SUN Labs, HP Labs, SRI, XEROX PARC, INTEL Labs, Bell labs等等。光靠科学院是不可能的。而且科学院离真正的技术需求还是有一定距离的。另外要留住人才,要在舆论上冷却“洋买办”,鼓励本土精英。

关键字:系统软件

本文摘自:弯曲评论

x 对中国系统软件的思考与建议 扫一扫
分享本文到朋友圈
当前位置:新闻中心行业动态 → 正文

对中国系统软件的思考与建议

责任编辑:cres 作者:陈怀临 |来源:企业网D1Net  2022-01-27 12:50:10 本文摘自:弯曲评论

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. 笔者认为,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核心的工作在那里。笔者的观点是:还没有或者没有公布。与之相反, MVISTAIN(www.mvista.com )在对LINUX KERNEL PREEMTPTION对方面的贡献很大,其许多工作已经进入LINUX 2.6中。另外,MVISTA开发的大量工具也为基於LINUX的应用程序开发提供了非常重要的支持。
 
FSMLabs 是另外一个在LINUX领域,特别是实时方面,比较引人注意的一个。他们通过一个LKM的方式将原来LINUX的中断处理程序和调度截获,并将自己的调度算法放入其中,其模块称为RTCORE。通过提供一套RT_THREAD的编程方式,用户可以编写EITHER 用户态的实时程序OR核心态的实时程序。这种显示的将UNIXDOMAI与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的基础上经过一些算法修改和增添一些新功能而来的。下图所示为国防科技大学的相关声明:
 


 
通过上述的数据和文字,笔者认为,在肯定国防科技大学的确做出了非常多的独立自主的技术开发之外,也要清醒的认识到,麒麟操作系统离操作系统核心的关键技术的创新还是有不少差距的。关于笔者对麒麟操作系统的更多评论可参阅文章:对国防科技大学麒麟操作系统的思考一文。
 
下面我们来考察一下国内的大型通信监控软件的发展情况。
 
华为,港湾等国内的高端嵌入式系统好像没有在系统软件方面有自己的东西。从各方面的消息来看,许多产品是基于VXWORKS,Linux和其他一些第三方的操作系统。另外华为与CISCO的官司也是弄得路人皆知。笔者不知华为等高端产品数据平面上的软件是什么体系结构。但自己写的核心的可能性不大。当然,华为的产品为我们国家挡住了欧美相应产品的冲击,这是有目共睹的和值得肯定的。
 
笔者认为系统软件的研发在高校相对工业界要差一点。基本上没有可值得特别提及的地方。85计划的操作系统部分应该是入了许多钱的。“青鸟”计划曾经投入了许多人力物力。结果我们大家都已经比较了解。一个非常可惜的投入和产出比。
 
科学院计算所“曙光”CLUSTER计算机是我们在服务器和高性能计算方面的一个成果。可喜可贺。但从技术上来看,问题也是很多。笔者有幸在计算所一个出差的机会参加国家智能中心的研究生论文答辩会。从其中心的研究生论文答辩中,大概可得知曙光机的体系结构一二。其基本上是一个机群计算的体系结构。其操作系统用的是IBM的AIX 或者是Linux. 在操作系统之上,构架了一系列的中间件包括:MPI,PVM和实时CORBA(TAO). 曙光用TAO来构架了其实时事件服务处理和整个机器的高可靠性系统。MPI或PVM是其并行计算的环境。当时,智能中心的主任,博导孙教授说,为什么把高可靠性系统构架在CORBA这么高的概念/层出上?HA能发现一个节点服务崩溃的速度是多少?这些都是非常好的问题。
 
从笔者的角度看,曙光的存在是非常令人振奋的,是我们的骄傲。但同时,我们要看到不足。笔者知道节点通信的快速硬件设备是自己设计的。这是非常让人高兴的事情。但在软件方面,笔者明显感到吃力和没有足够的力量。
 
另外,联想也设计了类似曙光的机器并和计算所竞争。这是个好事情。一方面我们知道曙光的技术含量不是高不可攀。另一方面,有竞争,在高性能计算方面我们才能提高。
 
联想应该是国内一个很大的计算机公司,但总体感觉其仍然是卖机器的。就象美国的DELL公司。当然没有什么不好。虽然拥有一个庞大的联想研究院,但联想好像没有在独立研发方面作过什么让笔者引目的东西.
 
笔者非常寄希望于高校在GRID COMPUTING上不要错过为我们将来的高性能计算作出基础和培养人才的工作。在系统实现方面,笔者对高校信心不大。这一点与目前高校教师的科研素质是密切相关的。
 
我们有了龙芯?如果没有系统软件?就像缺少了重要的一环。芯片设计与系统软件的配合是紧密相关的。缺少对系统软件的思考,龙芯或将来的其他芯往那份走?拼高端?还是SoC,去抢占嵌入式系统和MISSION CRITICAL 系统?
 
最近,一些鉴定会上,一些发布会上,网络上,一些德高望重的老教授和院士们都情绪激动的表示中国一定要坚持LINUX的道路,去和微软斗。
 
有时,是乎LINUX或开源社区成了我们系统软件产业的救星。这是正确的吗?我们对系统软件的理解只在LINUX这个层次吗?有没有其他的问题我们忽视了?我们对LINUX的正确态度应该是什么?在开源领域,我们的立场应该是什么?
 
4. 系统软件发展趋势分析与下一代系统软件
 
在桌面系统上,微软基本上控制了整个市场。LINUX/BSD/SOLARIS等的占用率基本上无可能与其对抗。放眼硅谷大小公司,不用Windows Office软件的好像不多。应用程序决定一切。WIN32大量的应用使得用户不得不用Windows.
 
在(高端)服务器方面,LINUX/BSD有一席之地。IBM在这方面下功夫不小。当然其真正动机绝非喜欢“自由”的软件。分布式数据库和HA技术都是高性能服务器的要求。
 
嵌入式系统中,微软目前无任何优势;LINUX等在低端PDA方面有一定的市场。另外要注意的是:用在思科的HFR上的微内核QNX/NEUTRINO在智能化汽车市场上是赢家. 在高端嵌入式系统中,目前无任何操作系统能很好的胜任,微内核技术有可能是最后的赢家。思科花费5年之久宣布了其最新的其与QNX/NEUTRINO的网络操作系统。其用心良苦可见一斑。也让我们知道,当一个真正的大系统到了一定地步后,其内核的基础架构的取向是非常重要的。而这些不是靠几个人凭空决定的,而是多少用户反馈的经验中产生的,是从多少个公司集成整合中的痛苦中获得的判断力。
 
在MISSION CRITICAL系统中,VXWORKS和GREEN HILLS的INTEGRITY占据一定市场。笔者认为GREEN HILLS技术上应该赢。其实,当年NASA的Mars Lander由於优先级翻转(Priority Inversion)出事后,就应该计划将VXWORKS逐步淘汰。
 
笔者认为,随着高档NP网络处理器(NETWORK PROCESSOR)或网络服务处理器(Network Service Processor)在今后一两年的出现,业界对传统的NP的概念将彻底改变。原来,一谈起NP,就是其非常局限的指令内存和非常少的数据内存。很少的和功能非常局限的功能引擎。一两年后,高档的NP将是一系列非常高性能的网络服务处理器–可以同时拥有10多个通用CPU CORE,例如,MIPS CORE, ARM CORE等等;各种多个的网络处理,安全处理引擎等。
 
【注:笔者在2004年的上述预测,在2006,2007年左右基本上全部实现。目前高端网络处理器的浪潮非常凶猛,冲击着下一代高端网络设备的体现结构的设计。】
 
这些芯片的出现,将会对系统软件,特别是嵌入式系统软件有很大的影响。
 
在高端嵌入式系统中,一般而言系统分为:控制平面和数据平面。控制平面一般是采用经过修改的操作系统并在其上运行那些实时性要求不高的应用程序或协议。对那些需要高性能的数据处理功能模块,都放在数据平面上。
 
对数据平面的理解,传统的理解是:ASIC, FPGA, SWITCH FABRIC和一些其它辅助作用的网络处理器(NP)。在数据平面上,基本上无软件成分。控制平面和数据平面通过内
部以太接口, PCI或其他高速BUS来通信交换信息。
 
对上述有了一个理解后,我们就会理解思科, JUNIPER,3COM, FOUNDARY,华为,中兴等公司的技术最重要的一面就是ASIC的研发。
 
为了赢得市场份额,上述公司都不得不花费大量的人力物力去不断的开发下一代ASIC。其中一个重要的工作就是不断将原来在控制平面上的逻辑、算法或协议,为了性能或其他的原因,做到数据平面上。
 
产品的速度,性能,高可靠性–这就是决定这些公司能否生存和持续性发展的唯一标志。
 
在没有高端网络服务处理器之前,上述的工作的投入非常大;工程风险也非常高。一个ASIC的成败基本上影响一个整体产品的成败。一个芯片的一个设计缺陷经常会导致一个公司的产品推迟发布,或一个产品的失败。
 
从技术的角度考察,笔者认为,这一切都来自ASIC的不灵活性。
 
在没有高端NP之前,数据平面没有选择。只能在ASIC上赌博与打拼。NP只能起一个协处理器地位,比如,做一些简单的分类(Classify)。从而使得在数据平面上的工作很局限。仍然有大量的逻辑,算法或协议不等不放在控制平面上运行。而由於控制平面的通用CPU的局限性和操作系统的局限性,除了由于与大量的应用程序共同分享资源而带来的稳定性问题之外,通常一个很难处理的技术问题就是:控制平面系统的DoS(Deny of Service)而使得整个控制平面停止响应,最后导致整个系统崩溃。
 
有了高端网络服务处理器之后,笔者认为,整个局面将获得很大的改进。
 
将会有更多的公司可以进入高端市场。以前ASIC研发是一个高门槛。资金的投入与芯片设计成功的风险使得大量的公司只敢在低端市场徘徊。有了高档NP,原来在ASIC中逻辑可以在NP中以软件实现。性能却不会下降很多。带来的灵活性巨大。
 
更多的控制平面的逻辑将被较容易的挪到数据平面上。控制平面的负载将大大减低。整个大系统的可管理性将很大提高。
 
公司产品的更新将会非常灵活。原来ASIC 芯片回来之后,很多的功能就做死了。一但一个预定的功能有问题,带来的后果是整个产品非常被动。而在有高端网络处理器之后,产品线对客户问题的处理将会比原来反应更迅速。
 
这上述的一切是因为:传统以ASIC为主的数据平面体系结构将会被以软件为主的数据平面的体系结构所代替!以协处理器身份为主的传统网络处理器NP(上面运行而且只能运行一些简单的ENINE-SIMD和MIMD数据处理方式)将会被高端网络服务处理器所替代!
 
这个深层的变化对系统软件提出了一个非常新的要求—-数据平面操作系统。
 
要在一个拥有10多个CPU CORE ON-CHIP的处理器上运行复杂的数据平面逻辑,没有一个数据平面软件系统内核(Kernel/OS)是不现实的。这里会涉及大量的ASIC驱动,各个CPU间的数据同步,临界区操作,锁操作,与后台的控制平面的合作等等。
 
对这样一个数据平面操作系统的要求是什么?
 
高性能(HIGH PERFORMANCE);高实时性( REAL-TIME);简单和友善的多线程编程环境(SIMPLE AND NICE MULTI-THREAD PROGRAMMING MODEL);良好的与控制平面的通信机制。运行时系统检测和量化分析工具(SYSTE PROFILINGTOOLS);小而紧凑的代码( FOOT-PRINT)等等。
 
这一切的上述要求,使得在控制平面上运行的传统操作系统(LINUX/BSD)等等都不能很好的胜任。
 
以LINUX为例,直到2.6, LINUX才正式OFFICIALLY支持内核抢先机制(KERNEL PREEMPTIVE)。这对LINUX的实时性是一个很好的改进。但在中断的延迟,一些内核重要数据结构上,系统仍然无法支持很好的性能。其本质原因是:UNIX的设计不是为了实时系统。Monothlithic 操作系统的缺点不是一个实时系统的补丁(PATCH)所能完全解决的。另外,为了避免大量系统调用(SYSTEM CALL)的代价,大量基於LINUX/BSD的开发是在内核代码里面。从而使得内核越来越大,复杂度的增加使得系统的稳定性极端降低。一个非法指针就可以非常容易的使得整个嵌入式设备全部崩溃。这样的事情是高端嵌入式设备公司非常害怕和要尽量避免的。
 
RTLINUX/RTCORE 和RTAI确实解决了部分实时应用的问题。但其解决问题的思路是:将UNIX 部分与REAL-TIME 部分显示的划分开。其带来的缺点明显可见:
 
* 大量需要软实时(SOFT REAL-TIME)的UNIX部分的应用程序非常有可能被饿死(STARVING),例如路由协议部分;
* 不好的编程环境:缺乏完整的POSIX API。可移植性很不好。
*系统缺乏灵活性。很难在一个大系统的范畴内去考虑一个产品的设计。
* 对人员的技术要求和额外培训的要求大大增加。
 
这些缺点的原因其实也很简单:UNIX非实时设计的本质。RTCORE 和RTAI本质上还是一个补充的技术补丁,解决了部分问题,但带来更多的问题。
 
那么微内核(Micro-Kernel)能否胜任数据平面的OS/Kernel的工作呢?
 
笔者认为:微内核是相对较好的一个数据平面操作系统的选择。但是也存在一些缺点需要解决:
 
* 对多个,8,10,16,32或更多CPU CORE的支持。
* 对高端网络服务处理器中的Interconnect和硬件通信机制的相应操作系统方面的优化。
* 对消息传递机制性能的优化。
* 对控制平面操作系统合作的考虑。大多数控制平面一般都使用MONOLITHIC OS,如Linux, BSD等。
* 对各种ASIC, FPGA等提供的软件调试支持。通常操作系统公司对嵌入式系统的理解不深,例如,对CACHE,MEMCOPY, DMA等等的支持方式。
 
有上述分析可见,传统的各种操作系统都不能很好的胜任驱动高端网络服务处理器而担当数据平面操作系统的重任。
 
笔者认为:这就是中国系统软件业的机会所在。
 
5. 中国系统软件的机遇和契机
 
中国系统软件起步确实晚了,但仍有博弈的机会。笔者在前述几节的分析,特别是大型实时监控系统的数据平面操作系统就是一个良好的契机。
 
没有系统软件,国家自主研发通用CPU, SoC等等的战略意义就不可能得到最大的扩展。
 
我们要清醒的考察自己的处境,并制定自己的战略和战术路线。
 
笔者认为在系统软件方面,我们已经就绪。是可以有一番作为的时候了。笔者根据如下数据和观察做的这番判断。
 
* 系统软件的科技人员的数量已经很大。在民间,由於有开源社区等操作系统的参照性,我们已经具备大量熟悉操作系统核心算法,核心数据结构的科技人员。这些人员大都散布在各个科技公司之中。在高校的相对较少。
 
* 随着国内出现一些具有一定实力,能与国外大公司相抗衡的公司,在系统软件方面的发展的要求将逐步体现出来。否则就会出现更多的类似于华为与思科的官司,我们也可以了解:没有系统软件的支撑的艰辛。高科技公司在走向国际化道路上是举步艰难。
 
*大量的海外中国学者和工程师们正在通过双赢的方式,用各种自觉的,不自觉的方式影响着国内的同行,彼此交流。
 
* 在操作系统具体开发上,其真正的难度是POSIX支持的工作量。但由於具备开源社区,我们只要开发核心部分即可。许多其他部分都可以重用。另外,对专用系统,根本不需要POSIX的支持。我们的目的不是通用系统。
 
鉴于以上观点,下面是笔者的一些个人建议:
 
*CPU芯片设计上,高端通用CPU时机过早,要大力发展DSP, SoC和ASIP(APPLICATION SPECIFIC INSTRUCTION PROCESSOR)。【笔者注:ASIP:应用系统专用指令处理器】
 
嵌入式设备是中国的一个非常好的机会。一定不能错过。高端CPU设计方面,我们的实力相差实在太远。非一日之功。要再忍耐5,10年方有一搏之力。芯片设计的目标对了,系统软件就不会迷失方向。通过芯片设计产业,也可以带动我国在高性能编译,TOOL-CHAIN方面的人才培养。目前,我们非常缺乏这方面的人才。
 
*切勿将人力和物力放在通用操作系统方面。
 
通用操作系统对国家的战略意义不大。这方面,让LINUX与WINDOWS去相互制约。在桌面系统上,不应该有国家级的投资。让市场去说话。只要作LINUX发行商有商机,自然有人会在其中。要把其当作一个单纯的商业行为。不管什么版本的LINUX,都支持和欢迎。
 
*倾全力保护和发展ASOS(Application Specific Operating System). 【笔者注:ASOS:应用系统专用操作系统】
 
大力发展针对具体行业的,有国家战略意义的,专用系统。在核心软件方面务必开发出自己的基础软件。就象笔者已经阐述的,如果不需要POSIX支持,一个很好的实时操作系统并非难事。POSIX只会在通用操作系统方面有用。比如一个微内核系统可以足够支持一个大型的监控软件。通用的UNIX,如LINUX, BSD, Solaris都可以被模拟在其上作为一个服务器进程。
 
* 开放民间研究机构参与国家项目申请
 
目前,项目经费严重倾向于几个高校和科学院。但是从他们的的产出来看,这种方式要调整。民间企业也应该可以竞争国家项目。要消减高校在系统软件,体系结构方面的投资,而改为投向具有真正R&D实力的企业。在这个领域,工程的难度比科研的难度大很多。系统软件都是在测试版上一点一点调出来的,绝不可能是想和写出来的。国内高校在这方面的技术储备和工程经验明显薄弱。
 
*留住人才
 
系统软件和体系结构方面务必要国家支持。完全扔到市场上,很有可能会夭折。原因是:我们起步比较晚。很难接受工业界的残酷竞争。所以,我们要做系统软件,一定要有自己的人才。中国现在明显缺乏工业界的研发实验室和研究院。比如IBM Labs, MicrosoftLabs,SUN Labs, HP Labs, SRI, XEROX PARC, INTEL Labs, Bell labs等等。光靠科学院是不可能的。而且科学院离真正的技术需求还是有一定距离的。另外要留住人才,要在舆论上冷却“洋买办”,鼓励本土精英。

关键字:系统软件

本文摘自:弯曲评论

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^