嵌入式可裁剪式虚拟机的制作方法

文档序号:6337907阅读:250来源:国知局
专利名称:嵌入式可裁剪式虚拟机的制作方法
技术领域
本发明涉及一种嵌入式可裁剪式虚拟机,属于嵌入式系统领域。
背景技术
物联网嵌入式虚拟机技术是一种用于工业现场,通过网络实现动态配置、脚本控 制的技术,被广泛用于嵌入式设备、网络、机器视觉等众多领域。在自动化生产线、远程设备 调试上,嵌入式虚拟机技术起着关键性作用。厂家使用嵌入式虚拟机技术通过网络进行系 统配置、远程调试与控制,从而可降低现场人工操作量、提高调试效率、方便控制系统流程。目前,国际市场中根据虚拟机的应用领域分为3类,即服务器虚拟机、PC虚拟机、 嵌入式虚拟机。服务器虚拟机有Hyper-V、VMware Server、Xen, Virtual Server等,在系 统安全性、部署软件、开发测试等方面具有重要作用。PC虚拟机有VMware Workstation, Virtualbox,Virtualbox等,使单一架构的PC机同时具有多种操作系统,并能同时访问。嵌 入式虚拟机还处于发展阶段,目前主要有google公司的DalviKCognex公司用于机器视觉 脚本的虚拟机,但均无可裁剪性。意味着它们只能运用在嵌入式中高端芯片之上,对于那些 低端的8位、16位CPU,则无法展示其优势,甚至无法运行。随着物联网的快速发展,对嵌入式底层设备提出了更高要求。物联网将底层设备 统一在一起,这就势必引出远程配置、控制、调试、安全等关键技术问题。为使其有一个公共 的开发平台,研发一种高性价比、通用性强的嵌入式可裁剪式虚拟机具有重要意义。随着物联网技术的发展,用户需要基于底层嵌入式设备实现远程系统配置与调 试。嵌入式底层设备具有多样化性,如果为每个嵌入式底层设备开发相关网络通信模块,势 必加大投入。目前,只有Tridium公司推出开源软件编程开放平台,包括Sedona编程语言、 工具包、虚拟机、编译器、图形化开发调试工具等。它是控制网成为物联网形态一种软件体 系架构,目的是把现场总线上的物理设备形成Sedona设备,通过B/S访问模式对Sedona设 备进行管理和监控。但该种结构只是简单的通过网络将各种资源整合到服务器中,而且只 能对某一区域内的设备进行“物联”,还没有达到远程配置调试的目的。嵌入式可裁剪式虚拟机可以根据实际需求动态改变自身功能,满足不同的嵌入式 环境需求,向上可以满足ARM、DSP这种高性能芯片,向下可以用于单片机这类低端芯片,并 且该虚拟机的可移植层提高了虚拟机跨平台的能力,用户只需简单的配置就可以将虚拟机 移植到所需平台上。再者,该虚拟机可以通过脚本进行远程配置系统信息,远程调试,减少 人力。

发明内容
本发明的目的是克服现有技术中存在的不足,提供一种嵌入式可裁剪式虚拟机, 可根据需求实现模块的裁剪,既满足需求,又节省系统资源,是一种适合于工业现场远程调 控和配置,并满足功能要求的嵌入式可裁剪式虚拟机。按照本发明提供的技术方案,所述嵌入式可裁剪式虚拟机包括
3一个用于管理虚拟机内存的内存管理模块,负责一切实例对象及相关内存的申请与销毁;
一个用于class文件编译成本地代码的即时编译模块,以提高程序执行效率; 一个用于解释执行字节码的解释器; 一个用于管理线程的线程管理模块; 一个本地接口,负责调用相关工具模块;
一个运行时数据区,用于存储包括方法区、堆、运行时栈、本地方法栈信息; 一个可移植层,以提升虚拟机的跨平台能力;
所述内存管理模块与所述即时编译模块、解释器、本地接口、运行时数据区和可移植层 均相连;运行时数据区与所述即时编译模块、解释器、本地接口和可移植层均相连;即时编 译模块连接本地接口 ;解释器连接本地接口 ;虚拟机整体与可移植层相连。所述线程管理模块分为用户级和内核级两种管理方式,当脚本程序中没有人机交 互指令时采用用户级线程管理,否则采用内核级线程管理。所述可移植层将底层的不同应用程序编程接口抽象成统一接口,供虚拟机调用。该虚拟机采用自身的内存管理算法,或采用可移植层中所提供的内存管理算法, 或采用用户自定义的内存管理算法。所述可移植层包含内存、网络、线程、I/O、文件五部分模块,通过网络进行系统动 态配置。本发明的优点是由于采用模块化设计,降低开发成本,促进软件复用,方便二次 开发。解释器和即时编译模块的存在提升了嵌入式系统的选择空间,本地接口设计加强了 功能的扩展,可移植层模块提高了虚拟机的可移植性。嵌入式可裁剪式虚拟机的发明使物 联网嵌入式底层设备的远程动态配置、调试更加快捷。该嵌入式可裁剪式虚拟机通过脚本 文件进行远程配置、调试,用户无需携带专业设备到工业现场进行调试,既提高了效率,又 减少了开发成本。


