CN102004662A - 嵌入式可裁剪式虚拟机 - Google Patents
嵌入式可裁剪式虚拟机 Download PDFInfo
- Publication number
- CN102004662A CN102004662A CN201010576776XA CN201010576776A CN102004662A CN 102004662 A CN102004662 A CN 102004662A CN 201010576776X A CN201010576776X A CN 201010576776XA CN 201010576776 A CN201010576776 A CN 201010576776A CN 102004662 A CN102004662 A CN 102004662A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- module
- thread
- portable layer
- embedded
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种应用于物联网底层嵌入式设备的可裁剪式虚拟机,包括一个内存管理模块、一个即时编译模块、一个解释器模块、一个线程管理模块、一个本地接口模块、一个运行时数据区、一个可移植层模块。可移植层包含内存、网络、线程、文件、I/O等模块,通过网络进行系统动态配置,使虚拟机实现跨平台。可裁剪式虚拟机适用于物联网底层不同层次嵌入式设备的需求,具有应用范围广、体积小、能耗低、功能强、配置灵活的特点,可广泛用于物联网底层各种嵌入式设备,如:机器视觉,覆盖领域广阔。
Description
技术领域
本发明涉及一种嵌入式可裁剪式虚拟机,属于嵌入式系统领域。
背景技术
物联网嵌入式虚拟机技术是一种用于工业现场,通过网络实现动态配置、脚本控制的技术,被广泛用于嵌入式设备、网络、机器视觉等众多领域。在自动化生产线、远程设备调试上,嵌入式虚拟机技术起着关键性作用。厂家使用嵌入式虚拟机技术通过网络进行系统配置、远程调试与控制,从而可降低现场人工操作量、提高调试效率、方便控制系统流程。
目前,国际市场中根据虚拟机的应用领域分为3类,即服务器虚拟机、PC虚拟机、嵌入式虚拟机。服务器虚拟机有Hyper-V、VMware Server、Xen、Virtual Server等,在系统安全性、部署软件、开发测试等方面具有重要作用。PC虚拟机有VMware Workstation、Virtualbox、Virtualbox等,使单一架构的PC机同时具有多种操作系统,并能同时访问。嵌入式虚拟机还处于发展阶段,目前主要有google公司的Dalvik、Cognex公司用于机器视觉脚本的虚拟机,但均无可裁剪性。意味着它们只能运用在嵌入式中高端芯片之上,对于那些低端的8位、16位CPU,则无法展示其优势,甚至无法运行。
随着物联网的快速发展,对嵌入式底层设备提出了更高要求。物联网将底层设备统一在一起,这就势必引出远程配置、控制、调试、安全等关键技术问题。为使其有一个公共的开发平台,研发一种高性价比、通用性强的嵌入式可裁剪式虚拟机具有重要意义。
随着物联网技术的发展,用户需要基于底层嵌入式设备实现远程系统配置与调试。嵌入式底层设备具有多样化性,如果为每个嵌入式底层设备开发相关网络通信模块,势必加大投入。目前,只有Tridium公司推出开源软件编程开放平台,包括Sedona编程语言、工具包、虚拟机、编译器、图形化开发调试工具等。它是控制网成为物联网形态一种软件体系架构,目的是把现场总线上的物理设备形成Sedona设备,通过B/S访问模式对Sedona设备进行管理和监控。但该种结构只是简单的通过网络将各种资源整合到服务器中,而且只能对某一区域内的设备进行“物联”,还没有达到远程配置调试的目的。
嵌入式可裁剪式虚拟机可以根据实际需求动态改变自身功能,满足不同的嵌入式环境需求,向上可以满足ARM、DSP这种高性能芯片,向下可以用于单片机这类低端芯片,并且该虚拟机的可移植层提高了虚拟机跨平台的能力,用户只需简单的配置就可以将虚拟机移植到所需平台上。再者,该虚拟机可以通过脚本进行远程配置系统信息,远程调试,减少人力。
发明内容
本发明的目的是克服现有技术中存在的不足,提供一种嵌入式可裁剪式虚拟机,可根据需求实现模块的裁剪,既满足需求,又节省系统资源,是一种适合于工业现场远程调控和配置,并满足功能要求的嵌入式可裁剪式虚拟机。
按照本发明提供的技术方案,所述嵌入式可裁剪式虚拟机包括:
一个用于管理虚拟机内存的内存管理模块,负责一切实例对象及相关内存的申请与销毁;
一个用于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(应用程序编程接口)抽象成统一接口以达到虚拟机的高效移植。这些模块主要有线程、内存、网络等,抽象后的模块分别命名为plthread、plmemory、plnet,在各个模块的名字前加“pl”表示这是可移植层抽象后的模块。以线程(Thread)模块为例,虚拟机只会调用plthread,由此提高了虚拟机的移植性。各模块连接方式如图5所示:各个平台的线程模块被抽象到plthread模块中,内存模块抽象到plmemory中,网络模块抽象到plnet中,其它模块类似。抽象后的plthread、plmemory、plnet、其它模块整合成可移植层,可移植层与虚拟机相连接,为虚拟机的跨平台提供可能。
所述的可移植层将底层不同平台中具有同一功能API抽象成统一接口,主要包含各种平台的内存、网络、线程、I/O、文件五部分模块,并能通过网络进行系统动态配置。以线程模块为例,不同平台(DSP、ARM或其它)的线程模块被抽象成可移植层的plthread模块,虚拟机只会调用plthread,并根据初始的宏定义来确定具体采用何种平台的相关代码。开发者只要将可移植层设计完善,使其尽量包含多的平台,用户只需简单的定义相关宏就能实现虚拟机的移植,以满足不同的嵌入式环境需求,既可以满足ARM、DSP这种高性能芯片,又可以用于单片机这类低端芯片,提高了开发效率和应用范围。有了可移植层的支持,不同类库中的与平台相关的代码完全被可移植层捕获,并由其确定调用对象,加强了系统的功能扩展。
所述的可移植层包含多种软硬平台信息,使虚拟机完全可以跨平台,而不单单是脚本程序的跨平台,该方案大大提高了虚拟机的可移植性。
图6(a)(b)所示,虚拟机可以采用自身的内存管理算法,也可以采用可移植层中所提供的内存管理算法,更可以采用用户开发的高效算法,这完全取决于用户。可移植层为虚拟机提供了两种方式的线程管理:用户级线程管理和内核级线程管理。对于需要人机交互的多线程进行API重写,使虚拟机中对于线程API的调用都依赖可移植层,提高了可移植性;在确定没有人机交互的脚本程序,对线程进行用户级管理,这样可以避免内核调度,节约运行时间。
本嵌入式可裁剪式虚拟机采用“即时编译+解释器”的组合模式,根据系统执行的代码量和所能承受的负担来确定采用何种方式,提高处理效率。虚拟机模块化、可裁剪,动态调用工具模块,动态配置系统信息,功能强,可广泛用于物联网底层各种嵌入式设备,如:机器视觉,覆盖领域广阔。
Claims (5)
1.嵌入式可裁剪式虚拟机,其特征是包括:
一个用于管理虚拟机内存的内存管理模块,负责一切实例对象及相关内存的申请与销毁;
一个用于class文件编译成本地代码的即时编译模块,以提高程序执行效率;
一个用于解释执行字节码的解释器;
一个用于管理线程的线程管理模块;
一个本地接口,负责调用相关工具模块;
一个运行时数据区,用于存储包括方法区、堆、运行时栈、本地方法栈信息;
一个可移植层,以提升虚拟机的跨平台能力;
所述内存管理模块与所述即时编译模块、解释器、本地接口、运行时数据区和可移植层均相连;运行时数据区与所述即时编译模块、解释器、本地接口和可移植层均相连;即时编译模块连接本地接口;解释器连接本地接口;虚拟机整体与可移植层相连。
2.如权利要求1所述嵌入式可裁剪式虚拟机,其特征是所述线程管理模块分为用户级和内核级两种管理方式,当脚本程序中没有人机交互指令时采用用户级线程管理,否则采用内核级线程管理。
3.如权利要求1所述嵌入式可裁剪式虚拟机,其特征是所述可移植层将底层的不同应用程序编程接口抽象成统一接口,供虚拟机调用。
4.如权利要求1所述嵌入式可裁剪式虚拟机,其特征是虚拟机采用自身的内存管理算法,或采用可移植层中所提供的内存管理算法,或采用用户自定义的内存管理算法。
5.如权利要求1所述嵌入式可裁剪式虚拟机,其特征是所述可移植层包含内存、网络、线程、I/O、文件五部分模块,通过网络进行系统动态配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010576776XA CN102004662A (zh) | 2010-12-07 | 2010-12-07 | 嵌入式可裁剪式虚拟机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010576776XA CN102004662A (zh) | 2010-12-07 | 2010-12-07 | 嵌入式可裁剪式虚拟机 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102004662A true CN102004662A (zh) | 2011-04-06 |
Family
ID=43812041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010576776XA Pending CN102004662A (zh) | 2010-12-07 | 2010-12-07 | 嵌入式可裁剪式虚拟机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102004662A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102331935A (zh) * | 2011-11-07 | 2012-01-25 | 广东天波信息技术股份有限公司 | 一种嵌入式跨系统软件开发平台 |
CN102662842A (zh) * | 2012-04-11 | 2012-09-12 | 贵州航天风华精密设备有限公司 | 一种基于Java平台的航天器测试软件构架及其测试方法 |
CN102662843A (zh) * | 2012-04-11 | 2012-09-12 | 贵州航天风华精密设备有限公司 | 一种模拟航天器设备异常的软件测试方法 |
CN103532996A (zh) * | 2012-07-04 | 2014-01-22 | 中国电信股份有限公司 | 物联网业务信息的处理方法、系统和外设装置、控制装置 |
CN103530165A (zh) * | 2013-09-06 | 2014-01-22 | 北京雅鲁藏布科技有限公司 | 一种应用于物联网行业的java解决方案 |
WO2016037327A1 (en) * | 2014-09-10 | 2016-03-17 | Intel Corporation | Custom class library generation method and apparatus |
CN107436796A (zh) * | 2017-08-07 | 2017-12-05 | 苏州速显微电子科技有限公司 | 一种基于寄存器的虚拟机及其实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030066046A1 (en) * | 2001-09-07 | 2003-04-03 | Dawson Thomas Patrick | Java virtual machine with non-volatile memory |
CN1490724A (zh) * | 2002-10-18 | 2004-04-21 | 上海贝尔有限公司 | 一种用于嵌入式系统软件开发的虚拟机装置 |
CN1909705A (zh) * | 2005-08-05 | 2007-02-07 | 杭州波导软件有限公司 | 一种基于移动终端平台的通用开发平台 |
CN101000557A (zh) * | 2006-01-13 | 2007-07-18 | 北京金远见电脑技术有限公司 | 虚拟机 |
-
2010
- 2010-12-07 CN CN201010576776XA patent/CN102004662A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030066046A1 (en) * | 2001-09-07 | 2003-04-03 | Dawson Thomas Patrick | Java virtual machine with non-volatile memory |
CN1490724A (zh) * | 2002-10-18 | 2004-04-21 | 上海贝尔有限公司 | 一种用于嵌入式系统软件开发的虚拟机装置 |
CN1909705A (zh) * | 2005-08-05 | 2007-02-07 | 杭州波导软件有限公司 | 一种基于移动终端平台的通用开发平台 |
CN101000557A (zh) * | 2006-01-13 | 2007-07-18 | 北京金远见电脑技术有限公司 | 虚拟机 |
Non-Patent Citations (4)
Title |
---|
《中国优秀硕士学位论文全文数据库 信息科技辑》 20070815 徐慧慧 开源J2SE项目Harmony--Instrument模块的设计与实现 I138-126 1-5 , 第02期 * |
倪红波 等: "嵌入式系统中Java虚拟机的研究与移植", 《计算机工程》 * |
徐慧慧: "开源J2SE项目Harmony——Instrument模块的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
闫伟: "Java虚拟机的研究以及在数字电视中间件上的应用", 《中国优秀博硕士学位论文全文数据库 (硕士) 信息科技辑》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102331935A (zh) * | 2011-11-07 | 2012-01-25 | 广东天波信息技术股份有限公司 | 一种嵌入式跨系统软件开发平台 |
CN102662842A (zh) * | 2012-04-11 | 2012-09-12 | 贵州航天风华精密设备有限公司 | 一种基于Java平台的航天器测试软件构架及其测试方法 |
CN102662843A (zh) * | 2012-04-11 | 2012-09-12 | 贵州航天风华精密设备有限公司 | 一种模拟航天器设备异常的软件测试方法 |
CN102662843B (zh) * | 2012-04-11 | 2015-11-25 | 贵州航天风华精密设备有限公司 | 一种模拟航天器设备异常的软件测试方法 |
CN102662842B (zh) * | 2012-04-11 | 2016-02-03 | 贵州航天风华精密设备有限公司 | 一种基于Java平台的航天器测试软件构架及其测试方法 |
CN103532996A (zh) * | 2012-07-04 | 2014-01-22 | 中国电信股份有限公司 | 物联网业务信息的处理方法、系统和外设装置、控制装置 |
CN103530165A (zh) * | 2013-09-06 | 2014-01-22 | 北京雅鲁藏布科技有限公司 | 一种应用于物联网行业的java解决方案 |
CN103530165B (zh) * | 2013-09-06 | 2016-06-15 | 北京雅鲁藏布科技有限公司 | 一种应用于物联网行业的java解决方案 |
WO2016037327A1 (en) * | 2014-09-10 | 2016-03-17 | Intel Corporation | Custom class library generation method and apparatus |
US9632757B2 (en) | 2014-09-10 | 2017-04-25 | Intel Corporation | Custom class library generation method and apparatus |
CN107077338A (zh) * | 2014-09-10 | 2017-08-18 | 英特尔公司 | 自定义类库生成方法和装置 |
CN107436796A (zh) * | 2017-08-07 | 2017-12-05 | 苏州速显微电子科技有限公司 | 一种基于寄存器的虚拟机及其实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111770113B (zh) | 一种执行智能合约的方法、区块链节点和节点设备 | |
Simon et al. | Java™ on the bare metal of wireless sensor devices: the squawk Java virtual machine | |
Lin et al. | Benchmark dalvik and native code for android system | |
CN102004662A (zh) | 嵌入式可裁剪式虚拟机 | |
JP2015524126A (ja) | 適応的に移植性を有したライブラリ | |
US8997042B2 (en) | Flexible and run-time-modifiable inclusion of functionality in computer code | |
CN102402427A (zh) | 一种Java应用程序的更新方法及装置 | |
CN111770116B (zh) | 一种执行智能合约的方法、区块链节点、存储介质 | |
CN111815310B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN111770204B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
US11630798B1 (en) | Virtualized multicore systems with extended instruction heterogeneity | |
US8341613B2 (en) | Reducing stack space consumption via head-call optimization | |
Dastgeer et al. | The PEPPHER composition tool: Performance-aware dynamic composition of applications for GPU-based systems | |
CN111768184A (zh) | 一种执行智能合约的方法及区块链节点 | |
CN111768183A (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN111770202B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN109542464A (zh) | IoT设备脚本程序的开发部署系统、方法及存储介质 | |
CN103631585A (zh) | 一种用于开发应用程序的方法及系统 | |
Abramov et al. | OpenTS: an outline of dynamic parallelization approach | |
Lifflander et al. | Design and implementation techniques for an MPI-oriented AMT runtime | |
Wang et al. | Object-oriented stream programming using aspects | |
Baloukas et al. | Mapping embedded applications on MPSoCs: the MNEMEE approach | |
Barack et al. | Effectiveness of code refactoring techniques for energy consumption in a mobile environment | |
Pedersen et al. | Resumable Java Bytecode-Process Mobility for the JVM. | |
Liang et al. | An OpenMP programming environment on mobile devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110406 |