CN114880076A - 一种用户态虚拟机的动态映像文件的动态加载方法及装置 - Google Patents
一种用户态虚拟机的动态映像文件的动态加载方法及装置 Download PDFInfo
- Publication number
- CN114880076A CN114880076A CN202210515534.2A CN202210515534A CN114880076A CN 114880076 A CN114880076 A CN 114880076A CN 202210515534 A CN202210515534 A CN 202210515534A CN 114880076 A CN114880076 A CN 114880076A
- Authority
- CN
- China
- Prior art keywords
- file
- dynamic
- loading
- virtual machine
- user
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种用户态虚拟机的动态映像文件的动态加载方法及装置,其技术方案包括:用户态虚拟机的执行动态加载的文件根据用户态虚拟机的动态加载方式,调用第一加载功能库从内存中加载动态映像文件或调用第二加载功能库从文件系统中加载动态映像文件至目标内存。本发明实施例的技术方案在用于嵌入式实时系统时,提高了用户态虚拟机的实用性,提升了实时的用户态虚拟机的可用性以及适用范围。
Description
技术领域
本发明涉及操作系统领域,尤其涉及一种用户态虚拟机的动态映像文件的动态加载方法及装置。
背景技术
在实时的用户态虚拟机中,一般在初始化过程中使都用动态加载功能,当前实时的用户态虚拟机的加载都是基于文件系统。
基于文件系统的动态加载通过磁盘外设的IO执行,磁盘外设的IO不具有实时性,降低了实时的用户态虚拟机的可用性以及适用范围。
发明内容
有鉴于此,本发明实施例提供了一种用户态虚拟机的动态映像文件的动态加载方法及装置,其技术方案包括:用户态虚拟机的执行动态加载的文件根据用户态虚拟机的动态加载方式,调用第一加载功能库从内存中加载动态映像文件或调用第二加载功能库从文件系统中加载动态映像文件至目标内存。本发明实施例的技术方案在用于嵌入式实时系统时,提高了用户态虚拟机的实用性,提升了实时的用户态虚拟机的可用性以及适用范围。
第一方面,本发明实施例提供了一种用户态虚拟机的动态映像文件的动态加载方法,包括:第一虚拟机操作系统的执行动态加载的文件根据第一虚拟机的预先配置的动态加载方式链接不同的动态加载功能库,所述动态加载功能库为从内存中加载动态映像文件的第一加载功能库或从文件系统中加载动态映像文件的第二加载功能库,第一用户态虚拟机为任一用户态虚拟机;所述执行动态加载的文件调用所链接的动态加载功能库,从内存中或从文件系统中加载动态映像文件。
由上,把用户态虚拟机操作系统的执行动态加载的文件链接不同的动态加载功能库实现从内存中或从文件系统中动态加载映像文件,无需修改用户态虚拟机操作系统的执行动态加载的文件,操作方便,适用范围广。
在第一方面的一种可能的实施方式中,一种用户态虚拟机的动态映像文件的动态加载方法还包括:对第一虚拟机的动态映像文件进行打包,并生成第一虚拟机的加载地址接口库,所述加载地址接口库在所述第一加载功能库调用时根据动态映像文件的名称获取该动态映像文件的预设地址和大小,所述预设地址为相应的动态映像文件在内存中存储地址。
由上,把每个用户态虚拟机的各动态映像文件打包,通过一个加载地址接口库访问,便于增加或减少动态映像文件,维护方便
在第一方面的一种可能的实施方式中,对第一虚拟机的动态映像文件进行打包,包括:根据第一虚拟机的各动态映像文件获得各动态映像文件的头文件,所述头文件包括相应的动态映像文件的所有数据;在第一虚拟机的加载地址接口库的源文件中包括所述各动态映像文件的头文件和映像文件信息变量,映像文件信息变量包括所述各动态映像文件的名称、所述预设地址和大小。
由上,通过头文件对每个用户态虚拟机各动态映像文件打包,在增加或减少动态映像文件时只需要修改增加头文件和映像文件信息变量,维护方便。
在第一方面的一种可能的实施方式中,所述生成第一虚拟机的加载地址接口库,包括:在所述加载地址接口库的源文件中还添加接口代码,用于根据相应的动态映像文件的名称获得该动态映像文件的所述预设地址和大小。
由上,通过一个加载地址接口库获得各动态映像文件的预设地址和大小,便于增加或减少动态映像文件,维护方便。
在第一方面的一种可能的实施方式中,所述第一加载功能库和所述第二加载功能库包括各自的文件功能接口,且所述第一加载功能库和所述第二加载功能库的文件功能接口同名。
由上,第一加载功能库或第二加载功能库的文件功能接口同名,便于操作系统系统中执行动态加载的文件调用,无需修改执行动态加载的文件,便于在用户态虚拟机中移植。
在第一方面的一种可能的实施方式中,所述动态加载功能库源文件包括所述第一加载功能库和所述第二加载功能库的源代码,各用户态虚拟机的加载功能库源文件相同。
由上,各用户态虚拟机的加载功能库源文件相同,且一套动态加载功能库的源文件包括第一加载功能库或第二加载功能库的源代码,便于在用户态虚拟机中移植。
在第一方面的一种可能的实施方式中,一种用户态虚拟机的动态映像文件的动态加载方法还包括:根据编译控制宏把所述动态加载功能库的源文件编译为所述第一加载功能库或所述第二加载功能库,所述编译控制宏根据第一虚拟机的动态加载方式创建。
由上,编译控制宏用于控制对用户态虚拟机的动态加载功能库源文件的编译便于匹配不同动态加载功能的用户态虚拟机。
第二方面,本发明实施例提供了一种用户态虚拟机的动态映像文件的动态加载装置,包括:功能库链接模块,用于由第一虚拟机操作系统的执行动态加载的文件根据第一虚拟机的预先配置的动态加载方式链接不同的动态加载功能库,所述动态加载功能库为从内存中加载动态映像文件的第一加载功能库或从文件系统中加载动态映像文件的第二加载功能库,第一用户态虚拟机为任一用户态虚拟机;动态加载模块,用于由所述执行动态加载的文件调用所链接的动态加载功能库,从内存中或从文件系统中加载动态映像文件。
由上,把用户态虚拟机操作系统的执行动态加载的文件链接不同的动态加载功能库实现从内存中或从文件系统中动态加载映像文件,无需修改用户态虚拟机操作系统的执行动态加载的文件,操作方便,适用范围广。
在第二方面的一种可能的实施方式中,一种用户态虚拟机的动态映像文件的动态加载装置还包括:映像文件打包模块,用于对第一虚拟机的动态映像文件进行打包,并生成第一虚拟机的加载地址接口库,所述加载地址接口库在所述第一加载功能库调用时根据动态映像文件的名称获取该动态映像文件的预设地址和大小,所述预设地址为相应的动态映像文件在内存中存储地址。
由上,把每个用户态虚拟机的各动态映像文件打包,通过一个加载地址接口库访问,便于增加或减少动态映像文件,维护方便
在第二方面的一种可能的实施方式中,映像文件打包模块对第一虚拟机的动态映像文件进行打包时,具体用于根据第一虚拟机的各动态映像文件获得各动态映像文件的头文件,所述头文件包括相应的动态映像文件的所有数据;在第一虚拟机的加载地址接口库的源文件中包括所述各动态映像文件的头文件和映像文件信息变量,映像文件信息变量包括所述各动态映像文件的名称、所述预设地址和大小。
由上,通过头文件对每个用户态虚拟机各动态映像文件打包,在增加或减少动态映像文件时只需要修改增加头文件和映像文件信息变量,维护方便。
在第二方面的一种可能的实施方式中,映像文件打包模块生成第一虚拟机的加载地址接口库时,具体用于在所述加载地址接口库的源文件中还添加接口代码,用于根据相应的动态映像文件的名称获得该动态映像文件的所述预设地址和大小。
由上,通过一个加载地址接口库获得各动态映像文件的预设地址和大小,便于增加或减少动态映像文件,维护方便。
在第二方面的一种可能的实施方式中,所述第一加载功能库和所述第二加载功能库包括各自的文件功能接口,且所述第一加载功能库和所述第二加载功能库的文件功能接口同名。
由上,第一加载功能库或第二加载功能库的文件功能接口同名,便于操作系统系统中执行动态加载的文件调用,无需修改执行动态加载的文件,便于在用户态虚拟机中移植。
在第二方面的一种可能的实施方式中,所述动态加载功能库源文件包括所述第一加载功能库和所述第二加载功能库的源代码,各用户态虚拟机的加载功能库源文件相同。
由上,各用户态虚拟机的加载功能库源文件相同,且一套动态加载功能库的源文件包括第一加载功能库或第二加载功能库的源代码,便于在用户态虚拟机中移植。
在第二方面的一种可能的实施方式中,一种用户态虚拟机的动态映像文件的动态加载装置还包括:功能库编译模块,用于根据编译控制宏把所述动态加载功能库的源文件编译为所述第一加载功能库或所述第二加载功能库,所述编译控制宏根据第一虚拟机的动态加载方式创建。
由上,编译控制宏用于控制对用户态虚拟机的动态加载功能库源文件的编译便于匹配不同动态加载功能的用户态虚拟机。
第三方面,本发明实施例提供了一种操作系统,其执行第一方面任一所述实施方式。
第四方面,本发明实施例提供了一种计算设备,包括,
总线;
通信接口,其与所述总线连接;
至少一个处理器,其与所述总线连接;以及
至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行本发明第一方面任一所述实施方式。
第五方面,本发明实施例提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行申请第一方面任一所述实施方式。
附图说明
图1为本发明的各实施例应用场景的结构示意图;
图2为本发明的一种用户态虚拟机的动态映像文件的动态加载方法实施例一的流程示意图;
图3为本发明的一种用户态虚拟机的动态加载功能库的创建方法实施例的流程示意图;
图4为本发明的一种用户态虚拟机的动态映像文件的动态加载装置实施例的结构示意图;
图5为本发明各实施例的一种计算设备的结构示意图。
具体实施方式
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三等”或模块A、模块B、模块C等,仅用于区别类似的对象,或用于区别不同的实施例,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
在以下的描述中,所涉及的表示步骤的标号,如S110、S120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
本发明实施例提供了一种用户态虚拟机的动态映像文件的动态加载方法及装置,其技术方案包括:用户态虚拟机的执行动态加载的文件根据用户态虚拟机的动态加载方式,调用第一加载功能库从内存中加载动态映像文件或调用第二加载功能库从文件系统中加载动态映像文件至目标内存。本发明实施例的技术方案在用于嵌入式实时系统时,提高了用户态虚拟机的实用性,提升了实时的用户态虚拟机的可用性以及适用范围。
下面首先介绍本发明各实施例的应用场景的结构,本场景为一个包括一种虚拟机系统,其包括用户态10和核心态20。
其中,用户态10包括多个用户态虚拟机和虚拟机IDE,每个用户态虚拟机有一个虚拟机映像,每个虚拟机映像包括多个动态映像文件,虚拟机IDE用于管理整个虚拟机系统。
示例地,图1示出了用户态虚拟机1和用户态虚拟机2,用户态虚拟机1包括虚拟机映像100,虚拟机映像100包括动态映像文件11、动态映像文件12和动态映像文件13,用户态虚拟机2包括虚拟机映像200,虚拟机映像200包括动态映像文件21、动态映像文件22和动态映像文件23。实际系统可以包括多个虚拟机,每个虚拟机映像可以包括多个动态映像文件。
其中,核心态20包括虚拟机调度模块202和硬件201,硬件201包括CPU、内存和外设,外设包括磁盘,磁盘中存有文件系统。各用户态虚拟机通过虚拟机调度模块202访问硬件201。
其中,各动态映像文件保存于内存或磁盘文件系统中,每个用户态虚拟机从内存或文件系统中动态加载动态映像文件,每个用户态虚拟机根据配置支持一种动态加载方式。
下面基于图2和图3介绍本发明的各方法实施例,本发明提供了一种用户态虚拟机的动态映像文件的动态加载方法实施例和一种用户态虚拟机的动态加载功能库的创建方法实施例,一种用户态虚拟机的动态加载功能库的创建方法实施例创建的动态加载功能库被一种用户态虚拟机的动态映像文件的动态加载方法实施例调用,该动态加载功能库包括第一加载功能库和第二加载功能库,第一加载功能库从内存中加载动态映像文件,第二加载功能库从文件系统中加载动态映像文件至目标内存。
一种用户态虚拟机的动态映像文件的动态加载方法实施例,运行在图1示出的各用户态虚拟机中,根据用户态虚拟机预先配置的动态加载方式,把用户态虚拟机的操作系统中执行动态加载的文件的执行动态加载的文件与第一加载功能库或二加载功能库链接;然后根据用户态虚拟机的动态加载方式,调用第一加载功能库从内存中加载动态映像文件或调用第二加载功能库从文件系统中加载动态映像文件至目标内存。本方法实施例的技术方案在用于嵌入式实时系统时,提高了用户态虚拟机的实用性,提升了实时的用户态虚拟机的可用性以及适用范围。
图2示出了本发明的一种用户态虚拟机的动态映像文件的动态加载方法实施例的流程,其包括步骤S110至S130。
S110:根据用户态虚拟机的动态加载方式把用户态虚拟机操作系统的执行动态加载的文件链接不同的动态加载功能库。
第一加载功能库或第二加载功能库。
其中,用户态虚拟机的动态加载方式分两种:从内存中动态加载动态映像文件,从操作系统中加载动态映像文件,每个用户态虚拟机选择其中一种。动态加载功能库为第一加载功能库或第二加载功能库。
其中,动态加载功能库为第一加载功能库或第二加载功能库。当用户态虚拟机的动态加载方式为从内存加载动态映像文件时,用户态虚拟机的操作系统中执行动态加载的文件链接第一加载功能库。当用户态虚拟机的动态加载方式为从文件系统加载动态映像文件时,用户态虚拟机的操作系统中执行动态加载的文件链接第二加载功能库。
由上,把用户态虚拟机操作系统的执行动态加载的文件链接不同的动态加载功能库实现从内存中或从文件系统中动态加载映像文件,无需修改用户态虚拟机操作系统的执行动态加载的文件,操作方便,适用范围广。
S120:当用户态虚拟机的动态加载方式为从内存中加载时,把用户态虚拟机的各动态映像文件拷贝到对应的预设地址对应的内存中。
其中,当用户态虚拟机的动态加载方式为从内存加载动态映像文件时,每个动态映像文件的预设地址提前设定。
S130:用户态虚拟机操作系统的执行动态加载的文件根据动态映像文件的名称从内存中或文件系统中动态加载该动态映像文件加载到相应的目标内存。
其中,用户态虚拟机的执行动态加载的文件自动调用第一加载功能库或第二加载功能库,自动从内存中或文件系统中加载动态映像文件。
其中,当用户态虚拟机的动态加载方式为从内存中加载,用户态虚拟机的执行动态加载的文件调用第一加载功能库,第一加载功能库根据一个动态映像文件的名称获得该动态映像文件的预设地址,并从该地址中加载该动态映像文件。
其中,当用户态虚拟机的动态加载方式为从文件系统中加载,用户态虚拟机的执行动态加载的文件调用第二加载功能库,第二加载功能库根据一个动态映像文件的名称从该文件系统中加载该动态映像文件。
其中,当动态映像文件为可执行文件时可以在目标内存中运行;当动态映像文件为动态库时可以在目标内存中被其他可执行文件链接。
综上,一种用户态虚拟机的动态映像文件的动态加载方法实施例,根据用户态虚拟机预先配置的动态加载方式,把用户态虚拟机的操作系统中执行动态加载的文件的执行动态加载的文件与第一加载功能库或二加载功能库链接;然后根据用户态虚拟机的动态加载方式,调用第一加载功能库从内存中加载动态映像文件或调用第二加载功能库从文件系统中加载动态映像文件至目标内存。本发明实施例的技术方案在用于嵌入式实时系统时,提高了用户态虚拟机的实用性,提升了实时的用户态虚拟机的可用性以及适用范围。
下面基于图3介绍本发明的一种用户态虚拟机的动态加载功能库的创建方法实施例。
一种用户态虚拟机的动态加载功能库的创建方法实施例在图1的虚拟机IDE 30中运行,把每个用户态虚拟机的各动态映像文件通过头文件打包在一起,并生成每个用户态虚拟机的加载地址接口库;然后利用一套动态加载功能库的源文件根据用户态虚拟机的加载方式生成第一加载功能库或第二加载功能库,且第一加载功能库或第二加载功能库相同功能的文件功能接口相同,第一加载功能库调用加载地址接口库。本方法实施例的技术方案把每个用户态虚拟机的各动态映像文件打包,通过一个加载地址接口库访问,便于增加动态映像文件,维护方便;且利用一套源文件生成的第一加载功能库或第二加载功能库的文件功能接口同名,便于用户态操作系统的文件调用,在增加用户态虚拟机时便于移植和配置。
图3示出了本发明的一种用户态虚拟机的动态加载功能库的创建方法实施例的流程,其包括步骤S210至S230。
S210:把每个用户态虚拟机的各动态映像文件通过头文件打包在一起,并生成每个用户态虚拟机的加载地址接口库。
其中,本步骤包括下面的步骤S2110至S2130。
S2110:根据每个用户态虚拟机的各动态映像文件生成每个用户态虚拟机的各动态映像文件的头文件。
其中,动态映像文件可以是一个直接获取的可执行程序或一个动态库或文件的其他信息,也可以根据源代码编译的可执行程或一个动态库或文件的其他信息。
其中,每个动态映像文件的头文件包括该动态映像文件的数据,该数据至少包括:代码段、数据段、BSS段、ELF头信息、段信息、可重定位表信息、符号表信息。
示例地,根据动态映像文件dynamicImage_nm生成其头文件dynamicImage_nm.h,“_nm”的nm表示第n个用户态虚拟机中第m个动态映像文件。
S2120:创建每个用户态虚拟机的加载地址接口库的源文件。
其中,每个用户态虚拟机创建有一个加载地址接口库的源文件。一个用户态虚拟机的加载地址接口库的源文件包括该虚拟机的所有动态映像文件的头文件,相当于一个用户态虚拟机的动态映像文件的信息打包在一起。
其中,一个用户态虚拟机的加载地址接口库的源文件还包括该虚拟机的映像文件信息变量,该变量存储各动态映像文件的名称、动态映像文件的内存存储地址即预设地址、各动态映像文件的大小,各动态映像文件的预设地址提前设定。
其中,一个用户态虚拟机的加载地址接口库的源文件还包括该虚拟机的地址接口代码,用于根据动态映像文件的名称获取动态映像文件的预设地址和大小。
示例地,用户态虚拟机n的加载地址接口库的源文件为dynamicLoad.c,其包括用户态虚拟机n的所有动态映像文件的.h头文件。dynamicLoad.c和所包括的动态映像文件的.h头文件在IDE的用户态虚拟机n的源文件目录中。
示例地,源文件dynamicLoad.c的映像文件信息变量为dynamicImageInfo,动态映像文件dynamicImage_nm的预设地址为dynamicImage_nm.h中dynamicImage_nm的首地址。
示例地,源文件dynamicLoad.c的地址接口包括接口getDynamicImageStoreAddr()和接口getDynamicImageSize()。接口getDynamicImageStoreAddr()根据动态映像文件名从dynamicImageInfo中获取动态映像文件的预设地址,接口getDynamicImageSize()根据动态映像文件名从dynamicImageInfo获取动态映像文件的大小。
S2130:编译每个用户态虚拟机的加载地址接口库的源文件,生成各用户态虚拟机的加载地址接口库。
示例地,编译源文件dynamicLoad.c,编译结果作为用户态虚拟机n的、加载地址接口库。
由上,把每个用户态虚拟机的各动态映像文件打包,通过一个加载地址接口库访问,便于增加或减少动态映像文件,维护方便
S220:创建每个用户态虚拟机的动态加载功能库源文件。
其中,各个用户态虚拟机的源文件代码相同,其包括两个分支:从内存动态加载动态映像文件的第一加载功能的源代码和从文件系统动态加载动态映像文件的第二加载功能的源代码,分别用于生成第一加载功能库和第二加载功能库。
其中,动态加载功能库源文件还包括地址信息变量。示例地,地址信息变量包括dynamicImageStoreAdd和dynamicImagefileOffset,DynamicImageStoreAddr记录当前正在动态加载的动态映像文件的预设地址,dynamicImagefileOffset记录当前正在动态加载的动态映像文件中定位的访问偏移量。
其中,第一加载功能的源代码和第二加载功能的源代码均包括文件打开接口、文件状态接口、文件定位接口、文件读取接口和文件关闭接口,且相同功能的文件功能接口同名,以使第一加载功能库或第二加载功能库关联到用户态虚拟机时执行动态加载的文件时,无需修改该执行动态加载的文件。
示例地,文件功能接口包括文件打开接口file_open()、文件状态接口file_stat()、文件定位接口file_seek()、文件读取接口file_read()和文件关闭接口file_close()。
下面重点介绍第一加载功能的文件功能接口。
其中,文件打开接口file_open()用于调用加载地址接口库的getDynamicImageStoreAddr()获取指定动态映像文件的预设地址,并通过dynamicImageStoreAddr记录该预设地址,然后返回0,表示成功打开文件。
其中,文件状态接口file_stat()用于调用getDynamicImageSize()来获取指定动态映像文件的大小,然后返回0,表示成功获取映像文件状态。
其中,文件定位接口ffile_seek()用于定位当前正在动态加载的动态映像文件的访问偏移量,并记录在dynamicImagefileOffset中,然后返回dynamicImagefileOffset的值,表示成功定位文件。
其中,文件读取接口file_read()用于把当前正在动态加载的动态映像文件中根据dynamicImageStoreAddr和dynamicImagefileOffset确定读取数据的源地址,读取数据并按指定大小保存到在目标地址处内存中,然后返回指定大小,表示成功读取数据。指定大小和目标地址通过file_read()指定。
其中,文件关闭接口file_close()用于关闭正在动态加载的动态映像文件,然后返回0,表示成功关闭映像文件。
由上,一套动态加载功能库的源文件包括第一加载功能库或第二加载功能库的源代码,且第一加载功能库或第二加载功能库的文件功能接口同名,各用户态虚拟机使用相同的动态加载功能库的源文件,便于在不同的用户态虚拟机中移植。
S230:配置编译控制宏,并根据该宏对用户态虚拟机的动态加载功能库源文件进行编译,获得第一加载功能库或第二加载功能库。
其中,编译控制宏用于控制对用户态虚拟机的动态加载功能库源文件的编译。
在一些实施例中,编译控制宏通过控制参数把一套源文件的编译获得第一加载功能库或第二加载功能库。在一些实施例中,根据编译控制宏是否存在把一套源文件的编译获得第一加载功能库或第二加载功能库。
示例地,编译控制宏为CONFIG_LOAD_ON_MEM,当CONFIG_LOAD_ON_MEM存在时,则对用户态虚拟机的动态加载功能库源文件中从内存动态加载的源代码进行编译,生成从内存中动态加载的第一加载功能库loader_mem.a。当不存在CONFIG_LOAD_ON_MEM时,则对用户态虚拟机的动态加载功能库源文件中从文件系统动态加载的源代码进行编译,生成从文件系统中动态加载的第二加载功能库loader_fs.a。
一种用户态虚拟机的动态加载功能库的创建方法实施例把每个用户态虚拟机的各动态映像文件通过头文件打包在一起,并生成每个用户态虚拟机的加载地址接口库;然后创建每个用户态虚拟机的动态加载功能库的源代码,该源代码调用相应的用户态虚拟机的加载地址接口库的代码;根据编译控制宏把每个用户态虚拟机的动态加载功能库的源代码编译为从内存中加载的第一加载功能库或从文件系统中加载的第二加载动能库。本方法实施例的技术方案把每个用户态虚拟机的各动态映像文件打包,通过一个加载地址接口库访问,便于增加动态映像文件,维护方便;且利用一套源文件生成的第一加载功能库或第二加载功能库的文件功能接口同名,便于用户态操作系统的文件调用,在增加用户态虚拟机时便于移植和配置。
下面基于图4介绍本发明的一种用户态虚拟机的动态映像文件的动态加载装置实施例。
图4示出了本发明的一种用户态虚拟机的动态映像文件的动态加载装置实施例的结构,其包括:功能库链接模块410、映像文件复制模块420、动态加载模块430、映像文件打包模块440、加载源文件创建模块450和功能库编译模块460。
功能库链接模块410用于根据用户态虚拟机的动态加载方式把用户态虚拟机操作系统的执行动态加载的文件链接不同的动态加载功能库。其原理和优点请参照一种用户态虚拟机的动态映像文件的动态加载方法实施例的步骤S110。
映像文件复制模块420用于当用户态虚拟机的动态加载方式为从内存中加载时,把用户态虚拟机的各动态映像文件拷贝到对应的预设地址对应的内存中。其原理和优点请参照一种用户态虚拟机的动态映像文件的动态加载方法实施例的步骤S120。
动态加载模块430用于由用户态虚拟机操作系统的执行动态加载的文件根据动态映像文件的名称从内存中或文件系统中动态加载该动态映像文件加载到相应的目标内存。其原理和优点请参照一种用户态虚拟机的动态映像文件的动态加载方法实施例的步骤S130。
映像文件打包模块440用于把每个用户态虚拟机的各动态映像文件通过头文件打包在一起,并生成每个用户态虚拟机的加载地址接口库。其原理和优点请参照一种用户态虚拟机的动态加载功能库的创建方法实施例的步骤S210。
加载源文件创建模块450用于创建每个用户态虚拟机的动态加载功能库源文件。其原理和优点请参照一种用户态虚拟机的动态加载功能库的创建方法实施例的步骤S220。
功能库编译模块460用于配置编译控制宏,并根据该宏对用户态虚拟机的动态加载功能库源文件进行编译,获得第一加载功能库或第二加载功能库。其原理和优点请参照一种用户态虚拟机的动态加载功能库的创建方法实施例的步骤S230。
本发明实施例还提供了一种操作系统,其执行一种用户态虚拟机的动态映像文件的动态加载方法实施例所述方法和一种用户态虚拟机的动态加载功能库的创建方法实施例所述方法。
本发明实施例还提供了一种计算设备,下面结合图5详细介绍。
该计算设备500包括,处理器510、存储器520、通信接口530、总线540。
应理解,该图所示的计算设备500中的通信接口530可以用于与其他设备之间进行通信。
其中,该处理器510可以与存储器520连接。该存储器520可以用于存储该程序代码和数据。因此,该存储器520可以是处理器510内部的存储单元,也可以是与处理器510独立的外部存储单元,还可以是包括处理器510内部的存储单元和与处理器510独立的外部存储单元的部件。
可选的,计算设备500还可以包括总线540。其中,存储器520、通信接口530可以通过总线540与处理器510连接。总线540可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(EFStended Industry StandardArchitecture,EISA)总线等。所述总线540可以分为地址总线、数据总线、控制总线等。为便于表示,该图中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
应理解,在本发明实施例中,该处理器510可以采用中央处理单元(centralprocessing unit,CPU)。该处理器还可以是其它通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器510采用一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。
该存储器520可以包括只读存储器和随机存取存储器,并向处理器510提供指令和数据。处理器510的一部分还可以包括非易失性随机存取存储器。例如,处理器510还可以存储设备类型的信息。
在计算设备500运行时,所述处理器510执行所述存储器520中的计算机执行指令执行各方法实施例的操作步骤。
应理解,根据本发明实施例的计算设备500可以对应于执行根据本发明各实施例的方法中的相应主体,并且计算设备500中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括,U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行各方法实施例的操作步骤。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括,具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,均属于本发明保护范畴。
Claims (10)
1.一种用户态虚拟机的动态映像文件的动态加载方法,其特征在于,包括:
第一虚拟机操作系统的执行动态加载的文件根据第一虚拟机的预先配置的动态加载方式链接不同的动态加载功能库,所述动态加载功能库为从内存中加载动态映像文件的第一加载功能库或从文件系统中加载动态映像文件的第二加载功能库,第一用户态虚拟机为任一用户态虚拟机;
所述执行动态加载的文件调用所链接的动态加载功能库,从内存中或从文件系统中加载动态映像文件。
2.根据权利要求1所述方法,其特征在于,还包括:
对第一虚拟机的动态映像文件进行打包,并生成第一虚拟机的加载地址接口库,所述加载地址接口库在所述第一加载功能库调用时根据动态映像文件的名称获取该动态映像文件的预设地址和大小,所述预设地址为相应的动态映像文件在内存中存储地址。
3.根据权利要求2所述方法,其特征在于,所述对第一虚拟机的动态映像文件进行打包,包括:
根据第一虚拟机的各动态映像文件获得各动态映像文件的头文件,所述头文件包括相应的动态映像文件的所有数据;
在第一虚拟机的加载地址接口库的源文件中包括所述各动态映像文件的头文件、名称、所述预设地址和大小。
4.根据权利要求3所述方法,其特征在于,所述生成第一虚拟机的加载地址接口库,包括:
在所述加载地址接口库的源文件中还添加接口代码,用于根据相应的动态映像文件的名称获得该动态映像文件的所述预设地址和大小。
5.根据权利要求1所述方法,其特征在于,所述第一加载功能库和所述第二加载功能库包括各自的文件功能接口,且所述第一加载功能库和所述第二加载功能库的文件功能接口同名。
6.根据权利要求1所述方法,其特征在于,所述动态加载功能库源文件包括所述第一加载功能库和所述第二加载功能库的源代码。
7.根据权利要求5所述方法,其特征在于,还包括:
根据编译控制宏把所述动态加载功能库的源文件编译为所述第一加载功能库或所述第二加载功能库,所述编译控制宏根据第一虚拟机的动态加载方式创建。
8.一种用户态虚拟机的动态映像文件的动态加载装置,其特征在于,包括:
功能库链接模块,用于由第一虚拟机操作系统的执行动态加载的文件根据第一虚拟机的预先配置的动态加载方式链接不同的动态加载功能库,所述动态加载功能库为从内存中加载动态映像文件的第一加载功能库或从文件系统中加载动态映像文件的第二加载功能库,第一用户态虚拟机为任一用户态虚拟机;
动态加载模块,用于由所述执行动态加载的文件调用所链接的动态加载功能库,从内存中或从文件系统中加载动态映像文件。
9.一种操作系统,其特征在于,执行权利要求1至7任一所述方法。
10.一种计算设备,其特征在于,包括:
总线;
通信接口,其与所述总线连接;
至少一个处理器,其与所述总线连接;以及
至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行权利要求1至7任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210515534.2A CN114880076B (zh) | 2022-05-11 | 2022-05-11 | 一种用户态虚拟机的动态映像文件的动态加载方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210515534.2A CN114880076B (zh) | 2022-05-11 | 2022-05-11 | 一种用户态虚拟机的动态映像文件的动态加载方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114880076A true CN114880076A (zh) | 2022-08-09 |
CN114880076B CN114880076B (zh) | 2023-02-03 |
Family
ID=82675857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210515534.2A Active CN114880076B (zh) | 2022-05-11 | 2022-05-11 | 一种用户态虚拟机的动态映像文件的动态加载方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114880076B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115408104A (zh) * | 2022-08-25 | 2022-11-29 | 科东(广州)软件科技有限公司 | 一种映像的加载方法与装置及生成方法与装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661397A (zh) * | 2008-08-29 | 2010-03-03 | 宇龙计算机通信科技(深圳)有限公司 | 实现程序动态加载的方法和生成映射文件的方法及设备 |
CN102081523A (zh) * | 2009-11-27 | 2011-06-01 | 浙江省公众信息产业有限公司 | 一种动态加载系统和方法 |
CN103309684A (zh) * | 2012-03-07 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 动态加载应用的方法及装置 |
CN106355049A (zh) * | 2016-08-19 | 2017-01-25 | 北京奇虎科技有限公司 | 一种加固安卓安装包的动态链接库so文件的方法和装置 |
CN109240796A (zh) * | 2018-08-10 | 2019-01-18 | 新华三云计算技术有限公司 | 虚拟机信息获取方法及装置 |
CN111930467A (zh) * | 2020-07-02 | 2020-11-13 | 联想(北京)有限公司 | 虚拟机启动方法、装置、设备及计算机可读存储介质 |
CN112433822A (zh) * | 2020-12-07 | 2021-03-02 | 北京远为软件有限公司 | 基于三权分立的跨域网络终端虚拟机的实现方法 |
-
2022
- 2022-05-11 CN CN202210515534.2A patent/CN114880076B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661397A (zh) * | 2008-08-29 | 2010-03-03 | 宇龙计算机通信科技(深圳)有限公司 | 实现程序动态加载的方法和生成映射文件的方法及设备 |
CN102081523A (zh) * | 2009-11-27 | 2011-06-01 | 浙江省公众信息产业有限公司 | 一种动态加载系统和方法 |
CN103309684A (zh) * | 2012-03-07 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 动态加载应用的方法及装置 |
CN106355049A (zh) * | 2016-08-19 | 2017-01-25 | 北京奇虎科技有限公司 | 一种加固安卓安装包的动态链接库so文件的方法和装置 |
CN109240796A (zh) * | 2018-08-10 | 2019-01-18 | 新华三云计算技术有限公司 | 虚拟机信息获取方法及装置 |
CN111930467A (zh) * | 2020-07-02 | 2020-11-13 | 联想(北京)有限公司 | 虚拟机启动方法、装置、设备及计算机可读存储介质 |
CN112433822A (zh) * | 2020-12-07 | 2021-03-02 | 北京远为软件有限公司 | 基于三权分立的跨域网络终端虚拟机的实现方法 |
Non-Patent Citations (1)
Title |
---|
杨志祥: ""基于.COM文件格式的一种动态加载机制的研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115408104A (zh) * | 2022-08-25 | 2022-11-29 | 科东(广州)软件科技有限公司 | 一种映像的加载方法与装置及生成方法与装置 |
CN115408104B (zh) * | 2022-08-25 | 2023-08-11 | 科东(广州)软件科技有限公司 | 一种映像的加载方法与装置及生成方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114880076B (zh) | 2023-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102332209B1 (ko) | 2개의 명령어 세트 아키텍처들에 따라 컴파일링된 애플리케이션 코드의 실행을 위한 시스템 및 방법 | |
US9455914B2 (en) | File-system requests supported in user space for enhanced efficiency | |
CN105723341B (zh) | 用于布局引擎和脚本引擎的存储器模型的实现方法及系统 | |
US8719839B2 (en) | Two way communication support for heterogenous processors of a computer platform | |
JP5090169B2 (ja) | プラットホーム独立の動的リンキング | |
WO2018099292A1 (zh) | 一种进程管理方法及装置 | |
KR101786156B1 (ko) | 사용자 정의 타입을 위한 컴파일 타임 경계 검사 기법 | |
CN107943485B (zh) | 一种补丁编译平台及补丁编译方法 | |
CN109542506B (zh) | 一种可灵活配置接口和快速交付服务的系统 | |
CN106909441B (zh) | 一种基于jvm的磁盘直接i/o访问的方法 | |
US6834391B2 (en) | Method and apparatus for automated native code isolation | |
CN109670299A (zh) | 一种创建Python沙盒环境的方法及电子设备 | |
CN107045438A (zh) | 一种应用顶层视图处理方法、装置及组件 | |
WO2018032653A1 (zh) | 一种Java卡应用的功能实现方法及装置 | |
US8200938B2 (en) | Computer system and method providing a memory buffer for use with native and platform-independent software code | |
CN103853535A (zh) | 修改中间件的方法和装置 | |
CN114327776B (zh) | 用于智能合约的调试方法、调试设备和调试系统 | |
JP2004503866A (ja) | モジュラーコンピュータシステムおよび関連方法 | |
JP2007511816A (ja) | 集中daマネージャを用いた動的アドレシング(da) | |
US20040083467A1 (en) | System and method for executing intermediate code | |
CN115629971A (zh) | 一种应用的开发系统和开发方法 | |
CN114880076B (zh) | 一种用户态虚拟机的动态映像文件的动态加载方法及装置 | |
US20150113506A1 (en) | Method and system for adaptive loading of application | |
CN112732345A (zh) | 一种嵌入式系统的启动方法、装置、设备及存储介质 | |
KR102323276B1 (ko) | 애플리케이션 변환 방법 및 장치 |
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 |