您的位置: 嵌入式在线 > 技术中心 > 中间件 > 中间件技术在嵌入式操作系统中的应用

中间件技术在嵌入式操作系统中的应用

2006-11-22      嵌入式在线      收藏 | 打印
    操作系统存在的目的就是为了更好地支持应用程序运行。在某种程度上,操作系统所提供的支持决定了应用程序的工作方式。随着因特网时代的到来,应用程序模型已经发生了很大变化,这些变化对操作系统提出了新的要求,也必将引起操作系统的新发展。本文简要介绍因特网时代应用程序模型的变化、技术发展和北京科泰世纪科技有限公司自主开发的下一代嵌入式操作系统中所实现的重要关键技术。

因特网时代的技术发展与操作系统

    传统操作系统大多是静态链接而成,由某一家公司提供,所有功能都集成在同一个软件中,一旦链接之后就不可能替换其中的软件模块。这样的操作系统有两大功能:首先它向用户提供一个分时系统;其次是向用户提供一组函数库。用户程序从主程序起,一步一步驱动软件控制流程,最终完成计算工作。操作系统始终处于被动地位,为用户程序提供服务。这类系统的典型范例有DOS和控制台模式下的Unix操作系统,以及目前存在的大多数嵌入式操作系统。

因特网时代新的应用模型与操作系统
    在因特网时代,一个应用程序可以包括文字、图表、音频、连续图像播放等功能,各部分功能的软件模块(组件component)可以来自不同的软件开发商,在运行时动态组织起来,向用户提供一个“天衣无缝”、具有复合功能的应用软件。这种应用软件看上去象因特网的浏览器,其实质是组件化(componentization)的软件工程技术。组件化技术早在因特网时代之前就已经初见端倪,微软的OLE技术在90年代初就可以初步支持Word和Excel的相互嵌套。在因特网时代的今天,组件化技术可以说是无处不在,比如微软最近发表的Windows XP和Office XP的核心都是这种组件化技术,从视窗桌面到Word和Excel的窗口全部是“浏览器”。
    这种因特网应用模式的主要特点是:
  • 程序作为动态组件自动加载运行,而不需要由用户去逐个启动。

  • 组件支持脚本语言控制,多个组件可以相互操作,交换信息。

  • 以浏览器为交互式操作界面,既便于有户掌握,又为程序开发提供了统一标准。

  • 网络化资源管理,程序自动下载运行,不需要用户介入。
     在这种新的应用模式下,“浏览器”实际上已经退化为一个可见或不可见的“框”,用操作系统术语讲,这个框是一个可执行文件,或说是一个EXE文件,它本身非常简单,不为用户提供应用功能,但能提供组件运行环境。所有组件都被做成一个个动态链接库,或说是DLL文件。因为这个小“框”放之四海而皆准,对于任何应用程序都是一样的,操作系统自然可以代劳,在操作系统中做一份就行了。在这种操作系统里启动运行这样一个小小的可执行文件,通常根本不用访问外部存储器(如磁盘),所以效率很高。框里的第一个组件一般需要有一个主函数(main)。这种组件中的主函数与传统操作系统术语中用户程序里的主函数有本质上的区别。熟悉JAVA的读者可能会联想到,这里讲的操作系统模型就是JAVA虚拟机的编程模型。

“服务器-中间件-用户”编程模型
    中间件(middleware)程序设计技术是因特网时代技术的纲。中间件是操作系统根据元数据生成的组件,因特网技术都是围绕中间件发展的。JAVA、C#的目的不在于它们的文法比C/C++简单,也不在于它们支持内存的废物回收,也不在于跨平台。为了处理元数据发明了新语言,为了生成中间件发明了虚拟机,为了建立软件工厂发明了组件库。语言、虚拟机、组件库三位一体形成了当今世界软件编程的主流发展趋势。虚拟机实际上是一种特殊的操作系统。
    随着硬件和软件技术的发展,操作系统动态由服务器组件中的元数据(metadata)生成代理和存根成为可能。编程模型逐步转移到“服务器—中间件—用户”三层结构。通讯程序(如TCP/IP)不再是用户或服务器程序的一部分,既然TCP/IP协议可以生成,HTTP协议也可以生成。既然用户和服务器都不包含通讯协议,它们也就适用于任何通讯协议。由此网络编程模式产生了革命性的飞跃。
    面向中间件编程模型中的中间件也可以想象成组件的代理组件(或虚拟组件),中间件在系统管理员控制下由操作系统生成(见右图)。中间件可以为空,这时用户程序与服务组件运行于同一地址空间,用户直接访问组件,充分发挥计算机的效率。
    最典型的中间件就是跨地址空间的TCP/IP通讯协议。如果通讯协议是HTTP,中间件就成了防火墙;如果协议对来往消息作了备份,系统可以容错;如果协议根据服务器繁忙程度分配消息,就是负载均衡;如果一个机器上只配有10份组件版权,代理组件可以挡住第11个用户直到前10个用户中有人离开;如果一个事件是由几个分事件合成,代理组件可以执行事务处理;如果怕病毒,就把组件放到远程,同时不给它文件支持。把这些功能实现在一个进程里,该进程就叫应用服务器(application server)。由此可见应用服务器处在因特网技术的核心地位,中间件技术正是应用服务器的理论基础。
    中间件技术的应用不限于应用服务器。中间件技术为程序模块、组件库、软件工厂提供了联接“管道”、“连线”和“集成电路板”,软件组件的“即插即用”模式将走向主流市场。这种“软集成电路”就是包含元数据的组件。因为元数据可以抽象描述组件功能和接口,从而组件的发布、版本升级都省去了对头文件(.h files)和库文件(.lib files)的依赖。元数据解决了软件工程的一大难题,中间件技术使得软件的工程化开发水平提高到一个新的层次。

操作系统与虚拟机
    Java和C#基于中间代码,其虚拟机运行于其它操作系统之上。由于其运行效率、实时性、资源需求等方面的原因,至今没有在嵌入式系统中得到成功的应用。
    操作系统可以作为虚拟机,直接提供中间件的运行环境。既然应用程序员只写组件或动态链接库,而操作系统自始至终控制程序运行的主动权,显而易见,这种操作系统与DOS或Unix有本质的不同。操作系统可以对应用程序组件进行各种各样的控制,使得封装好的组件能够适应不同的运行环境和用户要求。组件制造商对组件运行环境往往有些特殊的复杂要求,例如组件是否支持多线程或信息加密,这些对于一般用户来讲很难理解和适应;而众多用户的不同好恶,如怀疑组件有病毒,也不是组件制造商料所能及的。这时操作系统控制主动权,动态生成中间件和构造组件运行环境,就能很好地解决这些问题。
    操作系统利用中间件技术支持和控制应用程序的运行环境,就形成了因特网时代操作系统的关键技术。

操作系统对XML的支持
    XML文本描述语言的广泛使用将是因特网时代操作系统的另一明显标志。XML统一了对网络上传输的数据和远程函数调用的描述,比如SOAP(Simple Object Access Protocol)。XML对任意消息中的信息都要进行描述,我们称这类消息为自描述消息。由于自描述消息可以根据不同国家语言,不同操作系统,不同软件版本,或不同安全协议来作不同解释,XML已经成了因特网信息交换的标准,未来的操作系统内核会对XML进行最有效的支持。现在网络和分布式操作系统中有大量的命名服务器(name server),它们都运行于用户态,比如HTTP、TCP/IP、FTP、Telnet等服务器,它们都可以统一在内核对XML远程函数调用功能的支持之下。表面上XML速度可能不如其它二进制协议高,但内核不必进行不必要的地址空间切换,大大减少众多服务器的内存消耗,因而势必增加系统的安全性、可靠性以及运行效率。微软的Windows XP已经按照这一思路设计操作系统。

浏览器成为统一的用户界面
    在因特网时代新的应用模式下,浏览器已经不仅是显示网络页面信息的界面,它包含诸如解释网络页面信息,通过对组件中元数据的直接解释执行,与底层的系统软件协同调用相关的组件等功能。基于网络标准的浏览器可以成为强有力的工具,实现跨平台的应用,实现丰富多彩的用户界面和传统桌面系统的应用程序所能完成的功能。实质上,浏览器已经成为操作系统不可缺少的组成部分。
    

基于中间件技术的嵌入式操作系统
    北京科泰世纪科技有限公司基于对因特网时代软件技术发展的深入理解,开发了具有完全自主版权,采用先进的组件、中间件编程技术构筑的下一代高性能网络操作系统Zyco,以及制定了跨操作系统的组件、中间件标准CAR;提供跨平台的CAR组件运行环境、开发平台和组件库;提供支持XML等最新因特网标准的浏览器引擎;提供全面的操作系统应用开发环境。

面向因特网应用,基于组件、中间件技术的新型操作系统Zyco
    Zyco操作系统的实现采用组件技术,提供CAR组件运行的虚拟机环境,支持动态加载组件。Zyco小型、实时、多任务(多进程、多线程),支持虚拟存储、动态链接库、各种外设、网络(TCP/IP)、多媒体、汉字等。具备图形系统,支持真彩显示,键盘、鼠标、触摸屏等指点设备的事件处理机制与Java的设计相似。可执行代码与Win2000二进制兼容,文件系统和微软DOS、NT兼容,支持Flash ROM、DOC(Disk on Chip),支持从软盘、硬盘、ROM、DOC启动操作系统。

创新的CAR组件、中间件技术,跨平台的运行环境和开发环境
    CAR技术与微软COM(Component Object Model)组件技术兼容。
    CAR为组件的互操作性定义了编程语言无关、可扩展、跨平台的二进制标准。CAR组件之间的相互作用通过一组称作接口(interface)的功能实现。应用程序必须通过接口访问组件提供的功能。每一个接口有唯一的标识符,组件添加新的功能,就要定义新的接口。接口的唯一性和不变性保证了组件升级的独立性、简单快速的组件互操作、接口重用、本地/远程透明性、编程语言无关性。
    CAR提供接口描述语言CDL,为CAR服务器中新功能的实现提供了方便,如脚本语言调用组件对象函数等。提供了优化、方便的CAR工具库和CAR库支持环境,灵活的CAR服务器和CAR客户的实现机制。由CAR工具库自动实现的标准接口类封装层,屏蔽了调用COM组件对象过程的繁琐细节,大大简化了COM客户程序的实现。
    在Zyco、Windows2000上的CAR运行环境(虚拟机)可以在操作系统上自动生成中间件(代理组件),提供组件定位、调用、管理、中间件自动生成、组件通信(进程内、跨进程、跨网络等不同运行环境)等机制。支持组件访问顺序控制、安全(容错)性控制、软件使用权的控制、负载均衡、线程同步、进程延续(Persistence)的控制、事务元(Transaction)控制等中间件功能。CAR组件可以原封不动地运行在Zyco和Windows2000上。
    CAR技术保证了软件互操作性、版本升级独立性和运行环境透明性,提供了提高系统安全、软件协同开发、软件容错、可靠性、软件复用、软件升级的有效手段。

浏览器引擎
    浏览器引擎直接运行于操作系统内核之上,操作系统和组件技术、浏览器技术紧密结合,为网络应用提供高效率的运行平台。浏览器引擎支持业界广泛使用的Web标准(HTML 4.0、XML、JavaScript等)、具有完备的浏览器功能;通过用户接口语言可以开发跨平台、跨设备的用户接口;通过跨平台的CAR实现可扩展的图形体系结构。比如支持同一用户图形软件完成远程图形功能(类似X-Window)或在同一进程内的高速图形显示;同一段用户图形组件代码可以不经修改,运行在硬件上或台式机的网页里。

应用开发环境
    提供Win2000上MSVC6.0和MinGW 的C/C++交叉编译环境;可常驻内核的Zdbg,这是即使系统崩溃时也可进入的系统调试工具,支持源代码级调试;交互式图形界面的源代码级连机调试工具Windbg,可对目标系统进行远程(跨网络)源程序级查错;提供基于浏览器技术的图形用户界面开发工具。可以在通用PC机上交叉开发和调试本操作系统的系统组件、驱动程序库和用户程序。

完整的软件平台解决方案
    Zyco以因特网技术发展为基础,与CAR有机结合,在嵌入式操作系统中实现对组件、中间件的直接支持,使得传统嵌入式系统的软件开发能够利用当今先进的主流技术,实现工程化、工厂化生产,顺应了软件技术的发展潮流。这是目前其他嵌入式操作系统产品中不具备的创新功能。
    Zyco与CAR技术利用Java虚拟机思想但不用其中间代码形式,利用C++语言及硬件机器指令实现高效率、低资源要求的虚拟机。Zyco技术集语言、组件库、虚拟机三位一体,与国际主流软件技术互补、互操作(与微软Windows 2000以及下一代操作系统Windows XP兼容)。

    Zyco可广泛应用于信息家电、工业控制、传统工业改造、国防、商业电子等领域,已经开发了PDA/掌上电脑、数控机床、工业远程监控设备、医疗仪器等应用。

基于中间件技术的操作系统Zyco的技术优势

    Zyco导入了现代操作系统、软件工程、网络等领域的前沿技术,在后PC时代具有巨大的技术发展空间和强大的生命力,为建立在该技术之上的软件产业提供了可持续发展的基础。基于中间件技术的操作系统带来的好处是多样的,这里略举几个方面的例子。

