CN107615243B - 一种调用操作***库的方法、装置及*** - Google Patents
一种调用操作***库的方法、装置及*** Download PDFInfo
- Publication number
- CN107615243B CN107615243B CN201580001186.5A CN201580001186A CN107615243B CN 107615243 B CN107615243 B CN 107615243B CN 201580001186 A CN201580001186 A CN 201580001186A CN 107615243 B CN107615243 B CN 107615243B
- Authority
- CN
- China
- Prior art keywords
- operating system
- system library
- library
- dynamic operating
- memory access
- 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
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/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
一种调用操作***库的方法、装置及***,涉及操作***技术领域,所述方法包括:执行域接收管理域发送的应用程序可执行文件的内存访问地址(101),所述执行域包括用于运行所述应用程序可执行文件的一个或多个处理器,所述应用程序可执行文件的内存访问地址为所述应用程序可执行文件存储在所述执行域的内存中的地址;所述执行域根据所述应用程序可执行文件的内存访问地址,运行所述应用程序可执行文件(102);所述执行域在运行所述应用程序可执行文件的过程中调用动态操作***库时,获取所述动态操作***库的内存访问地址(103);所述执行域根据所述动态操作***库的内存访问地址,调用所述动态操作***库(104)。避免了冗余存储。
Description
技术领域
本发明涉及操作***技术领域,特别涉及一种调用操作***库的方法、装置及***。
背景技术
操作***(Operating System,简称OS)的功能可以以库(Library,简称LIB)的形式提供给应用程序,以库的形式提供给应用程序的操作***的功能可以被称为操作***库,当应用程序需要OS的某个功能时只要调用相应的操作***库即可。
现有一种调用操作***库的方法,包括:将操作***库与应用程序一块编译成应用程序可执行文件,然后将应用程序可执行文件加载到内存中运行,当同时运行的多个应用程序调用同一个操作***库时,内存中会重复存储同一个操作***库,造成内存冗余存储。
发明内容
为了解决现有技术造成内存冗余存储的问题,本发明实施例提供了一种调用操作***库的方法、装置及***。所述技术方案如下:
第一方面,本发明实施例提供了一种调用操作***库的方法,所述方法包括:
执行域接收管理域发送的应用程序可执行文件的内存访问地址,所述执行域包括用于运行所述应用程序可执行文件的一个或多个处理器,所述应用程序可执行文件的内存访问地址为所述应用程序可执行文件存储在所述执行域的内存中的地址;
所述执行域根据所述应用程序可执行文件的内存访问地址,运行所述应用程序可执行文件;
所述执行域在运行所述应用程序可执行文件的过程中调用动态操作***库时,获取所述动态操作***库的内存访问地址;
所述执行域根据所述动态操作***库的内存访问地址,调用所述动态操作***库。
在第一方面一种可能的实现方式中,所述应用程序可执行文件由应用程序、操作***库的编译信息编译而成,所述编译信息包括动态操作***库的名称。
可选地,所述获取所述动态操作***库的内存访问地址,包括:
所述执行域向所述管理域发送调用请求,所述调用请求包括所述动态操作***库的名称;
所述执行域接收所述管理域发送的调用请求回复,所述调用请求回复包括所述管理域根据所述调用请求获取的所述动态操作***库的内存访问地址。
可选地,所述获取所述动态操作***库的内存访问地址,包括:
所述执行域在共享库表中查找所述动态操作***库的内存访问地址,所述共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;
当在所述共享库表中查找到所述动态操作***库的内存访问地址时,所述执行域从所述共享库表中获取所述动态操作***库的内存访问地址。
优选地,所述存储信息还包括动态操作***库的版本匹配标识,所述版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
更优选地,所述获取所述动态操作***库的内存访问地址,包括:
当所述应用程序可执行文件不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,所述执行域将版本为默认调用的动态操作***库加载到内存中,并获取所述动态操作***库的内存访问地址。
第二方面,本发明实施例提供了一种调用操作***库的方法,所述方法包括:
管理域接收应用程序可执行文件的开启指令;
所述管理域根据所述开启指令,配置执行域,所述执行域包括用于运行所述应用程序可执行文件的一个或多个处理器;
所述管理域将所述应用程序可执行文件存储在所述执行域的内存中,并获取所述应用程序可执行文件的内存访问地址,所述应用程序可执行文件的内存访问地址为所述应用程序可执行文件存储在所述执行域的内存中的地址;
所述管理域向所述执行域发送所述应用程序可执行文件的内存访问地址。
在第二方面一种可能的实现方式中,所述应用程序可执行文件由应用程序、操作***库的编译信息编译而成,所述编译信息包括动态操作***库的名称。
可选地,所述方法还包括:
所述管理域接收所述执行域发送的调用请求,所述调用请求包括动态操作***库的名称;
所述管理域根据所述调用请求,在全局共享库表中查找所述动态操作***库的内存访问地址,所述全局共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;
当在所述全局共享库表中查找到所述动态操作***库的内存访问地址时,所述管理域从所述全局共享库表中获取所述动态操作***库的内存访问地址;
所述管理域向所述执行域发送调用请求回复,所述调用请求回复包括所述动态操作***库的内存访问地址。
优选地,所述存储信息还包括操作***库的版本匹配标识,所述版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
更优选地,所述方法还包括:
当所述调用请求不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,所述管理域将版本为默认调用的动态操作***库加载到内存中,并获取所述动态操作***库的内存访问地址。
第三方面,本发明实施例提供了一种调用操作***库的装置,所述装置包括:
接收模块,用于接收管理域发送的应用程序可执行文件的内存访问地址,所述应用程序可执行文件的内存访问地址为所述应用程序可执行文件存储在执行域的内存中的地址,所述执行域包括用于运行所述应用程序可执行文件的一个或多个处理器;
运行模块,用于根据所述应用程序可执行文件的内存访问地址,运行所述应用程序可执行文件;
获取模块,用于运行所述应用程序可执行文件的过程中调用动态操作***库时,获取所述动态操作***库的内存访问地址;
调用模块,用于根据所述动态操作***库的内存访问地址,调用所述动态操作***库。
在第三方面一种可能的实现方式中,所述应用程序可执行文件由应用程序、操作***库的编译信息编译而成,所述编译信息包括动态操作***库的名称。
可选地,所述获取模块包括:
发送单元,用于向所述管理域发送调用请求,所述调用请求包括所述动态操作***库的名称;
接收单元,用于接收所述管理域发送的调用请求回复,所述调用请求回复包括所述管理域根据所述调用请求获取的所述动态操作***库的内存访问地址。
可选地,所述获取模块包括:
查找单元,用于在共享库表中查找所述动态操作***库的内存访问地址,所述共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;
获取单元,用于当在所述共享库表中查找到所述动态操作***库的内存访问地址时,从所述共享库表中获取所述动态操作***库的内存访问地址。
优选地,所述存储信息还包括动态操作***库的版本匹配标识,所述版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
更优选地,所述获取单元还用于,
当所述应用程序可执行文件不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,将版本为默认调用的动态操作***库加载到内存中,并获取所述动态操作***库的内存访问地址。
第四方面,本发明实施例提供了一种调用操作***库的装置,所述装置包括:
指令接收模块,用于接收应用程序可执行文件的开启指令;
配置模块,用于根据所述开启指令,配置执行域,所述执行域包括用于运行所述应用程序可执行文件的一个或多个处理器;
文件地址获取模块,用于将所述应用程序可执行文件存储在所述执行域的内存中,并获取所述应用程序可执行文件的内存访问地址,所述应用程序可执行文件的内存访问地址为所述应用程序可执行文件存储在所述执行域的内存中的地址;
发送模块,用于向所述执行域发送所述应用程序可执行文件的内存访问地址。
在第四方面一种可能的实现方式中,所述应用程序可执行文件由应用程序、操作***库的编译信息编译而成,所述编译信息包括动态操作***库的名称。
可选地,所述装置还包括:
请求接收模块,用于接收所述执行域发送的调用请求,所述调用请求包括动态操作***库的名称;
查找模块,用于根据所述调用请求,在全局共享库表中查找所述动态操作***库的内存访问地址,所述全局共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;
库地址获取模块,用于当在所述全局共享库表中查找到所述动态操作***库的内存访问地址时,从所述全局共享库表中获取所述动态操作***库的内存访问地址;
所述发送模块还用于,向所述执行域发送调用请求回复,所述调用请求回复包括所述动态操作***库的内存访问地址。
优选地,所述存储信息还包括操作***库的版本匹配标识,所述版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
更优选地,所述库地址获取模块还用于,
当所述调用请求不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,将版本为默认调用的动态操作***库加载到内存中,并获取所述动态操作***库的内存访问地址。
第五方面,本发明实施例提供了一种实现调用操作***库的***,所述***包括:
管理域,用于接收至少一个应用程序可执行文件的开启指令;根据所述开启指令,配置至少一个执行域,所述至少一个执行域与所述至少一个应用程序可执行文件一一对应,所述至少一个执行域中的各个所述执行域包括运行对应的所述应用程序可执行文件的一个或多个处理器;分别将所述至少一个应用程序可执行文件存储在各自对应的所述执行域的内存中,并获取所述至少一个应用程序可执行文件中各个所述应用程序可执行文件的内存访问地址,各个所述应用程序可执行文件的内存访问地址为各个所述应用程序可执行文件存储在对应的所述执行域的内存中的地址;向各个所述执行域发送对应的所述应用程序可执行文件的内存访问地址;
所述执行域,用于接收所述管理域发送的对应的所述应用程序可执行文件的内存访问地址;根据对应的所述应用程序可执行文件的内存访问地址,运行对应的所述应用程序可执行文件;在运行对应的所述应用程序可执行文件的过程中调用动态操作***库时,获取所述动态操作***库的内存访问地址,所述动态操作***库的内存访问地址为所述动态操作***库存储在所述管理域配置的所有执行域均能访问的共享内存中的地址;根据所述动态操作***库的内存访问地址,调用所述动态操作***库。
在第五方面一种可能的实现方式中,所述应用程序可执行文件由应用程序、操作***库的编译信息编译而成,所述编译信息包括动态操作***库的名称。
可选地,所述执行域用于,向所述管理域发送调用请求,所述调用请求包括所述动态操作***库的名称;
所述管理域用于,接收所述执行域发送的调用请求;根据所述调用请求,在全局共享库表中查找所述动态操作***库的内存访问地址,所述全局共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;当在所述全局共享库表中查找到所述动态操作***库的内存访问地址时,从所述全局共享库表中获取所述动态操作***库的内存访问地址;当在所述全局共享库表中没有查找到所述动态操作***库的内存访问地址时,将所述动态操作***库加载到所述共享内存中,并获取所述动态操作***库的内存访问地址;向所述执行域发送调用请求回复,所述调用请求回复包括所述动态操作***库的内存访问地址;
所述执行域还用于,接收所述管理域发送的调用请求回复。
可选地,所述执行域用于,在本地共享库表中查找所述动态操作***库的内存访问地址,所述本地共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;当在所述共享库表中查找到所述动态操作***库的内存访问地址时,从所述共享库表中获取所述动态操作***库的内存访问地址;当在所述共享库表中没有查找到所述动态操作***库的内存访问地址时,向所述管理域发送调用请求,所述调用请求包括所述动态操作***库的名称;
所述管理域用于,接收所述执行域发送的调用请求;根据所述调用请求,在全局共享库表中查找所述动态操作***库的内存访问地址,所述全局共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;当在所述全局共享库表中查找到所述动态操作***库的内存访问地址时,从所述全局共享库表中获取所述动态操作***库的内存访问地址;当在所述全局共享库表中没有查找到所述动态操作***库的内存访问地址时,将所述动态操作***库加载到所述共享内存中,并获取所述动态操作***库的内存访问地址;向所述执行域发送调用请求回复,所述调用请求回复包括所述动态操作***库的内存访问地址;
所述执行域还用于,接收所述管理域发送的调用请求回复。
优选地,所述存储信息还包括动态操作***库的版本匹配标识,所述版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
更优选地,所述管理域还用于,当所述应用程序可执行文件不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,将版本为默认调用的动态操作***库加载到内存中,并获取所述动态操作***库的内存访问地址。
可选地,所述执行域用于,在全局共享库表中查找所述动态操作***库的内存访问地址,所述全局共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;当在所述全局共享库表中查找到所述动态操作***库的内存访问地址时,从所述全局共享库表中获取所述动态操作***库的内存访问地址;当在所述全局共享库表中没有查找到所述动态操作***库的内存访问地址时,将所述动态操作***库加载到所述共享内存中,并获取所述动态操作***库的内存访问地址。
本发明实施例提供的技术方案的有益效果是:
通过执行域接收管理域发送的应用程序可执行文件的内存访问地址,根据应用程序可执行文件的内存访问地址运行应用程序可执行文件,在运行应用程序可执行文件的过程中调用动态操作***库时获取动态操作***库的内存访问地址,以及根据动态操作***库的内存访问地址调用动态操作***库,实现了应用程序可执行文件和动态操作***库分别加载到内存中,动态操作***库只需要加载一份到内存中即可供所有应用程序可执行文件调用,避免了操作***库的冗余存储。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a-图1d是本发明实施例提供的调用操作***库的方法的应用场景的***架构图;
图2a和图2b是本发明实施例提供的共享内存的结构示意图;
图3是本发明实施例1提供的一种调用操作***库的方法的流程图;
图4是本发明实施例2提供的一种调用操作***库的方法的流程图;
图5是本发明实施例3提供的一种调用操作***库的方法的交互示意图;
图6是本发明实施例3提供的获取动态操作***库的内存访问地址的流程图;
图7是本发明实施例4提供的一种调用操作***库的装置的结构示意图;
图8是本发明实施例5提供的一种调用操作***库的装置的结构示意图;
图9是本发明实施例6提供的一种调用操作***库的装置的硬件示意图;
图10是本发明实施例7提供的一种调用操作***库的装置的结构示意图;
图11是本发明实施例8提供的一种调用操作***库的装置的结构示意图;
图12是本发明实施例9提供的一种调用操作***库的装置的硬件示意图;
图13是本发明实施例10提供的一种实现调用操作***库的***的结构示意图;
图14是本发明实施例11提供的一种实现调用操作***库的***的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1a所示的硬件解耦架构是本发明实施例提供的调用操作***库的方法的一种应用场景的***架构。
硬件解耦架构是将处理器、存储器、输入输出(Input/Output,简称IO)设备组成的组件解耦成各自独立的部件,处理器、远端存储器、以及IO设备分别与不同的控制器连接,处理器还与本地内存连接,所有的控制器通过高速互联通道(如硅光互联通道)连通。
如图1所示,控制器11、21、31、41依次通过高速互联通道首尾连接,形成环形网络。控制器11与处理器12连接,处理器12与本地内存13连接。控制器21与处理器22连接,处理器22与本地内存23连接。控制器31与远端内存32和外存储器33连接。控制器41与IO设备42连接。
具体到各个部件的结构,处理器可以包括一个或多个物理中央处理单元(CentralProcessing Unit,简称CPU),一个物理CPU可以包括多个逻辑CPU。本地内存可以包括以下的一种或多种:一个或多个随机存储器(Random Access Memory,简称RAM)(如双倍速率同步动态随机存储器(Double Data Rate synchronous dynamic random access memory,简称DDR))、一个或多个只读存储器(Read Only Memory,简称ROM)、一个或多个闪存(flashmemory)。远端存储器包括远端内存,远端内存可以包括以下的一种或多种:一个或多个RAM、一个或多个ROM、一个或多个闪存。远端存储器还可以包括外存储器,外存储器可以包括一个或多个固态硬盘(Solid State Drives,简称SSD)。IO设备也可以包括外存储器,外存储器可以包括以下的一种或多种:一个或多个闪存、一个或多个多光盘、一个或多个移动硬盘。容易知道,由于外存储器是硬件结构架构正常运行必不可少的部件,因此远端存储器和IO设备中的至少一个包括外存储器。
在具体应用中,所有的处理器均可以访问远端内存(即共享远端内存)和各自连接的本地内存。若处理器包括多个物理CPU,则会将该处理器连接的本地内存的存储空间配置给该处理器包括的多个物理CPU,且各个物理CPU配置的存储空间不同。一个物理CPU可以允许属于同一个处理器的其它物理CPU访问配置给该物理CPU的存储空间(即共享本地内存),也可以禁止属于同一个处理器的其它物理CPU访问配置给该物理CPU的存储空间(即独占本地内存),本发明对此不作限制。若物理CPU包括多个逻辑CPU,则该物理CPU包括的多个逻辑CPU共享配置给该物理CPU的存储空间。
例如,处理器12包括物理CPU 12a、12b,物理CPU 12a可以访问本地内存13中配置给物理CPU 12a的存储空间和远端内存32(对远端内存32的访问可以通过控制器11、高速互联通道、控制器12形成的通路实现),可能还可以访问本地内存13中配置给物理CPU 12b的存储空间,但不能访问与处理器22连接的本地内存23。
图1b所示的非一致性内存访问架构(Non Uniform Memory AccessArchitecture,简称NUMA)是本发明实施例提供的调用操作***库的方法的另一种应用场景。
如图1b所示,物理CPU 51a、51b之间通过快速通道互联(Quick PathInterconnect,简称QPI)或者超传输(HyperTransport)技术连接(图1b中用带箭头的线表示),物理CPU 51a与内存52a、52b分别通过双数据速率链路(Double Data Rate Links,简称DDR Links)连接(图1b中用直线表示),物理CPU 51b与内存52c、52d也分别通过DDRLinks连接。物理CPU 51a可以访问内存52a、52b,也可以访问内存52c、52d,但物理CPU 51a访问内存52a、52b的速率比访问内存52c、52d的速率快(内存52a、52b的访问速率相同,内存52c、52d的访问速率相同)。
图1c所示的一致性内存访问架构(Uniform Memory Access Architecture,简称UMA)是本发明实施例提供的调用操作***库的方法的又一种应用场景。
如图1c所示,物理CPU 61a、61b、存储控制集线器(Memory Controller HUB)63(如北桥Northbridge)分别接入前端总线(Frontside Bus)(图1c中用粗线表示),存储控制集线器63、内存62a、62b、62c、62d均接入DDR Links(图1c中用细线表示)。物理CPU 61a可以访问内存62a、62b、62c、62d,且物理CPU 61a访问内存62a、62b、62c、62d的速率是一样的。
图1d所示的对称多处理结构(Symmetric Multi-Processing,简称SMP)是本发明实施例提供的调用操作***库的方法的又一种应用场景。
如图1d所示,物理CPU 611与内存621连接,物理CPU 612与内存622连接,……,物理CPU 61n与内存62n连接,n>1且n为整数,内存621、622、……62n均接入总线63。各物理CPU均可以访问内存621、622、……62n,且访问内存621、622、……62n的速率是一样的。
在本发明实施例提供的调用操作***库的方法的应用场景下,如图1a-图1d所示,为了运行应用程序,本发明将一个或多个物理CPU(或逻辑CPU)构成管理域,管理域上运行有操作***。该操作***可以为用户提供开启应用程序的接口,并在用户通过该接口输入开启应用程序的指令之后,先根据该指令对应的应用程序运行所需的硬件要求(CPU的数量和内存大小)配置一个执行域(由一个或多个物理CPU(或逻辑CPU)构成),再将应用程序和操作***库的编译信息(调用的操作***库的信息)编译成应用程序可执行文件(本发明的应用程序可执行文件专指调用操作***库的应用程序可执行文件),然后将该应用程序可执行文件加载到该执行域的内存中,并将应用程序可执行文件的内存访问地址发送给该执行域。执行域根据该内存访问地址访问内存,运行应用程序可文件。
其中,操作***库的编译信息包括动态操作***库的名称,还可以包括静态操作***库。静态操作***库和动态操作***库都是操作***以库的形式提供给应用程序的操作***的功能(即操作***库),两者的不同之处在于链接方式。静态操作***库链接时与应用程序一块编译成应用程序可执行文件,待应用程序可执行文件加载到内存后运行时,可以直接被应用程序可执行文件调用。由于静态操作***库与应用程序一块编译成应用程序可执行文件加载到内存中,因此多个调用同一个静态操作***库的应用程序可执行文件会造成内存中冗余存储多个该静态操作***库。动态操作***库编译时只将动态操作***库的名称与应用程序一块编译成应用程序可执行文件,待应用程序可执行文件加载到内存后运行时,动态操作***库才加载到内存中被应用程序可执行文件调用。由于动态操作***库与应用程序可执行文件是分开加载到内存中,因此多个调用同一个动态操作***库的应用程序可执行文件只会在内存中存储一个该动态操作***库。
在实际应用中,可以将操作***库(可以是静态操作***库,也可以是动态操作***库)称为统一内核(unikernel),也可以将应用程序和操作***库(包括静态操作***库、动态操作***库的名称中的至少一个)编译而成的应用程序可执行文件称为统一内核。
可选地,管理域还可以包括内存、外存储器、网络接口、IO设备中的至少一种,执行域还可以包括内存、外存储器、网络接口、IO设备中的至少一种,本发明对此不作限制。
如图2a和图2b所示,管理域配置了两个执行域,一个执行域上运行应用程序可执行文件1,另一个执行域上运行应用程序可执行文件2。
由于运行应用程序可执行文件时需要调用载入内存的动态操作***库,本发明为了实现对动态操作***库的调用,由管理域在所有执行域均能访问的内存中划分出一块内存区,以存放执行域在运应用程序可执行文件时调用的动态操作***库,实现动态操作***库在执行域间的共享。具体地,划分出内存区的内存(称为共享内存)可以为共享的本地内存(参见图2a),也可以为远端内存(参见图2b)。可以理解地,操作***库所包含的程序包括代码段和数据段,由于数据段会随调用情况变化,不需要共享,因此管理域划分出的内存区可以只存储代码段。
需要说明的是,图1a-图1d所示的应用场景仅为举例,本发明可以适用于所有设置有多个具有共享内存的CPU的应用场景,并不限制于此。
实施例1
本发明实施例提供了一种调用操作***库的方法,该方法的执行主体为执行域,参见图3,该方法包括:
步骤101:接收管理域发送的应用程序可执行文件的内存访问地址。
在本实施例中,执行域包括用于运行该应用程序可执行文件的一个或多个处理器。可选地,执行域还可以包括内存、外存储器、网络接口、IO设备中的至少一种。
应用程序可执行文件的内存访问地址为应用程序可执行文件存储在执行域的内存中的地址。执行域的内存为与执行域中的处理器直接连接的内存。
如应用场景部分所述,管理域上运行的操作***可以接收应用程序可执行文件(由应用程序编译成)的开启指令,再根据应用程序可执行文件的运行要求(如CPU的数量、内存大小)配置一个或多个处理器构成执行域,接着将应用程序和操作***库的编译信息一块编译成应用程序可执行文件后加载到执行域的内存中,并获取应用程序可执行文件的内存访问地址,最后将应用程序可执行文件的内存访问地址发送给执行域,以使执行域运行应用程序可执行文件。
例如,如图2a和图2b所示,当该应用程序可执行文件为应用程序可执行文件1时,则该执行域为运行应用程序可执行文件1的执行域;当该应用程序可执行文件为应用程序可执行文件2时,则该执行域为运行应用程序可执行文件2的执行域。
步骤102:根据应用程序可执行文件的内存访问地址,运行应用程序可执行文件。
步骤103:在运行应用程序可执行文件的过程中调用动态操作***库时,获取动态操作***库的内存访问地址。
在本实施例中,动态操作***库的内存访问地址为动态操作***库存储在管理域配置的所有执行域均能访问的共享内存中的地址。共享内存可以为如图2a所示的本地内存,或如图2b所示的远端内存。
步骤104:根据动态操作***库的内存访问地址,调用动态操作***库。
本发明实施例通过执行域接收管理域发送的应用程序可执行文件的内存访问地址,根据应用程序可执行文件的内存访问地址运行应用程序可执行文件,在运行应用程序可执行文件的过程中调用动态操作***库时获取动态操作***库的内存访问地址,以及根据动态操作***库的内存访问地址调用动态操作***库,实现了应用程序可执行文件和动态操作***库分别加载到内存中,动态操作***库只需要加载一份到内存中即可供所有应用程序可执行文件调用,避免了操作***库的冗余存储。
实施例2
本发明实施例提供了一种调用操作***库的方法,该方法的执行主体为管理域,参见图4,该方法包括:
步骤201:接收应用程序可执行文件的开启指令。
步骤202:根据开启指令,配置执行域。
在本实施例中,执行域包括用于运行该应用程序可执行文件的一个或多个处理器。
可选地,执行域还可以包括内存、外存储器、网络接口、IO设备中的至少一种。
步骤203:将应用程序可执行文件存储在执行域的内存中,并获取应用程序可执行文件的内存访问地址。
在本实施例中,应用程序可执行文件的内存访问地址为应用程序可执行文件存储在执行域的内存中的地址。执行域的内存为与执行域中的处理器直接连接的内存。
步骤204:向执行域发送应用程序可执行文件的内存访问地址。
本发明实施例通过接收应用程序可执行文件的开启指令,根据开启指令配置执行域,将应用程序可执行文件存储在执行域的内存中并获取应用程序可执行文件的内存访问地址,向执行域发送应用程序可执行文件的内存访问地址,以使执行域运行应用程序可执行文件,并且可以在运行应用程序可执行文件的过程中才去获取动态操作***库的内存访问地址,因此可以实现应用程序可执行文件和其调用的动态操作***库分别加载到内存中,动态操作***库只需要加载一份到内存中即可供所有应用程序可执行文件调用,避免了操作***库的冗余存储。
实施例3
本发明实施例提供了一种调用操作***库的方法,参见图5,该方法包括:
步骤301:管理域接收应用程序可执行文件的开启指令。
具体地,应用程序可执行文件可以由应用程序、操作***库的编译信息编译而成,该编译信息包括动态操作***库的名称。动态操作***库的名称可用于在运行应用程序可执行文件的过程中调用动态操作***库,即获取动态操作***库的内存地址并进行访问。
进一步地,该编译信息还可以包括静态操作***库。
步骤302:管理域根据开启指令,配置执行域。
在本实施例中,执行域包括用于运行该应用程序可执行文件的一个或多个处理器。
可选地,执行域还可以包括内存、外存储器、网络接口、IO设备中的至少一种。
步骤303:管理域将应用程序可执行文件存储在执行域的内存中,并获取应用程序可执行文件的内存访问地址。
在本实施例中,应用程序可执行文件的内存访问地址为应用程序可执行文件存储在执行域的内存中的地址。执行域的内存为与执行域中的处理器直接连接的内存。
步骤304:管理域向执行域发送应用程序可执行文件的内存访问地址。
步骤305:执行域根据应用程序可执行文件的内存访问地址,运行应用程序可执行文件。
步骤306:执行域在运行应用程序可执行文件的过程中调用动态操作***库时,获取动态操作***库的内存访问地址。
在本实施例中,动态操作***库的内存访问地址为动态操作***库存储在管理域配置的所有执行域均能访问的共享内存中的地址。共享内存可以为如图2a所示的本地内存,或如图2b所示的远端内存。
如应用场景部分所述,执行域能访问的内存是由管理域配置的,因此共享内存设置在本地内存上还是远端内存由管理域决定。当然,用户也可以指定管理域优先或完全使用其中的一个,如本地内存,此时访问速度一般会比远端内存快,可以提升整体性能。若管理域配置的所有执行域之间没有可以共享的本地内存,如各执行域采用如图1a所示的应用场景中与不同控制器连接的处理器实现,则共享内存只能采用远端内存。
步骤307:执行域根据动态操作***库的内存访问地址,调用动态操作***库。
在实际应用中,动态操作***库在共享内存中的存储地址可以是物理地址,也可以是虚拟地址。以共享内存为远端内存为例,当内存地址为物理地址时,执行域(一个或多个处理器)将物理地址和读取的数据大小发送到远端内存连接的控制器,该控制器直接根据物理地址读取动态操作***库。当内存地址为虚拟地址时,执行域(一个或多个处理器)也是将物理地址和读取的数据大小发送到远端内存连接的控制器,但是该控制器不再直接读取动态操作***库,而是先将虚拟地址转换为物理地址,再根据转换后的物理地址读取动态操作***库。
在本实施例的第一种实现方式中,参见图6,该步骤306可以包括:
步骤306a:执行域根据动态操作***库的名称,在局部共享库表中查找动态操作***库的内存访问地址。当在局部共享库表中查找到动态操作***库的内存访问地址时,执行步骤306b;当在局部共享库表中没有查找到动态操作***库的内存访问地址时,执行步骤306c-步骤306e、以及步骤306g,或者执行步骤306c-步骤306d、以及步骤306f-步骤306g。
在本实施例中,局部共享库表中只存储有执行域调用的动态操作***库的存储信息,存储信息包括动态操作***库的名称和动态操作***库的内存访问地址。
步骤306b:执行域从局部共享库表中获取动态操作***库的内存访问地址。
步骤306c:执行域向管理域发送调用请求,调用请求包括动态操作***库的名称。
步骤306d:管理域根据调用请求,在全局共享库表中查找动态操作***库的内存访问地址。当在全局共享库表中查找到动态操作***库的内存访问地址时,执行步骤306e;当在全局共享库表中没有查找到动态操作***库的内存访问地址时,执行步骤306f。
在本实施例中,全局共享库表中存储有管理域配置的所有执行域调用的动态操作***库的存储信息,存储信息包括动态操作***库的名称和动态操作***库的内存访问地址。
步骤306e:管理域从全局共享库表中获取动态操作***库的内存访问地址。
步骤306f:管理域将动态操作***库从外存储器加载到共享内存中,并获取动态操作***库的内存访问地址。
可选地,存储信息还可以包括动态操作***库的版本匹配标识,版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本,如下表一所示:
表一
进一步地,该方法还可以包括:
当全局共享库表中存储有动态操作***库的存储信息,且全局共享库表中的动态操作***库的版本号与默认调用的动态操作***库的版本号不同时,管理域将全局共享库表中动态操作***库的版本匹配标识设置为否;
管理域向执行域发送更新请求,更新请求包括动态操作***库的名称和动态操作***库的版本号;
当局部共享库表中存储有动态操作***库的存储信息,且局部共享库表中的动态操作***库的版本号与默认调用的动态操作***库的版本号不同时,执行域将局部共享库表中动态操作***库的版本匹配标识设置为否。
可以理解地,将全局共享库表和局部共享库表中版本号与默认调用的操作***库的版本号不同的操作***库的版本匹配标识设置为否,此时若需要调用操作***库,则执行域查找局部共享库表,或者管理域查找全局共享库表时,会根据版本匹配标识获知外存储器中有性能更好的操作***库可供调用(即默认调用的操作***库,一般会将性能最好的操作***库作为默认调用的操作***库,如最新版本的操作***库),从而在应用程序可执行文件不要求调用的操作***库的版本号时,避免使用原先已调用过的操作***库(即全局共享库表或局部共享库表中的操作***库),转而自动请求使用性能更好的操作***库(即默认调用的操作***库),提高了应用程序可执行文件的运行性能,同时也方便了动态操作***库的更新和发布。
例如,Java应用程序需要依赖Java运行环境(Java Runtime Environment,简称JRE),原先已调用过的动态操作***库是JRE1.6,动态操作***库目前更新到JRE1.7,则原先运行的Java应用程序仍然使用JRE1.6,新运行的Java应用程序就会使用JRE1.7。等原先运行的Java应用程序都退出后,所有的Java应用程序使用的都是JRE1.7,完成了动态操作***库的更新。
容易知道,在动态操作***库更新完成之后,并没有对共享库表(全局共享库表和局部共享库表)中的内存访问地址进行即时更新,如此设计是考虑到如下几种情况:
1、当应用程序可执行文件正在调用更新前的动态操作***库时,执行域会继续执行更新前的动态操作***库中的程序,而不会转而执行更新后的动态操作***库中的程序。
2、当应用程序可执行文件需要调用更新后的动态操作***库时,由于此时局部共享库表中操作***库的版本匹配标识已经为否了,如果应用程序可执行文件没有要求调用的操作***库的版本号,执行域不会采用共享库表中动态操作***库在共享内存中的存储地址,而是向管理域请求调用更新后的动态操作***库。
3、当应用程序可执行文件不需要调用更新后的动态操作***库时,可以避免共享库表非必要的更新,减少***的通信量,节省***资源的使用。
具体地,该步骤306f可以包括:
当调用请求不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,管理域将版本为默认调用的动态操作***库加载到内存中,并获取动态操作***库的内存访问地址。
在实际应用中,外存储器中会设有一个共享库管理表,共享库管理表中存储有默认调用版本的操作***库的调用信息,调用信息包括操作***库的名称、操作***库的版本号、操作***库的文件名称,如下表二所示:
表二
操作***库的名称 | 操作***库的版本号 | 操作***库的文件名称 |
json | 2.2.2 | libjson.so.2 |
anl | 1.1.1 | libanl.so.1 |
bz2 | 1.0.0 | libbz2.so.0 |
jli | 2.0.0 | jli/libjli.so |
当调用请求不包括操作***库的版本号时,管理域直接根据该表调用操作***库;当调用请求包括操作***库的版本号时,管理域会根据调用请求,查找操作***库的文件调用操作***库。
当然,共享库管理表中也可以存储所有操作***库的调用信息,此时调用信息还包括默认标识,默认标识用于表示该操作***库是否为默认调用版本的操作***库。当调用请求包括操作***库的版本号时,管理域也可以直接根据该表调用操作***库。
可选地,在步骤306f之后,该方法还可以包括:
管理域在全局共享库表中存储动态操作***库的存储信息。
步骤306g:管理域向执行域发送调用请求回复,调用请求回复包括动态操作***库的内存访问地址。该步骤306f在步骤306e和步骤306f之后执行。
可选地,在步骤306g之后,该方法还可以包括:
执行域在局部共享库表中存储动态操作***库的存储信息。
容易知道,在上述实现方式中,局部共享库表设置在执行域的内存中,全局共享库表设置在管理域的内存中。管理域的内存为与管理域中的处理器直接连接的内存。
可选地,存储信息还可以包括动态操作***库在外存储器中的存储位置、动态操作***库的版本号等,本发明对此不作限制。
可以理解地,局部共享库表的设置,可以记录执行域调用的动态操作***库在共享内存中的存储地址,避免每次调用动态操作***库时,都向管理域发送调用请求,提高了执行域的处理速度和性能,并减少了通信量,节省了通信资源的使用。
在本实施例的第二种实现方式中,该步骤306可以包括:
执行域向管理域发送调用请求,调用请求包括动态操作***库的名称;
管理域根据调用请求,在全局共享库表中查找动态操作***库的内存访问地址,全局共享库表中存储有管理域配置的所有执行域调用的动态操作***库的存储信息,存储信息包括动态操作***库的名称和动态操作***库的内存访问地址。
当在全局共享库表中查找到动态操作***库的内存访问地址时,管理域从全局共享库表中获取动态操作***库的内存访问地址;
当在全局共享库表中没有查找到动态操作***库的内存访问地址时,管理域将动态操作***库从外存储器加载到共享内存中,并获取动态操作***库的内存访问地址;
管理域向执行域发送调用请求回复,调用请求回复包括动态操作***库的内存访问地址。
可以理解地,第二种实现方式与第一种实现方式相比,只在管理域的内存中设置有全局共享库表,并没有在执行域的内存中设置局部共享库表,因此不存在步骤306a-步骤306b,而是直接执行步骤306c-步骤306e、以及步骤306g,或者步骤306c-步骤306d、以及步骤306f-步骤306g。
上述实现方式可以有效减少局部共享库表的设置,节省内存空间。
在第二种实现方式中,可选地,该方法还可以包括:
在管理域将动态操作***库从外存储器加载到共享内存中,并获取动态操作***库的内存访问地址之后,管理域在全局共享库表中存储动态操作***库的存储信息。
在第二种实现方式中,可选地,存储信息还可以包括动态操作***库在外存储器中的存储位置、动态操作***库的版本号等,本发明对此不作限制。
在第二种实现方式中,可选地,存储信息还可以包括动态操作***库的版本匹配标识,版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
进一步地,该方法还可以包括:
当全局共享库表中存储有动态操作***库的存储信息,且全局共享库表中的动态操作***库的版本号与默认调用的动态操作***库的版本号不同时,管理域将全局共享库表中动态操作***库的版本匹配标识设置为否。
在本实施例的第三种实现方式中,该步骤306可以包括:
执行域根据动态操作***库的名称,在局部共享库表中查找动态操作***库的内存访问地址,局部共享库表中只存储有执行域调用的动态操作***库的存储信息,存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;
当在局部共享库表中查找到动态操作***库的内存访问地址时,执行域从局部共享库表中获取动态操作***库的内存访问地址;
当在局部共享库表中没有查找到动态操作***库的内存访问地址时,执行域将动态操作***库从外存储器加载到共享内存中,并获取动态操作***库的内存访问地址。
可以理解地,第三种实现方式与第一种实现方式相比,只在执行域的内存中设置局部共享库表,并没有在管理域的内存中设置有全局共享库表,因此不存在步骤306c-步骤306g,并且步骤306a-步骤306b与第一种实现方式相同。
上述实现方式不需要管理域即可实现动态操作***库的共享,减轻了管理域的负担。
在第三种实现方式中,可选地,存储信息还可以包括动态操作***库的版本匹配标识,版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
进一步地,当在局部共享库表中没有查找到动态操作***库的内存访问地址时,执行域将动态操作***库从外存储器加载到共享内存中,并获取动态操作***库的内存访问地址,可以包括:
当应用程序可执行文件不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,执行域将版本为默认调用的动态操作***库加载到共享内存中,并获取动态操作***库的内存访问地址。
在第三种实现方式中,可选地,该方法还可以包括:
在执行域将动态操作***库从外存储器加载到共享内存中,并获取动态操作***库的内存访问地址之后,执行域在局部共享库表中存储动态操作***库的存储信息。
在第三种实现方式中,可选地,存储信息还可以包括动态操作***库在外存储器中的存储位置、动态操作***库的版本号等,本发明对此不作限制。
本发明实施例通过接收应用程序可执行文件的开启指令,根据开启指令配置执行域,将应用程序可执行文件存储在执行域的内存中并获取应用程序可执行文件的内存访问地址,向执行域发送应用程序可执行文件的内存访问地址,以使执行域运行应用程序可执行文件,并且可以在运行应用程序可执行文件的过程中才去获取动态操作***库的内存访问地址,因此可以实现应用程序可执行文件和其调用的动态操作***库分别加载到内存中,动态操作***库只需要加载一份到内存中即可供所有应用程序可执行文件调用,避免了操作***库的冗余存储。
实施例4
本发明实施例提供了一种调用操作***库的装置,该装置设置在执行域上,参见图7,该装置包括:
接收模块401,用于接收管理域发送的应用程序可执行文件的内存访问地址,应用程序可执行文件的内存访问地址为应用程序可执行文件存储在执行域的内存中的地址,执行域包括用于运行该应用程序可执行文件的一个或多个处理器;
运行模块402,用于根据应用程序可执行文件的内存访问地址,运行应用程序可执行文件;
获取模块403,用于在运行应用程序可执行文件的过程中调用动态操作***库时,获取动态操作***库的内存访问地址;
调用模块404,用于根据动态操作***库的内存访问地址,调用动态操作***库。
本发明实施例通过执行域接收管理域发送的应用程序可执行文件的内存访问地址,根据应用程序可执行文件的内存访问地址运行应用程序可执行文件,在运行应用程序可执行文件的过程中调用动态操作***库时获取动态操作***库的内存访问地址,以及根据动态操作***库的内存访问地址调用动态操作***库,实现了应用程序可执行文件和动态操作***库分别加载到内存中,动态操作***库只需要加载一份到内存中即可供所有应用程序可执行文件调用,避免了操作***库的冗余存储。
实施例5
本发明实施例提供了一种调用操作***库的装置,该装置设置在执行域上,参见图8,该装置包括:
接收模块501,用于接收管理域发送的应用程序可执行文件的内存访问地址,应用程序可执行文件的内存访问地址为应用程序可执行文件存储在执行域的内存中的地址,执行域包括用于运行该应用程序可执行文件的一个或多个处理器;
运行模块502,用于根据应用程序可执行文件的内存访问地址,运行应用程序可执行文件;
获取模块503,用于在运行应用程序可执行文件的过程中调用动态操作***库时,获取动态操作***库的内存访问地址;
调用模块504,用于根据动态操作***库的内存访问地址,调用动态操作***库。
在本实施例的一种实现方式中,应用程序可执行文件可以由应用程序、操作***库的编译信息编译而成,该编译信息包括动态操作***库的名称。
可选地,获取模块503可以包括:
发送单元503a,用于向管理域发送调用请求,调用请求包括动态操作***库的名称;
接收单元503b,用于接收管理域发送的调用请求回复,调用请求回复包括管理域根据调用请求获取的动态操作***库的内存访问地址。
可选地,获取模块503可以包括:
查找单元503c,用于在共享库表中查找动态操作***库的内存访问地址,共享库表中存储有执行域调用的动态操作***库的存储信息,存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;
获取单元503d,用于当在共享库表中查找到动态操作***库的内存访问地址时,从共享库表中获取动态操作***库的内存访问地址。
优选地,存储信息还可以包括动态操作***库的版本匹配标识,版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
更优选地,获取单元503d还可以用于,
当应用程序可执行文件不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,将版本为默认调用的动态操作***库加载到内存中,并获取动态操作***库的内存访问地址。
本发明实施例通过执行域接收管理域发送的应用程序可执行文件的内存访问地址,根据应用程序可执行文件的内存访问地址运行应用程序可执行文件,在运行应用程序可执行文件的过程中调用动态操作***库时获取动态操作***库的内存访问地址,以及根据动态操作***库的内存访问地址调用动态操作***库,实现了应用程序可执行文件和动态操作***库分别加载到内存中,动态操作***库只需要加载一份到内存中即可供所有应用程序可执行文件调用,避免了操作***库的冗余存储。
实施例6
本发明实施例提供了一种实现调用操作***库的***,该***可以例如是服务器、个人电脑。参见图9,该设备包括:网络接口601、存储器602以及处理器603(例如CPU),可以用于执行实施例1或者实施例3的方法。
下面结合图9对***600的各个构成部件进行具体的介绍:
存储器602可用于存储软件程序以及应用模块,处理器603通过运行存储在存储器602的软件程序以及应用模块,从而执行***600的各种功能应用以及数据处理。存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序等;存储数据区可存储根据***600的处理所创建的数据(比如广告推送策略、推送记录)等。此外,存储器602可以包括高速RAM(Random Access Memory,随机存取存储器),还可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
网络接口601可用于接收管理域发送的应用程序可执行文件的内存访问地址,应用程序可执行文件的内存访问地址为应用程序可执行文件存储在执行域的内存中的地址,执行域包括用于运行该应用程序可执行文件的一个或多个处理器。
处理器603是***600的控制中心,利用各种接口和线路连接整个***600的各个部分。
具体地,处理器603通过运行或执行存储在存储器602内的软件程序和应用模块,以及调用存储在存储器602内的数据,处理器603可以实现,根据应用程序可执行文件的内存访问地址,运行应用程序可执行文件;在运行应用程序可执行文件的过程中调用动态操作***库时,获取动态操作***库的内存访问地址;根据动态操作***库的内存访问地址,调用动态操作***库。
在本实施例的一种实现方式中,应用程序可执行文件可以由应用程序、操作***库的编译信息编译而成,该编译信息包括动态操作***库的名称。
可选地,处理器603可实现,通过网络接口601向管理域发送调用请求,调用请求包括动态操作***库的名称;通过网络接口601接收管理域发送的调用请求回复,调用请求回复包括管理域根据调用请求获取的动态操作***库的内存访问地址。
可选地,处理器603可实现,在共享库表中查找动态操作***库的内存访问地址,共享库表中存储有执行域调用的动态操作***库的存储信息,存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;当在共享库表中查找到动态操作***库的内存访问地址时,从共享库表中获取动态操作***库的内存访问地址。。
优选地,存储信息还可以包括动态操作***库的版本匹配标识,版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
更优选地,处理器603可实现,当应用程序可执行文件不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,将版本为默认调用的动态操作***库加载到内存中,并获取动态操作***库的内存访问地址。
本发明实施例通过执行域接收管理域发送的应用程序可执行文件的内存访问地址,根据应用程序可执行文件的内存访问地址运行应用程序可执行文件,在运行应用程序可执行文件的过程中调用动态操作***库时获取动态操作***库的内存访问地址,以及根据动态操作***库的内存访问地址调用动态操作***库,实现了应用程序可执行文件和动态操作***库分别加载到内存中,动态操作***库只需要加载一份到内存中即可供所有应用程序可执行文件调用,避免了操作***库的冗余存储。
实施例7
本发明实施例提供了一种调用操作***库的装置,该装置设置在管理域上,参见图10,该装置包括:
指令接收模块701,用于接收应用程序可执行文件的开启指令;
配置模块702,用于根据开启指令,配置执行域,执行域包括用于运行该应用程序可执行文件的一个或多个处理器;
文件地址获取模块703,用于将应用程序可执行文件存储在执行域的内存中,并获取应用程序可执行文件的内存访问地址,应用程序可执行文件的内存访问地址为应用程序可执行文件存储在执行域的内存中的地址;
发送模块704,用于向执行域发送应用程序可执行文件的内存访问地址。
本发明实施例通过接收应用程序可执行文件的开启指令,根据开启指令配置执行域,将应用程序可执行文件存储在执行域的内存中并获取应用程序可执行文件的内存访问地址,向执行域发送应用程序可执行文件的内存访问地址,以使执行域运行应用程序可执行文件,并且可以在运行应用程序可执行文件的过程中才去获取动态操作***库的内存访问地址,因此可以实现应用程序可执行文件和其调用的动态操作***库分别加载到内存中,动态操作***库只需要加载一份到内存中即可供所有应用程序可执行文件调用,避免了操作***库的冗余存储。
实施例8
本发明实施例提供了一种调用操作***库的装置,该装置设置在管理域上,参见图11,该装置包括:
指令接收模块801,用于接收应用程序可执行文件的开启指令;
配置模块802,用于根据开启指令,配置执行域,执行域包括用于运行该应用程序可执行文件的一个或多个处理器;
文件地址获取模块803,用于将应用程序可执行文件存储在执行域的内存中,并获取应用程序可执行文件的内存访问地址,应用程序可执行文件的内存访问地址为应用程序可执行文件存储在执行域的内存中的地址;
发送模块804,用于向执行域发送应用程序可执行文件的内存访问地址。
在本实施例的一种实现方式中,应用程序可执行文件可以由应用程序、操作***库的编译信息编译而成,该编译信息包括动态操作***库的名称。
可选地,装置还可以包括:
请求接收模块805,用于接收执行域发送的调用请求,调用请求包括动态操作***库的名称;
查找模块806,用于根据调用请求,在全局共享库表中查找动态操作***库的内存访问地址,全局共享库表中存储有执行域调用的动态操作***库的存储信息,存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;
库地址获取模块807,用于当在全局共享库表中查找到动态操作***库的内存访问地址时,从全局共享库表中获取动态操作***库的内存访问地址;
发送模块804还用于,向执行域发送调用请求回复,调用请求回复包括动态操作***库的内存访问地址。
优选地,存储信息还可以包括操作***库的版本匹配标识,版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
更优选地,库地址获取模块807还可以用于,
当调用请求不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,将版本为默认调用的动态操作***库加载到内存中,并获取动态操作***库的内存访问地址。
本发明实施例通过接收应用程序可执行文件的开启指令,根据开启指令配置执行域,将应用程序可执行文件存储在执行域的内存中并获取应用程序可执行文件的内存访问地址,向执行域发送应用程序可执行文件的内存访问地址,以使执行域运行应用程序可执行文件,并且可以在运行应用程序可执行文件的过程中才去获取动态操作***库的内存访问地址,因此可以实现应用程序可执行文件和其调用的动态操作***库分别加载到内存中,动态操作***库只需要加载一份到内存中即可供所有应用程序可执行文件调用,避免了操作***库的冗余存储。
实施例9
本发明实施例提供了一种实现调用操作***库的***,该***可以例如是服务器、个人电脑。参见图12,该设备包括:网络接口901、存储器902以及处理器903(例如CPU),可以用于执行实施例2或者实施例3的方法。
下面结合图12对***900的各个构成部件进行具体的介绍:
存储器902可用于存储软件程序以及应用模块,处理器903通过运行存储在存储器902的软件程序以及应用模块,从而执行***900的各种功能应用以及数据处理。存储器902可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序等;存储数据区可存储根据***900的处理所创建的数据(比如广告推送策略、推送记录)等。此外,存储器902可以包括高速RAM(Random Access Memory,随机存取存储器),还可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
网络接口901可用于接收应用程序可执行文件的开启指令。
处理器903是***900的控制中心,利用各种接口和线路连接整个***900的各个部分。
具体地,处理器903通过运行或执行存储在存储器902内的软件程序和应用模块,以及调用存储在存储器902内的数据,处理器903可以实现,根据开启指令,配置执行域,执行域包括用于运行该应用程序可执行文件的一个或多个处理器;将应用程序可执行文件存储在执行域的内存中,并获取应用程序可执行文件的内存访问地址,应用程序可执行文件的内存访问地址为应用程序可执行文件存储在执行域的内存中的地址;通过网络接口901向执行域发送应用程序可执行文件的内存访问地址。
在本实施例的一种实现方式中,应用程序可执行文件可以由应用程序、操作***库的编译信息编译而成,该编译信息包括动态操作***库的名称。
可选地,处理器903可实现,通过网络接口901接收执行域发送的调用请求,调用请求包括动态操作***库的名称;根据调用请求,在全局共享库表中查找动态操作***库的内存访问地址,全局共享库表中存储有执行域调用的动态操作***库的存储信息,存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;当在全局共享库表中查找到动态操作***库的内存访问地址时,从全局共享库表中获取动态操作***库的内存访问地址;通过网络接口901向执行域发送调用请求回复,调用请求回复包括动态操作***库的内存访问址址。
优选地,存储信息还可以包括操作***库的版本匹配标识,版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
更优选地,处理器903可实现,当调用请求不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,将版本为默认调用的动态操作***库加载到内存中,并获取动态操作***库的内存访问地址。
本发明实施例通过接收应用程序可执行文件的开启指令,根据开启指令配置执行域,将应用程序可执行文件存储在执行域的内存中并获取应用程序可执行文件的内存访问地址,向执行域发送应用程序可执行文件的内存访问地址,以使执行域运行应用程序可执行文件,并且可以在运行应用程序可执行文件的过程中才去获取动态操作***库的内存访问地址,因此可以实现应用程序可执行文件和其调用的动态操作***库分别加载到内存中,动态操作***库只需要加载一份到内存中即可供所有应用程序可执行文件调用,避免了操作***库的冗余存储。
实施例10
本发明实施例提供了一种实现调用操作***库的***,参见图13,该***包括:
管理域1001,用于接收至少一个应用程序可执行文件的开启指令;根据开启指令,配置至少一个执行域,至少一个执行域与至少一个应用程序可执行文件一一对应,至少一个执行域中的各个执行域包括运行对应的应用程序可执行文件的一个或多个处理器;分别将至少一个应用程序可执行文件存储在各自对应的执行域的内存中,并获取至少一个应用程序可执行文件中各个应用程序可执行文件的内存访问地址,各个应用程序可执行文件的内存访问地址为各个应用程序可执行文件存储在对应的执行域的内存中的地址;向各个执行域发送对应的应用程序可执行文件的内存访问地址;
执行域1002,用于接收管理域1001发送的对应的应用程序可执行文件的内存访问地址;根据对应的应用程序可执行文件的内存访问地址,运行对应的应用程序可执行文件;在运行对应的应用程序可执行文件的过程中调用动态操作***库时,获取动态操作***库的内存访问地址,动态操作***库的内存访问地址为动态操作***库存储在管理域1001配置的所有执行域均能访问的共享内存中的地址;根据动态操作***库的内存访问地址,调用动态操作***库。
本发明实施例通过执行域接收管理域发送的应用程序可执行文件的内存访问地址,根据应用程序可执行文件的内存访问地址运行应用程序可执行文件,在运行应用程序可执行文件的过程中调用动态操作***库时获取动态操作***库的内存访问地址,以及根据动态操作***库的内存访问地址调用动态操作***库,实现了应用程序可执行文件和动态操作***库分别加载到内存中,动态操作***库只需要加载一份到内存中即可供所有应用程序可执行文件调用,避免了操作***库的冗余存储。
实施例11
本发明实施例提供了一种实现调用操作***库的***,参见图14,该***包括:
管理域1101,用于接收至少一个应用程序可执行文件的开启指令;根据开启指令,配置至少一个执行域,至少一个执行域与至少一个应用程序可执行文件一一对应,至少一个执行域中的各个执行域包括运行对应的应用程序可执行文件的一个或多个处理器;分别将至少一个应用程序可执行文件存储在各自对应的执行域的内存中,并获取至少一个应用程序可执行文件中各个应用程序可执行文件的内存访问地址,各个应用程序可执行文件的内存访问地址为各个应用程序可执行文件存储在对应的执行域的内存中的地址;向各个执行域发送对应的应用程序可执行文件的内存访问地址;
执行域1102,用于接收管理域1101发送的对应的应用程序可执行文件的内存访问地址;根据对应的应用程序可执行文件的内存访问地址,运行对应的应用程序可执行文件;在运行对应的应用程序可执行文件的过程中调用动态操作***库时,获取动态操作***库的内存访问地址,动态操作***库的内存访问地址为动态操作***库存储在管理域1101配置的所有执行域均能访问的共享内存中的地址;根据动态操作***库的内存访问地址,调用动态操作***库。
在本实施例的一种实现方式中,应用程序可执行文件可以由应用程序、操作***库的编译信息编译而成,该编译信息包括动态操作***库的名称。
可选地,执行域1102可以用于,向管理域发送调用请求,调用请求包括动态操作***库的名称;
管理域1101用于,接收执行域发送的调用请求;根据调用请求,在全局共享库表中查找动态操作***库的内存访问地址,全局共享库表中存储有执行域调用的动态操作***库的存储信息,存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;当在全局共享库表中查找到动态操作***库的内存访问地址时,从全局共享库表中获取动态操作***库的内存访问地址;当在全局共享库表中没有查找到动态操作***库的内存访问地址时,将动态操作***库加载到共享内存中,并获取动态操作***库的内存访问地址;向执行域发送调用请求回复,调用请求回复包括动态操作***库的内存访问地址;
执行域1102还用于,接收管理域发送的调用请求回复。
可选地,执行域1102可以用于,在本地共享库表中查找动态操作***库的内存访问地址,本地共享库表中存储有执行域调用的动态操作***库的存储信息,存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;当在共享库表中查找到动态操作***库的内存访问地址时,从共享库表中获取动态操作***库的内存访问地址;当在共享库表中没有查找到动态操作***库的内存访问地址时,向管理域发送调用请求,调用请求包括动态操作***库的名称;
管理域1101用于,接收执行域发送的调用请求;根据调用请求,在全局共享库表中查找动态操作***库的内存访问地址,全局共享库表中存储有执行域调用的动态操作***库的存储信息,存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;当在全局共享库表中查找到动态操作***库的内存访问地址时,从全局共享库表中获取动态操作***库的内存访问地址;当在全局共享库表中没有查找到动态操作***库的内存访问地址时,将动态操作***库加载到共享内存中,并获取动态操作***库的内存访问地址;向执行域发送调用请求回复,调用请求回复包括动态操作***库的内存访问地址;
执行域1102还用于,接收管理域发送的调用请求回复。
优选地,存储信息还可以包括动态操作***库的版本匹配标识,版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
更优选地,管理域1101还可以用于,当应用程序可执行文件不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,将版本为默认调用的动态操作***库加载到内存中,并获取动态操作***库的内存访问地址。
可选地,执行域1102可以用于,在全局共享库表中查找动态操作***库的内存访问地址,全局共享库表中存储有执行域调用的动态操作***库的存储信息,存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;当在全局共享库表中查找到动态操作***库的内存访问地址时,从全局共享库表中获取动态操作***库的内存访问地址;当在全局共享库表中没有查找到动态操作***库的内存访问地址时,将动态操作***库加载到共享内存中,并获取动态操作***库的内存访问地址。
本发明实施例通过执行域接收管理域发送的应用程序可执行文件的内存访问地址,根据应用程序可执行文件的内存访问地址运行应用程序可执行文件,在运行应用程序可执行文件的过程中调用动态操作***库时获取动态操作***库的内存访问地址,以及根据动态操作***库的内存访问地址调用动态操作***库,实现了应用程序可执行文件和动态操作***库分别加载到内存中,动态操作***库只需要加载一份到内存中即可供所有应用程序可执行文件调用,避免了操作***库的冗余存储。
需要说明的是:上述实施例提供的调用操作***库的装置在调用操作***库时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的调用操作***库的装置与调用操作***库的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (21)
1.一种调用操作***库的方法,其特征在于,所述方法包括:
执行域接收管理域发送的应用程序可执行文件的内存访问地址,所述执行域包括用于运行所述应用程序可执行文件的一个或多个处理器,所述应用程序可执行文件的内存访问地址为所述应用程序可执行文件存储在所述执行域的内存中的地址;
所述执行域根据所述应用程序可执行文件的内存访问地址,运行所述应用程序可执行文件;
所述执行域在运行所述应用程序可执行文件的过程中调用动态操作***库时,根据所述动态操作***库的名称,在局部共享库表中查找所述动态操作***库的内存访问地址,所述局部共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;
当在所述局部共享库表中查找到所述动态操作***库的内存访问地址时,所述执行域从所述局部共享库表中获取所述动态操作***库的内存访问地址;
当在所述局部共享库表中没有查找到所述动态操作***库的内存访问地址时,所述执行域向所述管理域发送调用请求,所述调用请求包括所述动态操作***库的名称,所述执行域接收所述管理域发送的调用请求回复,所述调用请求回复包括所述管理域根据所述调用请求获取的所述动态操作***库的内存访问地址;
所述执行域根据所述动态操作***库的内存访问地址,调用所述动态操作***库。
2.根据权利要求1所述的方法,其特征在于,所述应用程序可执行文件由应用程序、操作***库的编译信息编译而成,所述编译信息包括动态操作***库的名称。
3.根据权利要求1所述的方法,其特征在于,所述存储信息还包括动态操作***库的版本匹配标识,所述版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
4.根据权利要求3所述的方法,其特征在于,所述获取所述动态操作***库的内存访问地址,包括:
当所述应用程序可执行文件不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,所述执行域将版本为默认调用的动态操作***库加载到内存中,并获取所述动态操作***库的内存访问地址。
5.一种调用操作***库的方法,其特征在于,所述方法包括:
管理域接收应用程序可执行文件的开启指令;
所述管理域根据所述开启指令,配置执行域,所述执行域包括用于运行所述应用程序可执行文件的一个或多个处理器;
所述管理域将所述应用程序可执行文件存储在所述执行域的内存中,并获取所述应用程序可执行文件的内存访问地址,所述应用程序可执行文件的内存访问地址为所述应用程序可执行文件存储在所述执行域的内存中的地址;
所述管理域向所述执行域发送所述应用程序可执行文件的内存访问地址;
所述管理域接收所述执行域发送的调用请求,所述调用请求包括动态操作***库的名称;
所述管理域根据所述调用请求,在全局共享库表中查找所述动态操作***库的内存访问地址,所述全局共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;
当在所述全局共享库表中查找到所述动态操作***库的内存访问地址时,所述管理域从所述全局共享库表中获取所述动态操作***库的内存访问地址;
所述管理域向所述执行域发送调用请求回复,所述调用请求回复包括所述动态操作***库的内存访问地址。
6.根据权利要求5所述的方法,其特征在于,所述应用程序可执行文件由应用程序、操作***库的编译信息编译而成,所述编译信息包括动态操作***库的名称。
7.根据权利要求5所述的方法,其特征在于,所述存储信息还包括操作***库的版本匹配标识,所述版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
当所述调用请求不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,所述管理域将版本为默认调用的动态操作***库加载到内存中,并获取所述动态操作***库的内存访问地址。
9.一种调用操作***库的装置,其特征在于,所述装置包括:
接收模块,用于接收管理域发送的应用程序可执行文件的内存访问地址,所述应用程序可执行文件的内存访问地址为所述应用程序可执行文件存储在执行域的内存中的地址,所述执行域包括用于运行所述应用程序可执行文件的一个或多个处理器;
运行模块,用于根据所述应用程序可执行文件的内存访问地址,运行所述应用程序可执行文件;
获取模块,用于在运行所述应用程序可执行文件的过程中调用动态操作***库时,根据所述动态操作***库的名称,在局部共享库表中查找所述动态操作***库的内存访问地址,所述局部共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;当在所述局部共享库表中查找到所述动态操作***库的内存访问地址时,所述执行域从所述局部共享库表中获取所述动态操作***库的内存访问地址;当在所述局部共享库表中没有查找到所述动态操作***库的内存访问地址时,所述执行域向所述管理域发送调用请求,所述调用请求包括所述动态操作***库的名称,所述执行域接收所述管理域发送的调用请求回复,所述调用请求回复包括所述管理域根据所述调用请求获取的所述动态操作***库的内存访问地址;
调用模块,用于根据所述动态操作***库的内存访问地址,调用所述动态操作***库。
10.根据权利要求9所述的装置,其特征在于,所述应用程序可执行文件由应用程序、操作***库的编译信息编译而成,所述编译信息包括动态操作***库的名称。
11.根据权利要求9所述的装置,其特征在于,所述存储信息还包括动态操作***库的版本匹配标识,所述版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
12.根据权利要求11所述的装置,其特征在于,所述获取单元还用于,
当所述应用程序可执行文件不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,将版本为默认调用的动态操作***库加载到内存中,并获取所述动态操作***库的内存访问地址。
13.一种调用操作***库的装置,其特征在于,所述装置包括:
指令接收模块,用于接收应用程序可执行文件的开启指令;
配置模块,用于根据所述开启指令,配置执行域,所述执行域包括用于运行所述应用程序可执行文件的一个或多个处理器;
文件地址获取模块,用于将所述应用程序可执行文件存储在所述执行域的内存中,并获取所述应用程序可执行文件的内存访问地址,所述应用程序可执行文件的内存访问地址为所述应用程序可执行文件存储在所述执行域的内存中的地址;
发送模块,用于向所述执行域发送所述应用程序可执行文件的内存访问地址;
请求接收模块,用于接收所述执行域发送的调用请求,所述调用请求包括动态操作***库的名称;
查找模块,用于根据所述调用请求,在全局共享库表中查找所述动态操作***库的内存访问地址,所述全局共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;
库地址获取模块,用于当在所述全局共享库表中查找到所述动态操作***库的内存访问地址时,从所述全局共享库表中获取所述动态操作***库的内存访问地址;
所述发送模块还用于,向所述执行域发送调用请求回复,所述调用请求回复包括所述动态操作***库的内存访问地址。
14.根据权利要求13所述的装置,其特征在于,所述应用程序可执行文件由应用程序、操作***库的编译信息编译而成,所述编译信息包括动态操作***库的名称。
15.根据权利要求13所述的装置,其特征在于,所述存储信息还包括操作***库的版本匹配标识,所述版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
16.根据权利要求15所述的装置,其特征在于,所述库地址获取模块还用于,
当所述调用请求不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,将版本为默认调用的动态操作***库加载到内存中,并获取所述动态操作***库的内存访问地址。
17.一种实现调用操作***库的***,其特征在于,所述***包括:
管理域,用于接收至少一个应用程序可执行文件的开启指令;根据所述开启指令,配置至少一个执行域,所述至少一个执行域与所述至少一个应用程序可执行文件一一对应,所述至少一个执行域中的各个所述执行域包括运行对应的所述应用程序可执行文件的一个或多个处理器;分别将所述至少一个应用程序可执行文件存储在各自对应的所述执行域的内存中,并获取所述至少一个应用程序可执行文件中各个所述应用程序可执行文件的内存访问地址,各个所述应用程序可执行文件的内存访问地址为各个所述应用程序可执行文件存储在对应的所述执行域的内存中的地址;向各个所述执行域发送对应的所述应用程序可执行文件的内存访问地址;接收所述执行域发送的调用请求,所述调用请求包括动态操作***库的名称;根据所述调用请求,在全局共享库表中查找所述动态操作***库的内存访问地址,所述全局共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;当在所述全局共享库表中查找到所述动态操作***库的内存访问地址时,从所述全局共享库表中获取所述动态操作***库的内存访问地址;向所述执行域发送调用请求回复,所述调用请求回复包括所述动态操作***库的内存访问地址;
所述执行域,用于接收所述管理域发送的对应的所述应用程序可执行文件的内存访问地址;根据对应的所述应用程序可执行文件的内存访问地址,运行对应的所述应用程序可执行文件;在运行对应的所述应用程序可执行文件的过程中调用动态操作***库时,根据所述动态操作***库的名称,在局部共享库表中查找所述动态操作***库的内存访问地址,所述局部共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址,所述动态操作***库的内存访问地址为所述动态操作***库存储在所述管理域配置的所有执行域均能访问的共享内存中的地址;当在所述局部共享库表中查找到所述动态操作***库的内存访问地址时,所述执行域从所述局部共享库表中获取所述动态操作***库的内存访问地址;当在所述局部共享库表中没有查找到所述动态操作***库的内存访问地址时,所述执行域向所述管理域发送调用请求,所述调用请求包括所述动态操作***库的名称,所述执行域接收所述管理域发送的调用请求回复,所述调用请求回复包括所述管理域根据所述调用请求获取的所述动态操作***库的内存访问地址;根据所述动态操作***库的内存访问地址,调用所述动态操作***库。
18.根据权利要求17所述的***,其特征在于,所述应用程序可执行文件由应用程序、操作***库的编译信息编译而成,所述编译信息包括动态操作***库的名称。
19.根据权利要求17所述的***,其特征在于,所述存储信息还包括动态操作***库的版本匹配标识,所述版本匹配标识用于表示动态操作***库的版本是否为默认调用的动态操作***库的版本。
20.根据权利要求19所述的***,其特征在于,所述管理域还用于,当所述应用程序可执行文件不包括动态操作***库的版本号,且动态操作***库的版本匹配标识为否时,将版本为默认调用的动态操作***库加载到内存中,并获取所述动态操作***库的内存访问地址。
21.根据权利要求18所述的***,其特征在于,所述执行域用于,在全局共享库表中查找所述动态操作***库的内存访问地址,所述全局共享库表中存储有所述执行域调用的动态操作***库的存储信息,所述存储信息包括动态操作***库的名称和动态操作***库的内存访问地址;当在所述全局共享库表中查找到所述动态操作***库的内存访问地址时,从所述全局共享库表中获取所述动态操作***库的内存访问地址;当在所述全局共享库表中没有查找到所述动态操作***库的内存访问地址时,将所述动态操作***库加载到所述共享内存中,并获取所述动态操作***库的内存访问地址。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/085311 WO2017015856A1 (zh) | 2015-07-28 | 2015-07-28 | 一种调用操作***库的方法、装置及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107615243A CN107615243A (zh) | 2018-01-19 |
CN107615243B true CN107615243B (zh) | 2019-12-13 |
Family
ID=57885215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580001186.5A Active CN107615243B (zh) | 2015-07-28 | 2015-07-28 | 一种调用操作***库的方法、装置及*** |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107615243B (zh) |
WO (1) | WO2017015856A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021227971A1 (zh) * | 2020-05-15 | 2021-11-18 | 阿里巴巴集团控股有限公司 | 沙箱实现方法、装置、设备和存储介质 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108469967B (zh) * | 2017-02-23 | 2021-06-25 | 银联数据服务有限公司 | 一种交易数据处理方法和交易*** |
CN109842672B (zh) * | 2018-12-13 | 2022-11-11 | 平安普惠企业管理有限公司 | 服务请求分发方法、装置、计算机设备及存储介质 |
CN109800035B (zh) * | 2019-01-24 | 2022-11-15 | 博云视觉科技(青岛)有限公司 | 一种算法集成服务框架*** |
CN110990018B (zh) * | 2019-10-29 | 2023-03-24 | 北京全路通信信号研究设计院集团有限公司 | 一种嵌入式***的编译方法及编译*** |
CN111309396B (zh) * | 2020-02-14 | 2023-08-15 | 北京字节跳动网络技术有限公司 | 一种***库的访问方法、装置以及计算机可读存储介质 |
CN111897651B (zh) * | 2020-07-28 | 2024-03-19 | 华中科技大学 | 一种基于标签的内存***资源管理方法 |
CN113094119B (zh) * | 2021-04-28 | 2022-07-12 | 杭州国芯科技股份有限公司 | 一种嵌入式设备程序动态加载方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458629A (zh) * | 2008-12-31 | 2009-06-17 | 北京中星微电子有限公司 | 嵌入式实时操作***中实现动态加载的方法和装置 |
CN101561763A (zh) * | 2009-04-30 | 2009-10-21 | 腾讯科技(北京)有限公司 | 一种实现动态链接库的方法和装置 |
CN103218428A (zh) * | 2013-04-09 | 2013-07-24 | 深圳市九洲电器有限公司 | 一种动态链接方法及*** |
CN103365668A (zh) * | 2012-03-26 | 2013-10-23 | 联想(北京)有限公司 | 一种动态链接库装载和链接的方法、装置 |
US9098316B2 (en) * | 2008-09-22 | 2015-08-04 | International Business Machines Corporation | Routing function calls to specific-function dynamic link libraries in a general-function environment |
-
2015
- 2015-07-28 CN CN201580001186.5A patent/CN107615243B/zh active Active
- 2015-07-28 WO PCT/CN2015/085311 patent/WO2017015856A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9098316B2 (en) * | 2008-09-22 | 2015-08-04 | International Business Machines Corporation | Routing function calls to specific-function dynamic link libraries in a general-function environment |
CN101458629A (zh) * | 2008-12-31 | 2009-06-17 | 北京中星微电子有限公司 | 嵌入式实时操作***中实现动态加载的方法和装置 |
CN101561763A (zh) * | 2009-04-30 | 2009-10-21 | 腾讯科技(北京)有限公司 | 一种实现动态链接库的方法和装置 |
CN103365668A (zh) * | 2012-03-26 | 2013-10-23 | 联想(北京)有限公司 | 一种动态链接库装载和链接的方法、装置 |
CN103218428A (zh) * | 2013-04-09 | 2013-07-24 | 深圳市九洲电器有限公司 | 一种动态链接方法及*** |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021227971A1 (zh) * | 2020-05-15 | 2021-11-18 | 阿里巴巴集团控股有限公司 | 沙箱实现方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107615243A (zh) | 2018-01-19 |
WO2017015856A1 (zh) | 2017-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107615243B (zh) | 一种调用操作***库的方法、装置及*** | |
US8850158B2 (en) | Apparatus for processing remote page fault and method thereof | |
US9075634B2 (en) | Minimizing overhead in resolving operating system symbols | |
CN102667714B (zh) | 支持访问由操作***环境外的资源提供的功能的方法和*** | |
US20090164747A1 (en) | Method,system and apparatus for memory address mapping for sub-socket partitioning | |
US20140237151A1 (en) | Determining a virtual interrupt source number from a physical interrupt source number | |
US11940915B2 (en) | Cache allocation method and device, storage medium, and electronic device | |
US8352948B2 (en) | Method to automatically ReDirect SRB routines to a zIIP eligible enclave | |
CN111694639B (zh) | 进程容器地址的更新方法、装置和电子设备 | |
US8006238B2 (en) | Workload partitioning in a parallel system with hetergeneous alignment constraints | |
US20080244221A1 (en) | Exposing system topology to the execution environment | |
CN111247512B (zh) | 用于统一内存访问的计算机*** | |
US8352947B2 (en) | Method to automatically redirect SRB routines to a zIIP eligible enclave | |
US10901883B2 (en) | Embedded memory management scheme for real-time applications | |
US20160274996A1 (en) | Method to efficiently implement synchronization using software managed address translation | |
CN114911586A (zh) | 任务调度方法、装置及*** | |
US10909044B2 (en) | Access control device, access control method, and recording medium containing access control program | |
CN113867776A (zh) | 中台应用的发布方法、装置、电子设备和存储介质 | |
US11238013B2 (en) | Scalable access to shared files in a distributed system | |
CN110045962A (zh) | 一种支持多语言脚本执行的方法和装置 | |
EP4354284A1 (en) | Scheduling method, apparatus and system, and computing device | |
US9251100B2 (en) | Bitmap locking using a nodal lock | |
US20220197682A1 (en) | Native-image in-memory cache for containerized ahead-of-time applications | |
CN117234607B (zh) | 多核***及其动态模块加载方法、介质和处理器芯片 | |
US20230019465A1 (en) | Dynamic storage in key value solid state drive |
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 |