图1为本发明的结构框图。图2为可裁剪式虚拟机组件层次结构图。图3(a)为虚拟机自身的内存申请流程图。图3(b)为虚拟机自身的内存调整流程图。图3(c)为虚拟机自身的内存释放流程图。图4为解释器和即时编译模块执行流程图。图5为可移植层原理图。图6(a)为可移植层内部模块内存调用流程图。图6(b)为可移植层内部模块线程管理流程图。
具体实施例方式下面结合附图和实施例对本发明作进一步说明。如图1所示,所述的嵌入式可裁剪式虚拟机由内存管理、即时编译、解释器、线程管理、本地接口、可移植层等模块组成。具体包括一个用于管理虚拟机内存的内存管理模 块,负责一切实例对象及其它相关内存的申请与销毁;一个用于class文件编译成本地代 码的即时编译模块,以提高程序执行效率;一个用于解释执行字节码的解释器;一个用于 管理线程的线程管理模块;一个本地接口,负责调用相关工具模块;一个运行时数据区,存 储了方法区、堆、运行时栈、本地方法栈等信息;一个包含多种软硬平台的可移植层,负责虚 拟机的跨软硬两种平台。虚拟机在类装载、运行等过程中需要大量申请内存,只要和内存相关部分,都由内 存管理模块维护,内存管理模块连接虚拟机其他的所有模块;即时编译模块是将class文 件编译成本地代码所用,连接本地接口、运行时数据区、内存管理;解释器主要完成代码的 解释执行,连接本地接口、运行时数据区、内存管理;线程管理主要对用户脚本内的各个线 程进行管理,与运行时数据区、内存管理相连;本地接口主要为虚拟机提供调用本地方法的 接口,与运行时数据区、解释器、即时编译模块、内存管理相连;运行时数据区与虚拟机的其 他模块均相连;可移植层与整个虚拟机相连,提升虚拟机的跨平台能力。所述的内存管理模块对装载和运行过程中产生的内存进行管理。即时编译模块可 根据实际需求将脚本程序编译成本地代码,提高运行速度。解释器模块对脚本程序解释执 行。本地接口调用嵌入式本地工具代码,提高系统运行速度。所述的嵌入式可裁剪式虚拟机可移植层主要由多种平台的内存、线程、网络、文 件、I/O等部分组成,具体采用何种平台代码由虚拟机运行时动态确定。用户脚本(User Script)采用Java语言编写,编译后通过网络将class文件下载 到RAM中;配置信息则是对相关终端设备进行配置。虚拟机在配置完成后,通过Java本地 接口(Java Native Interface,JNI)调用相关模块或其它本地代码来完成用户脚本的执 行,最后达到控制、显示的效果。图2所示,该虚拟机由解释器、线程、即时编译模块、网络、内存等组成,不同平台 对应不同组件,虚拟机会根据实际需求而生成。另外,用户还可以自行开发某个组件来替换 原有组件。如图3 (a) (b) (c)所示的嵌入式可裁剪式虚拟机自身的内存管理方式,虚拟机 在实现时会多次申请内存,如果都由系统内核来管理,势必造成额外的运行开销,并产生内 存碎片。虚拟机自身具有可靠的内存管理避免了虚拟机无法申请到内存而造成崩溃。虚拟 机采用两个双向链表空闲表和使用表,为了便于代码实现,分配时从尾端开始向前进行分 配,每次分配后需修改IdleBlockSize (IdleBlockSize为空闲区的大小)。内存节点结构 由 DataSize、RealSize、TestBlock、Memory、OtherBlock 组成,其含义分别为申请的内存大 小、该结构所占空间大小、检测块,为四个字节的字符‘T’、实际申请的内存块、空间余量,主 要用于内存调整函数。图4所示,虚拟机会根据运行环境的资源开销程度来确定是否采用即时编译技 术,一旦采用该技术,虚拟机会检测运行环境并将代码编译成本地代码,提高运行速度,但 也增加了系统开销。而解释器的运行速度虽然没有即时编译那么快,但也足以在许多场合 适用,且其系统开销较小。图5所示,本发明嵌入式可裁剪式虚拟机将底层的不同API(应用程序编程接口 )抽 象成统一接口以达到虚拟机的高效移植。这些模块主要有线程、内存、网络等,抽象后的模块分别命名为P1 thread、ρlmemory、ρInet,在各个模块的名字前加“ρ 1 ”表示这是可移植层 抽象后的模块。以线程(Thread)模块为例,虚拟机只会调用plthread,由此提高了虚拟机 的移植性。各模块连接方式如图5所示各个平台的线程模块被抽象到plthread模块中,内 存模块抽象到Plmemory中,网络模块抽象到plnet中,其它模块类似。抽象后的plthread、 plmem0ry、plnet、其它模块整合成可移植层,可移植层与虚拟机相连接,为虚拟机的跨平台 提供可能。所述的可移植层将底层不同平台中具有同一功能API抽象成统一接口,主要包含 各种平台的内存、网络、线程、I/O、文件五部分模块,并能通过网络进行系统动态配置。以线 程模块为例,不同平台(DSP、ARM或其它)的线程模块被抽象成可移植层的plthread模块, 虚拟机只会调用plthread,并根据初始的宏定义来确定具体采用何种平台的相关代码。开 发者只要将可移植层设计完善,使其尽量包含多的平台,用户只需简单的定义相关宏就能 实现虚拟机的移植,以满足不同的嵌入式环境需求,既可以满足ARM、DSP这种高性能芯片, 又可以用于单片机这类低端芯片,提高了开发效率和应用范围。有了可移植层的支持,不同 类库中的与平台相关的代码完全被可移植层捕获,并由其确定调用对象,加强了系统的功 能扩展。所述的可移植层包含多种软硬平台信息,使虚拟机完全可以跨平台,而不单单是 脚本程序的跨平台,该方案大大提高了虚拟机的可移植性。图6 (a) (b)所示,虚拟机可以采用自身的内存管理算法,也可以采用可移植层中 所提供的内存管理算法,更可以采用用户开发的高效算法,这完全取决于用户。可移植层为 虚拟机提供了两种方式的线程管理用户级线程管理和内核级线程管理。对于需要人机交 互的多线程进行API重写,使虚拟机中对于线程API的调用都依赖可移植层,提高了可移植 性;在确定没有人机交互的脚本程序,对线程进行用户级管理,这样可以避免内核调度,节 约运行时间。本嵌入式可裁剪式虚拟机采用“即时编译+解释器”的组合模式,根据系统执行的 代码量和所能承受的负担来确定采用何种方式,提高处理效率。虚拟机模块化、可裁剪,动 态调用工具模块,动态配置系统信息,功能强,可广泛用于物联网底层各种嵌入式设备,如 机器视觉,覆盖领域广阔。
权利要求
1.嵌入式可裁剪式虚拟机,其特征是包括一个用于管理虚拟机内存的内存管理模块,负责一切实例对象及相关内存的申请与销毁;一个用于Class文件编译成本地代码的即时编译模块,以提高程序执行效率; 一个用于解释执行字节码的解释器; 一个用于管理线程的线程管理模块; 一个本地接口,负责调用相关工具模块;一个运行时数据区,用于存储包括方法区、堆、运行时栈、本地方法栈信息; 一个可移植层,以提升虚拟机的跨平台能力;所述内存管理模块与所述即时编译模块、解释器、本地接口、运行时数据区和可移植层 均相连;运行时数据区与所述即时编译模块、解释器、本地接口和可移植层均相连;即时编 译模块连接本地接口 ;解释器连接本地接口 ;虚拟机整体与可移植层相连。
2.如权利要求1所述嵌入式可裁剪式虚拟机,其特征是所述线程管理模块分为用户级 和内核级两种管理方式,当脚本程序中没有人机交互指令时采用用户级线程管理,否则采 用内核级线程管理。
3.如权利要求1所述嵌入式可裁剪式虚拟机,其特征是所述可移植层将底层的不同应 用程序编程接口抽象成统一接口,供虚拟机调用。
4.如权利要求1所述嵌入式可裁剪式虚拟机,其特征是虚拟机采用自身的内存管理算 法,或采用可移植层中所提供的内存管理算法,或采用用户自定义的内存管理算法。
5.如权利要求1所述嵌入式可裁剪式虚拟机,其特征是所述可移植层包含内存、网络、 线程、I/O、文件五部分模块,通过网络进行系统动态配置。
全文摘要
本发明提供了一种应用于物联网底层嵌入式设备的可裁剪式虚拟机,包括一个内存管理模块、一个即时编译模块、一个解释器模块、一个线程管理模块、一个本地接口模块、一个运行时数据区、一个可移植层模块。可移植层包含内存、网络、线程、文件、I/O等模块,通过网络进行系统动态配置,使虚拟机实现跨平台。可裁剪式虚拟机适用于物联网底层不同层次嵌入式设备的需求,具有应用范围广、体积小、能耗低、功能强、配置灵活的特点,可广泛用于物联网底层各种嵌入式设备,如机器视觉,覆盖领域广阔。
文档编号G06F9/455GK102004662SQ20101057677
公开日2011年4月6日 申请日期2010年12月7日 优先权日2010年12月7日
发明者白瑞林, 赵洁 申请人:江南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1