提供系统的安全保护机制
    Zyco中用户程序每调用一个组件对象(操作系统中就是创建一个新的进程),系统自动地生成一个代理组件。系统通过代理组件可以控制组件对象的创建与消亡,控制组件对象对特定资源的访问权限和运行空间,同时可以自动生成记录。这样的机制为软件设计中加密、解密、防黑客、防病毒的设计提供了必要条件,为信息系统的安全性提供了坚实的基础。

硬件设备的即插即用

    在硬件设备的驱动程序对象中加入非执行的描述信息(即元数据),“告诉”访问者它有哪些特性和功能。操作系统可以根据组件中的元数据动态生成中间件,这种中间件是连接驱动组件与用户程序的桥梁,而操作系统可以“以不变应万变”。例如,一架VCD机的元数据显示它可以有4种动作,分别用 播放、停止、快进、快退 表示。操作系统和浏览器可以将这四个词组画在屏幕上,而根本不需要懂得它们的含义。当终端用户点击播放时,这一动作信息通过桥梁送到驱动组件,VCD机竟然动起来了!这并不是因为操作系统“支持”某种型号的VCD机,而是因为操作系统和VCD机都遵循组件化的硬件驱动模式。

稳定、健壮的系统特性
    Zyco中组件的运行空间可控,可以很好地隔离个别组件的运行错误,不影响系统中其他组件运行,不会导致整个系统的崩溃。如果需要,系统还可以自动重新启动组件以继续中断的工作,自动实现容错等功能。

灵活内核操作系统体系结构

    由于组件、中间件技术,可以做到组件运行环境对用户和组件制造者透明,例如组件可以不加修改运行于不同地址空间。因此可以把操作系统的内核地址区看成是一段特殊的地址空间,根据用户的需要,将一些来源值得信赖或对运行效率要求高的驱动程序配置于内核态,而另一些不太稳定的驱动程序置于用户态运行,在一个系统中同时满足稳定性、安全性与实时性的特殊要求。这样的体系结构不必区分是大内核还是微内核,事实上所谓的“内核”可大可小,完全依据系统自身的需求动态决定。这就是Zyco独创性的“灵活内核”体系结构,利用组件和中间件技术解决了长期以来困扰操作系统体系结构设计者的大内核和微内核在性能、效率两者之间不能两全其美的矛盾。

提供工程化的软件开发手段
    CAR规范了组件接口标准,就像机械零件规定了公制标准一样,软件组件可以实现标准对接。或者可以说CAR规定了软件的“总线”标准,组件就是符合该“总线”标准、具有特定功能的“插卡”,只要插卡插入总线,系统就可以自动识别和调用。
系统组件、应用组件独立升级。软件发布、升级容易,扩展性好。
    组件是对象加元数据的独立封装,保证了软件的复用和共享,提高了软件开发效率。
    高度模块化结构,可灵活重组,易于针对不同应用裁剪组合,移植性好。

意义与展望

    后PC时代,软件产业已成为国际竞争、综合国力和军事实力的重要战略要素,其产业规模和发展水平是一个国家现代化程度的重要标志。操作系统是具有时代标志性产业的根基,是信息产业与传统产业之间重要的结合点。掌握和拥有与国际软件主流技术接轨、具有自主知识产权的嵌入式操作系统,对中国具有重要的战略意义。
    Zyco与CAR的诞生,表明我们已经掌握了操作系统以及组件、中间件技术等因特网时代软件的关键技术,可以为中国的软件开发企业提供国际一流的基础软件平台。
    跨平台的CAR技术与微软主流操作系统兼容,便于应用软件的开发和知识产权的保护,有利于Zyco操作系统的普及推广。同时,CAR组件规范和开发环境具有通用性,可作为大型软件企业集团化协同开发的软件中间件编程平台,有利于组件技术在中国的推广,以此为基础可以建立起中国自己的软件中间件标准。以组件技术为基础的软件工厂将极大地提升中国软件产业的整体水平,带动中国的软件进入国际软件发展的主潮流,为中国的软件走向世界打开通道。
本文来源:北京科泰世纪科技有限公司    作者:不详
热点资讯(一周点击率)
热评博文
评一评已有 0 位网友对此文发表了看法。  我也来评一下

验证码:  看不清?换一张

 

快乐大本营

    无线时代来临,移动产业生态系统将发生一些根本变化。今日头条推荐“芯片是嵌入式4G技术的关键 产业生态系统将发生变化”。

    想了解嵌入式开发工具的市场情况吗?先来体验下我们的在线调查吧!填写调查问卷

工程师之星
朱礼昆
电子信息工程专业,擅长硬件编程
  • 胡菲菲  技术专长:嵌入式系统linux
  • 柳如峰  技术专长:模电,电源
热门招聘
论坛热贴