CN109800061B - 一种嵌入式软件多实例虚拟化方法 - Google Patents
一种嵌入式软件多实例虚拟化方法 Download PDFInfo
- Publication number
- CN109800061B CN109800061B CN201910143923.5A CN201910143923A CN109800061B CN 109800061 B CN109800061 B CN 109800061B CN 201910143923 A CN201910143923 A CN 201910143923A CN 109800061 B CN109800061 B CN 109800061B
- Authority
- CN
- China
- Prior art keywords
- software
- instance
- virtualization
- handle
- thread
- 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.)
- Active
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
Abstract
本发明公开了一种嵌入式软件多实例虚拟化技术,包括通用设备管理层设计、软件虚拟化容器和软件行为的抽象、封装;本发明使用嵌入式软件多实例虚拟化技术,通过软件的抽象、封装,用嵌入式c的实现了面向对象的开发方式实现,把软件实例进行了虚拟化,更加符合我们对客观事物的认识,便于理解;通过软件虚拟化容器的技术对多软件实例注册,实现了多实例的统一管理,解决了多实例常用手段的资源消耗大、代码冗余不易维护的问题,同时使用的设备管理层技术也让我们的软件与硬件进行了解耦,让程序更易维护、拓展性更强。
Description
技术领域
本发明涉及软件技术领域,具体为一种嵌入式软件多实例虚拟化方法。
背景技术
嵌入式软件开发中,通常采用面向过程的开发思想,当面对复杂、重复的业务功能时,软件开发繁琐而冗余;而更高级的面向对象开发的方式需要高级语言实现。嵌入式系统通常的资源无法满足这类需求,由此需要一种多实例的虚拟化技术。
实现多实例虚拟化技术,需要抽象的设备管理让硬件与软件解耦,并把软件的行为抽象出来,在通过虚拟化的容器技术实现多实例的共存。
现有嵌入式软件中对重复的软件通常使用重复编码的方式,采用面向过程的编码方式首先把单一的功能实现,然后重复对首次实现的功能进行重复的复制工作。这样的实现方式首先代码量会很冗余,需要几个实例就需要重复编码几次;其次抽象的实例如果出现修改,需要对所有实例进行修改;最后单一实例很抽象,从最上层业务到最底层接口存在耦合,移植工作复杂。
发明内容
本发明要解决的技术问题是克服现有的缺陷,提供一种嵌入式软件多实例虚拟化方法,可以有效解决背景技术中的问题。
为实现上述目的,本发明提供如下技术方案:一种嵌入式软件多实例虚拟化方法,包括通用设备管理层、软件虚拟化容器和软件行为的抽象、封装;
所述通用设备管理层应用于底层硬件,对上层应用提供统一的通用设备接口,让软件开发保持一致,与下层软件解耦,对下层硬件定义标准实现,接入多种硬件,拓宽软件兼容性;
所述软件行为的抽象、封装是面向对象的特征之一,是对象、类的主要特征,对软件的抽象行为进行提炼,通过结构化的数据结构进行展示、封装,封装后的数据结构定义了抽象后的软件,实例化后软件对象,定义任务句柄,设备句柄,线程句柄以及软件名字;
所述软件虚拟化容器内含通过注册抽象封装后的软件,启动调度线程,在调度线程内按照协程方式,统一调度注册好的软件实例行为,所述软件虚拟化容器包括一个调度器和一个双向链表。
作为本发明的一种优选技术方案,所述通用设备管理层定义了统一的设备使用接口,把硬件的标准化实现实例到具体的设备结构体里面,通过设备注册接口,把实例化的硬件设备注册到设备管理层,上层应用通过注册的设备名查找到设备唯一句柄,通过统一的设备管理接口对硬件操作。
作为本发明的一种优选技术方案,所述软件虚拟化容器工作过程中,在开始阶段启动一个线程,线程内遍历软件虚拟化容器的双向链表,当发现注册的实例,则调用实例的线程句柄,如果实例的线程句柄已经定义了具体的逻辑行为,则直接调度,让实例的线程的执行调度;反之则继续往链表的下一个节点遍历;当所有节点遍历完成以后,调度器等待超时事件或者消息事件,事件到达以后重新开启流程。
作为本发明的一种优选技术方案,所述软件行为的抽象、封装完成后的数据结构至少应该包含通用设备句柄、任务句柄以及线程句柄以及变量定义,设备句柄是用于软件与硬件的实际操作,任务句柄是用来确定软件挂载在哪里,以什么级别运行,线程句柄是用来定义软件行为的实现,负责具体逻辑行为,最终的变量定义覆盖了软件运行过程中的状态定义,保存软件运行过程中的所有状态。
作为本发明的一种优选技术方案,所述双向链表用于统一管理多实例的存储,当有新实例注册以后,插入链表尾端,当实例销毁的时候,从链表中删除;所述调度器通过线程启动,启动以后通过时间触发,遍历容器双向链表上的实例,当实例的线程句柄定义了具体的逻辑行为,则直接调度,对实例化的软件行为进行执行。
与现有技术相比,本发明的有益效果是:
本发明使用嵌入式软件多实例虚拟化方法,通过软件的抽象、封装,用嵌入式c的实现了面向对象的开发方式实现,把软件实例进行了虚拟化,更加符合我们对客观事物的认识,便于理解;通过软件虚拟化容器的技术对多软件实例注册,实现了多实例的统一管理,解决了多实例常用手段的资源消耗大、代码冗余不易维护的问题,同时使用的设备管理层技术也让我们的软件与硬件进行了解耦,让程序更易维护、拓展性更强。
附图说明
图1为本发明一种嵌入式软件多实例虚拟化方法的技术方案示意图;
图2为本发明一种嵌入式软件多实例虚拟化方法通用设备管理层的工作流程示意图;
图3为本发明一种嵌入式软件多实例虚拟化方法软件虚拟化容器的工作流程示意图;
图4为本发明一种嵌入式软件多实例虚拟化方法的系统流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-4,本发明提供一种技术方案:一种嵌入式软件多实例虚拟化方法,包括通用设备管理层、软件虚拟化容器和软件行为的抽象、封装;
所述通用设备管理层应用于底层硬件,对上层应用提供统一的通用设备接口,让软件开发保持一致,与下层软件解耦,对下层硬件定义标准实现,接入多种硬件,拓宽软件兼容性;
所述软件行为的抽象、封装是面向对象的特征之一,是对象、类的主要特征,对软件的抽象行为进行提炼,通过结构化的数据结构进行展示、封装,封装后的数据结构定义了抽象后的软件,实例化后软件对象,定义任务句柄,设备句柄,线程句柄以及软件名字;
所述软件虚拟化容器内含通过注册抽象封装后的软件,启动调度线程,在调度线程内按照协程方式,统一调度注册好的软件实例行为,所述软件虚拟化容器包括一个调度器和一个双向链表。
本实施例中,优选的,所述通用设备管理层定义了统一的设备使用接口,把硬件的标准化实现实例到具体的设备结构体里面,通过设备注册接口,把实例化的硬件设备注册到设备管理层,上层应用通过注册的设备名查找到设备唯一句柄,通过统一的设备管理接口对硬件操作。
本实施例中,优选的,所述软件虚拟化容器工作过程中,在开始阶段启动一个线程,线程内遍历软件虚拟化容器的双向链表,当发现注册的实例,则调用实例的线程句柄,如果实例的线程句柄已经定义了具体的逻辑行为,则直接调度,让实例的线程的执行调度;反之则继续往链表的下一个节点遍历;当所有节点遍历完成以后,调度器等待超时事件或者消息事件,事件到达以后重新开启流程。
本实施例中,优选的,所述软件行为的抽象、封装完成后的数据结构至少应该包含通用设备句柄、任务句柄以及线程句柄以及变量定义,设备句柄是用于软件与硬件的实际操作,任务句柄是用来确定软件挂载在哪里,以什么级别运行,线程句柄是用来定义软件行为的实现,负责具体逻辑行为,最终的变量定义覆盖了软件运行过程中的状态定义,保存软件运行过程中的所有状态。
本实施例中,优选的,所述双向链表用于统一管理多实例的存储,当有新实例注册以后,插入链表尾端,当实例销毁的时候,从链表中删除;所述调度器通过线程启动,启动以后通过时间触发,遍历容器双向链表上的实例,当实例的线程句柄定义了具体的逻辑行为,则直接调度,对实例化的软件行为进行执行。
本发明的系统工作流程如下:对软件的抽象行为进行提炼,通过结构化的数据结构进行展示、封装;封装后的数据结构定义了抽象后的软件,实例化后软件对象,定义任务句柄,设备句柄,线程句柄以及软件名字;然后调用容器的注册接口,把软件对象注册容器里面,容器启动调度,调度线程以极小的时间粒度运行,到时以后遍历容器的双向链表,当发现注册的实例并且实例的线程句柄定义了具体的逻辑行为,则调度实例;一直执行到链表的末尾;然后进入休眠,等待下一次调度器的启动。
本发明使用嵌入式软件多实例虚拟化方法,通过软件的抽象、封装,用嵌入式c的实现了面向对象的开发方式实现,把软件实例进行了虚拟化,更加符合我们对客观事物的认识,便于理解;通过软件虚拟化容器的技术对多软件实例注册,实现了多实例的统一管理,解决了多实例常用手段的资源消耗大、代码冗余不易维护的问题,同时使用的设备管理层技术也让我们的软件与硬件进行了解耦,让程序更易维护、拓展性更强。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (5)
1.一种嵌入式软件多实例虚拟化方法,包括通用设备管理层、软件虚拟化容器和软件行为的抽象、封装,其特征在于:
所述通用设备管理层是应用软件与底层硬件的通道,对上层应用提供统一的通用设备接口,让软件开发保持一致,与下层软件解耦,对下层硬件定义标准实现,接入多种硬件,拓宽软件兼容性;
所述软件行为的抽象、封装是面向对象的特征之一,是对象、类的主要特征,对软件的抽象行为进行提炼,通过结构化的数据结构进行展示、封装,封装后的数据结构定义了抽象后的软件,实例化后的软件对象,定义任务句柄,设备句柄,线程句柄以及软件名字;
所述软件虚拟化容器通过注册抽象封装后得到的软件实例,启动调度线程,在调度线程内按照协程方式,统一调度注册好的软件实例行为,所述软件虚拟化容器包括一个调度器和一个双向链表。
2.根据权利要求1所述的一种嵌入式软件多实例虚拟化方法,其特征在于:所述通用设备管理层定义了统一的设备使用接口,把硬件的标准化实现实例到具体的设备结构体里面,通过设备注册接口,把实例化的硬件设备注册到设备管理层,上层应用通过注册的设备名查找到设备唯一句柄,通过统一的设备管理接口对硬件操作。
3.根据权利要求1所述的一种嵌入式软件多实例虚拟化方法,其特征在于:所述软件虚拟化容器工作过程中,在开始阶段启动一个线程,线程内遍历软件虚拟化容器的双向链表,当发现注册的实例,则调用实例的线程句柄,如果实例的线程句柄已经定义了具体的逻辑行为,则直接调度,让实例的线程的执行调度;反之则继续往链表的下一个节点遍历;当所有节点遍历完成以后,调度器等待超时事件或者消息事件,事件到达以后重新开启流程。
4.根据权利要求1所述的一种嵌入式软件多实例虚拟化方法,其特征在于:所述软件行为的抽象、封装完成后的数据结构至少应该包含通用设备句柄、任务句柄以及线程句柄以及变量定义,设备句柄是用于软件与硬件的实际操作,任务句柄是用来确定软件挂载在哪里,以什么级别运行,线程句柄是用来定义软件行为的实现,负责具体逻辑行为,最终的变量定义覆盖了软件运行过程中的状态定义,保存软件运行过程中的所有状态。
5.根据权利要求1所述的一种嵌入式软件多实例虚拟化方法,其特征在于:所述双向链表用于统一管理多实例的存储,当有新实例注册以后,插入链表尾端,当实例销毁的时候,从链表中删除;所述调度器通过线程启动,启动以后通过时间触发,遍历容器双向链表上的实例,当实例的线程句柄定义了具体的逻辑行为,则直接调度,对实例化的软件行为进行执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910143923.5A CN109800061B (zh) | 2019-02-27 | 2019-02-27 | 一种嵌入式软件多实例虚拟化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910143923.5A CN109800061B (zh) | 2019-02-27 | 2019-02-27 | 一种嵌入式软件多实例虚拟化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109800061A CN109800061A (zh) | 2019-05-24 |
CN109800061B true CN109800061B (zh) | 2023-04-25 |
Family
ID=66561389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910143923.5A Active CN109800061B (zh) | 2019-02-27 | 2019-02-27 | 一种嵌入式软件多实例虚拟化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109800061B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113467975B (zh) * | 2021-07-23 | 2023-09-26 | 福建天晴数码有限公司 | 一种解耦的程序开发方法及系统 |
CN113296868B (zh) * | 2021-07-27 | 2021-11-23 | 杭州筋斗腾云科技有限公司 | 应用平台及应用管理方法 |
CN115827045B (zh) * | 2022-10-31 | 2023-07-14 | 北京凯思昊鹏软件工程技术有限公司 | 嵌入式系统中容器的接口配置系统和方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8387052B2 (en) * | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
US8799362B2 (en) * | 2010-03-09 | 2014-08-05 | Avistar Communications Corporation | Scalable high-performance interactive real-time media architectures for virtual desktop environments |
CN102339229A (zh) * | 2010-07-15 | 2012-02-01 | 戴元顺 | 基于操作系统层的虚拟化方法 |
CN106339257B (zh) * | 2015-07-10 | 2020-03-24 | 中标软件有限公司 | 使客户机操作系统轻量化的方法及系统和虚拟化操作系统 |
GB2558879A (en) * | 2017-01-04 | 2018-07-25 | Cisco Tech Inc | Method and apparatus for container-based virtualisation |
CN108762815B (zh) * | 2018-05-16 | 2021-01-01 | 北京麟卓信息科技有限公司 | 一种基于非虚拟化体系架构的Android运行环境实现方法 |
-
2019
- 2019-02-27 CN CN201910143923.5A patent/CN109800061B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109800061A (zh) | 2019-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109800061B (zh) | 一种嵌入式软件多实例虚拟化方法 | |
EP4120076A1 (en) | Task scheduling method and apparatus | |
CN101226487B (zh) | 基于嵌入式Linux操作系统的内核级线程库的实现方法 | |
US8166483B2 (en) | Method and apparatus for implementing priority management of computer operations | |
JP5153637B2 (ja) | 仮想クライアント・コンピューティング環境内でのコマンドのハードウェア処理 | |
CN108595282A (zh) | 一种高并发消息队列的实现方法 | |
CN101452404B (zh) | 一种嵌入式操作系统的任务调度装置及方法 | |
KR20080106561A (ko) | 실세계 프로세스들을 모델링하기 위한 방법 및 시스템과 컴퓨터 판독가능 매체 | |
US10423390B1 (en) | Systems and methods for generating code for models having messaging semantics | |
CN110532044B (zh) | 一种大数据批处理方法、装置、电子设备及存储介质 | |
WO2012116513A1 (zh) | 并发优化的bpmn组合服务执行引擎及方法 | |
WO2014110702A1 (zh) | 协同并发式消息总线、主动构件组装模型及构件拆分方法 | |
CN108304267A (zh) | 高可靠低资源开销的多源数据引接方法 | |
WO2023011249A1 (zh) | Io多路复用方法、介质、设备和操作系统 | |
EP4303725A1 (en) | Method and device for identifying android system drawing thread, and mobile terminal and storage medium | |
CN107391274A (zh) | 离线消息的处理方法及装置 | |
CN111177164B (zh) | 一种基于定时任务框架的车辆实时信息调度方法 | |
CN112506808A (zh) | 测试任务执行方法、计算设备、计算系统和存储介质 | |
US8640064B1 (en) | Hardware description language simulator tracing and control | |
CN111596962A (zh) | 一种基于高速协议通道的实时微内核系统及其初始化方法 | |
CN112230901B (zh) | 一种基于异步io模型的网络编程框架系统及方法 | |
CN115617407A (zh) | 一种嵌入式操作系统的硬件驱动方法 | |
CN114462388A (zh) | 句柄管理或通信方法、电子设备、存储介质及程序产品 | |
CN109254838B (zh) | 一种基于JAVA BeanShell的自动化任务 | |
CN115904644A (zh) | 任务调度方法、电子设备和计算机程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |