要在一个拥有10多个CPU CORE ON-CHIP的处理器上运行复杂的DATA PLANE LOGIC,没有一个DATA PLANE KERNEL/OS是不现实的。这里会涉及大量的ASIC驱动, 各个CPU间的数据同步,临界区操作,锁操作,与后面CONTROL PLANE的合作等等。
对这样一个DATA PLANE OS的要求是什么?HIGH PERFORMANCE; SUPPORT HARD REALTIME;
SIMPLE AND NICE MULTI-THREAD PROGRAMMING MODEL;
WELL DEFINED MAECHANISM
WORKING WITH CONTROL PLANE OS/Applications;
SYSTE PROFILING TOOLS, VERY
SMALL FOOT-PRINT,To name a few.
这一切的上述要求,使得在CONTROL PLANE上运行的传统操作系统(LINUX/BSD)等等都不能胜任。
以LINUX为例,
UP TO 2.6, LINUX才OFFICIALLY支持KERNEL PREEMPTIVE。这对LINUX的实时性是一个很好的改进。但在中断的LATENCY,一些KERNEL重要数据结构上,系统仍然无法支持很好的性能。其本质原因是:UNIX的设计不是为了实时系统。Monothlithic 操作系统的缺点不是一个REAL TIME PATCH所能解决的。另外,为了避免大量SYSTEM CALL的代价,大量基於LINUX/BSD的开发是在KERNEL下。从而使得KERNEL越来越大,复杂度的增加使得系统的稳定性极端降低。一个非法POINTER就使得整个嵌入式设备全部崩溃。这样的事情是高端嵌入式设备公司非常害怕和要避免的。
RTLINUX/RTCORE 和RTAI确实解决了部分REAL TIME应用的问题。但其解决问题的思路是:将UNIX 部分与REAL TIME 部分EXPLICITELY划分开。其带来的缺点明显可见:
* 大量需要SOFT REALTIME的UNIX部分的APPLICATION将非常有可能被
STARVING,例如ROUTING部分;
* 不好的编程环境:明显缺乏足够的POSIX API。PORTABILITY不好。
*系统缺乏灵活性。很难在系统SCOPE去考虑一个完整的系统。
* 对人员的技术要求增加。
这些缺点的原因其实也很简单:UNIX的NATURE。RTCORE 和RTAI本质上还是一个LKM PATCH。
那么微内核(Micro-Kernel)能否胜任Data Plane OS/Kernel的工作呢?
笔者认为: 微内核是相对较好的一个CANDIDATE FOR DATA PLANE OS。但是也存在一些缺点需要解决:
* 对多个,UP TO MORE THAN 10, CPU CORE, 的支持。
* 对MESSAGE PASSING INTERFACE 性能的优化
* 对CONTROL PLANE OS合作的考虑。大多CONTROL PLANE目前还在用MONOLITHIC OS。
* 对各种ASIC, FPGA等提供的软件调试支持。通常操作系统公司对嵌入式系统的理解不深,例如,对CACHE,MEMCOPY, DMA等等的支持方式。
笔者个人认为:DATA PLANE OS是一个比较值得注意和开拓的方向。
4。中国系统软件的机遇和契机
我们晚了,BUT NOT TOO LATE!
没有系统软件,通用CPU, SoC等等的意义就没有得到最大的扩展。
没有系统软件,我们的航天器,空间站软件系统安装VXWORKS?
但所以这些不应该只是口号,不应该是情绪。我们要有我们的战略和战术路线。
笔者认为在系统软件方面,我们已经READY。是可以有一番作为的时候了。笔者根据这样一些POINTS 和数据。
* 系统软件的科技人员BASE已经很大。在民间,由於有OPEN SOURCE 等操作系统的参照性,我们已经具备大量熟悉操作系统核心算法,核心数据结构的科技人员。这些人员大都散布在各个科技公司之中。在高校的很少。
* 随着国内出现一些具有一定实力,能与国外大公司相抗衡的公司,在系统软件方面的发展的要求将逐步体现出来。否则就会出现更多的LAW SUIT等等。其实从华为与CISCO的官司,我们也可以了解:没有系统软件的支撑的艰辛。
*大量的海外中国工程师正在用各种自觉的,不自觉的方式影响着国内的同行,相互交流着。
* 在操作系统具体开发上,其真正的难度是POSIX支持的工作量。但由於具备OPEN SOURCE, 我们只要开发核心部分即可。许多其他部分都可以REUSE。另外,对专用系统,根本不需要POSIX的支持。我们的目的不是通用系统。
鉴于以上观点, 下面是笔者的一些个人建议:
*CPU芯片设计上,高端通用CPU时机过早,要大力发展DSP, SoC和ASIP( APPLICATION SPECIFIC INSTRUCTION PROCESSOR)
嵌入式设备是中国的一个非常好的机会。一定不能错过。高端CPU设计方面,我们的实力相差实在太远。非一日之功。要再忍耐5,10年方有一搏之力。
芯片设计的目标对了,系统软件在不会迷失方向。通过芯片设计方面,我们也可以带动我们在高性能编译,TOOL-CHAIN方面的人才培养。目前,我们非常缺乏这方面的人才。
*切勿将人力和物力放在通用操作系统方面
通用操作系统对国家的战略意义不大。这方面,让LINUX与WINDOWS去相互制约。在桌面系统上,不应该有国家级的投资。让市场去说话。只要作LINUX发行商有钱赚,自然有人会在其中。要把其当作一个单纯的商业行为。不管什么旗的LINUX,都欢迎。
WINTEL灭不了我们。但要防止商人误国。特别是被商人买断了的文人。
*倾全力保护和发展ASOS(Application Specific Operating System).
大力发展针对具体行业的,有国家战略意义的,专用系统。在核心软件方面务必开发出自己的INFRASTRUCTURE。就象笔者已经阐述的,如果不需要POSIX支持,一个很好的实时操作系统并非难事。POSIX只会在通用操作系统方面有用。比如一个微内核系统可以足够支持一个大型的监控软件。通用的UNIX,如LINUX, BSD, SOLARIS都可以被模拟在其上作为一个SERVER CONTEXT。
* 开放民间研究机构参与国家项目申请
目前,项目经费严重倾向几个高校和科学院。但是从他们的的产出来看,这种方式 要调整。民间企业也应该可以竞争国家项目。要消减高校在系统软件,体系结构方面的投资,而改为投向具有真正R&D实力的企业。在这个领域,工程的难度比科研的难度大很多。系统软件都是在测试版上一点一点调出来的,绝不可能是想和写出来的。高校的知识分子在这方面误国有余;成事不足。
*留住人才
系统软件和体系结构方面务必要国家支持。完全扔到市场上,很可能会DIE。
原因是:我们已经晚了。比如,现在在SILICON VALLEY,你如果拿一份报告去找VC要钱,说要作一个RTOS,你一定会失望。VC知道除了MICROSOFT,做操作系统的公司日子都不好过。其实微软也不是靠操作系统,而是靠依赖在其操作系统定义的WIN32 API上的应用程序来MAKE MONEY。所以,我们要做系统软件,一定要有自己的人才。
中国现在明显缺乏工业界的R&D LAB。比如IBM RESEARCH LAB。 MICROSOFT LAB;
SUN LAB; HP LAB。 SRI; XEROX PART; INTEL LAB, BELL LAB等等。光靠科学院是不可能的。而且科学院离真正的技术需求还是有一定距离的。另外要留住人才,要在舆论上冷却"洋买办",鼓励本土精英。笔者非常不理解一些舆论为什么那么留意这个或那个公司中中国的总经理等等。他们其实就是商人。他们的存在和JOB就是替别人打击中国企业。他们可以用许多的竞争手段来挤垮我们。当然,笔者并不介意那些纯粹的商业行为。只要不涉及国家科技战略,那个小老板机器里装的是LINUX和WINDOWS,NO ONE CARES。
5。结束语
笔者是多么希望,有一天,中国的航天器,空间站上的软件系统是我们自己的。CPU是自己的。那会是多么自豪的一种心情。