CN107391191B - 一种程序模块动态装载方法 - Google Patents
一种程序模块动态装载方法 Download PDFInfo
- Publication number
- CN107391191B CN107391191B CN201710586197.5A CN201710586197A CN107391191B CN 107391191 B CN107391191 B CN 107391191B CN 201710586197 A CN201710586197 A CN 201710586197A CN 107391191 B CN107391191 B CN 107391191B
- Authority
- CN
- China
- Prior art keywords
- program module
- module
- program
- data
- global variable
- 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
-
- 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
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
本发明提供一种程序模块动态装载方法,其中包括:步骤一、提供编译系统,用于将程序源码编译生成可动态装载的程序模块,程序模块包括二进制代码段和数据段;步骤二、提供动态装载器,动态装载器包括用于将程序模块安装到程序模块存储空间的安装模块,以及用于在运行时将程序模块装载到运行时数据存储空间的装载模块;步骤三、程序模块的二进制代码段,通过运行时数据存储空间中的程序模块序号映射表以及程序模块序号与数据段基地址关系映射表,计算程序源码中的全局变量地址;步骤四、读写并引用全局变量地址对应的全局变量。本发明能够提高动态装载的效率。
Description
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种程序模块动态装载方法。
背景技术
动态装载技术能够使得大型程序调用不属于其可执行代码的函数,更新应用于各个模块,而不会影响该程序的其他部分,从而节约应用程序所需的磁盘和内存空间。目前,动态装载技术在PC机上已经有标准化方法,例如Windows平台的动态链接库(DLL)文件装载技术,以及Linux平台的共享库(SO)文件装载技术。通过运行于对应操作系统上的动态装载器,可以识别、装载、运行这些可动态装载的文件。动态装载器通过读取程序模块中的描述信息,为程序模块分配运行内存,将程序装载到内存中,然后读取程序模块中的重定位信息,根据程序模块实际运行地址将程序进行重定位,最终将程序模块运行起来。
但是,在大部分嵌入式系统中,由于其存储资源有限,一般要求程序的代码段和只读数据段存放在例如Flash的只读掉电存储器中直接执行,同时将可读写的数据段拷贝到RAM中。由于数据段只有在程序模块被装载运行时才能确定其地址,要在嵌入式系统中实现程序模块的动态装载,现有技术中通常在程序模块被装载运行时根据数据段地址对代码段相关指令进行重定位修改,这种与数据段地址有关的动态装载机制对代码段数据访问指令的重定位会导致对掉电存储的修改问题,需要低效率的备份、擦除、合并写入的操作;另外,动态装载机制对代码段数据访问指令的重定位需要额外的存储空间来存放程序模块中携带的重定位信息,增加了装载的空间存储成本。
因此,需要寻求一种更为有效的程序模块动态装载方法,用于实现嵌入式系统的动态装载功能。
发明内容
本发明提供的程序模块动态装载方法,能够针对现有技术的不足,实现效率较高、占用空间较小的程序模块动态装载。
本发明提供一种程序模块动态装载方法,其中包括:
步骤一、提供编译系统,用于将程序源码编译生成可动态装载的程序模块,所述程序模块包括二进制代码段和数据段;
步骤二、提供动态装载器,所述动态装载器包括用于将所述程序模块安装到程序模块存储空间的安装模块,以及用于在运行时将所述程序模块装载到运行时数据存储空间的装载模块;
步骤三、所述程序模块的二进制代码段,通过所述运行时数据存储空间中的程序模块序号映射表以及程序模块序号与数据段基地址关系映射表,计算所述程序源码中的全局变量地址;
步骤四、读写并引用所述全局变量地址对应的全局变量。
可选地,上述程序模块存储空间划分为大小相等的存储块,并以存储块大小对齐的方式存放所述程序模块的二进制代码段和数据段。
可选地,上述装载模块在所述运行时数据存储空间中为所述程序模块分配用于存放运行时数据段的运行时数据存储空间。
可选地,上述程序模块序号映射表中的每个表项对应一个程序模块存储空间中的所述存储块以及所述存储块的存储块索引号。
可选地,上述程序模块序号与数据段基地址关系映射表中的每个表项对应一个运行时数据存储空间中被装载的程序模块以及所述程序模块的程序模块序号。
可选地,上述步骤三包括通过计算式:
ADDRvar=BDATA+OFFSETvar
计算得到所述全局变量地址ADDRvar,其中,BDATA为运行时数据存储空间中的数据段基地址,OFFSETvar为所述全局变量的数据段偏移量。
可选地,上述数据段基地址BDATA从数据段基地址存放地址ADDRDB中得到,所述数据段基地址存放地址ADDRDB通过计算式
ADDRDB=Bdata_table+Imodule×数据段基地址宽度
计算得到,其中,Bdata_table为所述程序模块序号与数据段基地址关系映射表的映射表基地址,Imodule为程序模块序号。
可选地,上述程序模块序号Imodule从程序模块序号存放地址ADDRMI中得到,所述程序模块序号存放地址ADDRMI通过计算式
ADDRMI=Bmodule_index+Iblock×程序模块序号宽度
计算得到,其中,Bmodule_index为所述程序模块序号映射表的基地址,Iblock为所述程序模块存储空间中的存储块索引号。
可选地,上述存储块索引号Iblock通过计算式
Iblock=(PC-Bflash)>>log2(Sblock);
计算得到,其中,PC为程序计数器值,Bflash为所述程序模块存储空间的基地址,Sblock为存储块大小。
可选地,上述程序模块的二进制代码段包括全局变量初始化函数和所述全局变量初始化函数的调用程序,且由所述全局变量初始化函数完成对所述全局变量的应用。
可选地,上述全局变量初始化函数包括将对所述全局变量的引用转换为对其他全局变量的引用。
可选地,上述全局变量初始化函数在所述程序模块被转载到所述运行时数据存储空间时由所述装载模块调用。
本发明提供的程序模块动态装载方法,能够减小嵌入式系统对存储空间的消耗,并且免除重定位时对存储空间进行备份、擦除、合并写入的操作,提高动态装载的效率。
附图说明
图1为本发明一实施例的程序模块动态装载方案总体结构的框架示意图;
图2为本发明一实施例的程序模块存储空间的存储块划分结构示意图;
图3为本发明一实施例的程序模块存储空间与运行时数据存储空间的映射关系示意图;
图4为本发明一实施例的获取全局变量地址的示意图;
图5为本发明一实施例的全局变量初始化的源码中对其他全局变量的引用处理方式示意图;
图6示出了本发明一个实施例的程序模块动态装载方法流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种程序模块动态装载方法,通过编译系统和动态装载器配合实现。图1示出了本发明提供的程序模块动态装载方案整体结构示意图。如图所示,程序模块动态装载方案包括源代码1、编译系统2、程序模块3、动态装载器4。其中,源代码1经过编译系统2被翻译生成程序模块3,具体的,程序模块3是可以动态装载的,特别的,程序模块3包括二进制代码段和数据段。动态装载器运行在系统设备的操作系统(Operation System,OS)上。具体的,动态装载器由安装模块5和装载模块6组成。特别的,安装模块用于将程序模块3安装到程序模块存储空间9(图1未示出),装载模块6用于运行时将程序模块3装载到运行时的数据存储空间14(图1未示出)。进一步的,装载模块6还用于维护两个映射表,分别是程序模块序号映射表7和程序模块序号与数据段基地址关系映射表8,并且通过程序模块序号映射表7和程序模块序号与数据段基地址关系映射表8来记录程序模块运行时的数据段基地址BDATA。
图2示出了程序模块存储空间9的存储块划分结构示意图。如图所示,安装模块将用于存放程序模块3的存储空间9划分为存储块10,具体的,存储块10的大小相等。特别的,存储块10的大小Sblock定义为2n,存储块10的数量则定义为Nblock。
进一步的,当安装模块5在将程序模块3安装到程序模块存储空间9时,在存储模块存储空间9中为程序模块3分配存储空间11。具体的,存储空间11由若干存储块10构成,用于存放程序模块3的二进制代码段和数据段。具体的,安装模块5按照存储块大小Sblock对齐的方式在程序模块存储空间9中为被安装的程序模块分配存储空间11。进一步的,程序模块存储空间9从低地址向高地址排列存储块10,正给程序模块存储空间9在低地址处具有程序模块存储空间基地址Bflash,存储块10具有从低地址向高地址顺次排列的存储块索引号Iblock,每个存储块10的基地址定义为ADDRblock。进一步的,安装模块5会记录在程序模块存储空间9中分配的程序模块3的存储空间11的程序模块基地址BCODE,以及在程序模块3的存储空间11中的存储块数量Nblock_module。
图3为本发明一实施例的程序模块存储空间与运行时数据存储空间的映射关系示意图。如图所示,装载模块6定义系统能够同时装载的程序模块3的最大数量为Nmodule,并在装载程序模块时,为每个被装载的程序模块分配一个未被使用的程序模块序号Imodule。具体的,未被使用的程序模块序号Imodule应当小于由装载模块6定义的系统能够同时装载的程序模块3的最大数量,即0≤Imodule<Nmodule。
进一步的,装载模块6在装载程序模块3时,在运行时数据存储空间14中为程序模块3分配运行时数据段15的存储空间用于存放程序模块3的运行时数据段SDATA。并且,通过由装载模块6维护的两个映射表:程序模块序号映射表7和程序模块序号与数据段基地址关系映射表8记录程序模块3运行时在存储空间中的数据段基地址BDATA。
一方面的,由装载模块6维护的两个映射表中的程序模块序号映射表7是全局映射表,程序模块序号映射表7的基地址为Bmodule_index。具体的,在程序模块序号映射表7中,每个表项对应一个程序模块存储空间9中的存储块10,程序模块序号映射表7的表项数量和存储块10的数量Nblock一致。
特别的,装载模块6在装载程序模块3时,将程序模块序号Imodule写入到程序模块序号映射表7中的对应表项,写入的表项数量和程序模块3在程序模块存储空间9中的存储空间11中占用的存储块数量Nblock_module一致,写入每个表项的索引号和程序模块3在程序模块存储空间9中所占用的对应存储块索引号Iblock一致。
进一步的,程序模块3在程序模块存储空间9中所占用的对应存储块索引号Iblock可以通过程序模块3所占用的每个存储块10的基地址ADDRblock、存储块10的大小Sblock和程序模块存储空间基地址Bflash计算得到,即Iblock=(ADDRblock-Bflash)>>log2(Sblock)。
另一方面的,由装载模块6维护的两个映射表中的程序模块序号与数据段基地址关系映射表8是全局映射表。具体的,该程序模块序号与数据段基地址关系映射表8的映射表基地址为Bdata_table。具体的,该映射表8的表项数量和装载模块6定义系统能够同时装载的程序模块3的最大数量为Nmodule一致。具体的,映射表8中的每个表项对应一个被装载的程序模块。
特别的,装载模块6在装载程序模块时,将程序模块运行时数据段基地址BDATA写入到程序模块序号与数据段基地址关系映射表8中的对应表项,写入的表项索引号和该程序模块对应的程序模块序号Imodule一致。
由此,编译系统2在将程序源码1翻译生成可动态装载的程序模块3时,可以将程序源码1的函数中对全局变量的引用翻译为用来获取全局变量地址ADDRvar的二进制代码片段,从而使得程序源码1对全局变量的访问能够与执行时程序模块代码段位置和程序模块运行时数据段SDATA的装载位置无关。
优选的,用来获取全局变量地址ADDRvar的二进制代码片段可以通过如下方式获得:
第一步,计算当前执行指令在程序模块存储空间9中的存储块索引号Iblock,计算方法为Iblock=(PC-Bflash)>>log2(Sblock);其中PC为程序计数器值,Bflash为程序模块存储空间基地址,Sblock为存储块10的大小。
第二步,计算程序模块序号Imodule的存放地址ADDRMI,计算方法为ADDRMI=Bmodule_index+Iblock×程序模块序号宽度,其中Bmodule_index为程序模块序号映射表7的基地址,Iblock为程序模块存储空间9中的存储块索引号。进一步的,获得程序模块序号Imodule的存放地址ADDRMI对应的程序模块序号Imodule。
第三步,计算程序模块数据段基地址存放地址ADDRDB,计算方法为ADDRDB=Bdata_table+Imodule×数据段基地址宽度,其中,Bdata_table为程序模块序号与数据段基地址关系映射表8的映射表基地址,Imodule为程序模块序号。进一步的,获得数据段基地址存放地址ADDRDB对应的数据段基地址BDATA;
第四步,计算该全局变量地址ADDRvar,计算方法为ADDRvar=BDATA+OFFSETvar,其中,BDATA为运行时数据存储空间14中的数据段基地址,OFFSETvar为由编译系统2在翻译生成可动态装载的程序模块3时根据全局变量在数据段中的位置计算所得的偏移量。进一步的,获得全局变量地址ADDRvar对应的该全局变量并进行读写。
图4示出了本发明一实施例的获取全局变量地址的示意图。如图4所示,在程序模块存储空间9中存储有程序数据段13,程序数据段13具有偏移量OFFSETvar。具体的,该偏移量OFFSETvar由编译系统2在翻译生成可动态装载的程序模块3时根据全局变量在数据段中的位置计算所得。当程序模块被装载到运行时数据存储空间14中成为运行时数据段15时,仍然保留该偏移量OFFSETvar,即运行时数据段15的基地址为BDATA与全局变量地址ADDRvar之间具有偏移量OFFSETvar,因此,全局变量地址ADDRvar的计算方法为ADDRvar=BDATA+OFFSETvar。
图5为本发明一实施例的全局变量初始化的源码中对其他全局变量的引用处理方式示意图。如图所示,编译系统2在将程序源码1翻译生成可动态装载的程序模块3时,对全局变量Vm进行初始化的源码中引用了其他全局变量Vn,该引用19通过一个全局变量初始化函数20和对该全局变量初始化函数的调用程序片段21转换为函数对全局变量Vm和Vn的引用。全局变量初始化函数按照上述二进制代码片段负责获得程序源码1中引用的全局变量地址ADDRvar的方法来完成对全局变量Vm和Vn的引用。全局变量初始化函数在程序模块3被装载到运行时数据存储空间14时由装载模块6调用。
图6示出了本发明一个实施例的程序模块动态装载方法流程图。如图所示,S61表示提供编译系统,用于将程序源码编译生成可动态装载的程序模块,程序模块包括二进制代码段和数据段;S62表示提供动态装载器,动态装载器包括用于将程序模块安装到程序模块存储空间的安装模块,以及用于在运行时将程序模块装载到运行时数据存储空间的装载模块;S63表示程序模块的二进制代码段通过运行时数据存储空间中的程序模块序号映射表以及程序模块序号与数据段基地址关系映射表计算程序源码中的全局变量地址;S64表示读写并引用所述全局变量地址对应的全局变量。
本发明提供的程序模块动态装载方法,使得动态装载的程序模块不需要携带重定位信息,能够减小嵌入式系统对存储空间的消耗。另外,本发明的程序模块装载时不需要进行重定位,免除了重定位时对存储空间进行备份、擦除、合并写入的操作,能够提高动态装载的效率。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (8)
1.一种程序模块动态装载方法,其特征在于,包括:
步骤一、提供编译系统,用于将程序源码编译生成可动态装载的程序模块,所述程序模块包括二进制代码段和数据段;
步骤二、提供动态装载器,所述动态装载器包括用于将所述程序模块安装到程序模块存储空间的安装模块,以及用于在运行时将所述程序模块装载到运行时数据存储空间的装载模块;
步骤三、所述程序模块的二进制代码段,通过所述运行时数据存储空间中的程序模块序号映射表以及程序模块序号与数据段基地址关系映射表,计算所述程序源码中的全局变量地址;
步骤四、读写并引用所述全局变量地址对应的全局变量;
其中,所述步骤三还包括通过计算式,ADDRvar=BDATA+OFFSETvar,计算得到所述全局变量地址ADDRvar,式中,BDATA为运行时数据存储空间中的数据段基地址,OFFSETvar为所述全局变量的数据段偏移量,
其中,所述数据段基地址BDATA从数据段基地址存放地址ADDRDB中得到,所述数据段基地址存放地址ADDRDB通过计算式,
ADDRDB=Bdata_table+Imodule×数据段基地址宽度
计算得到,式中,Bdata_table为所述程序模块序号与数据段基地址关系映射表的映射表基地址,Imodule为程序模块序号,
其中,所述程序模块序号Imodule从程序模块序号存放地址ADDRMI中得到,所述程序模块序号存放地址ADDRMI通过计算式,
ADDRMI=Bmodule_index+Iblock×程序模块序号宽度
计算得到,式中,Bmodule_index为所述程序模块序号映射表的基地址,Iblock为所述程序模块存储空间中的存储块索引号,
其中,所述存储块索引号Iblock通过计算式,Iblock=(PC-Bflash)>>log2(Sblock),计算得到,其中,PC为程序计数器值,Bflash为所述程序模块存储空间的基地址,Sblock为存储块大小。
2.根据权利要求1所述的方法,其特征在于,所述程序模块存储空间划分为大小相等的存储块,并以存储块大小对齐的方式存放所述程序模块的二进制代码段和数据段。
3.根据权利要求2所述的方法,其特征在于,所述装载模块在所述运行时数据存储空间中为所述程序模块分配用于存放运行时数据段的运行时数据存储空间。
4.根据权利要求2所述的方法,其特征在于,所述程序模块序号映射表中的每个表项对应一个程序模块存储空间中的所述存储块以及所述存储块的存储块索引号。
5.根据权利要求2所述的方法,其特征在于,所述程序模块序号与数据段基地址关系映射表中的每个表项对应一个运行时数据存储空间中被装载的程序模块以及所述程序模块的程序模块序号。
6.根据权利要求1所述的方法,其特征在于,所述程序模块的二进制代码段包括全局变量初始化函数和所述全局变量初始化函数的调用程序,且由所述全局变量初始化函数完成对所述全局变量的应用。
7.根据权利要求6所述的方法,其特征在于,所述全局变量初始化函数包括将对所述全局变量的引用转换为对其他全局变量的引用。
8.根据权利要求6所述的方法,其特征在于,所述全局变量初始化函数在所述程序模块被转载到所述运行时数据存储空间时由所述装载模块调用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710586197.5A CN107391191B (zh) | 2017-07-18 | 2017-07-18 | 一种程序模块动态装载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710586197.5A CN107391191B (zh) | 2017-07-18 | 2017-07-18 | 一种程序模块动态装载方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391191A CN107391191A (zh) | 2017-11-24 |
CN107391191B true CN107391191B (zh) | 2020-10-13 |
Family
ID=60339877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710586197.5A Active CN107391191B (zh) | 2017-07-18 | 2017-07-18 | 一种程序模块动态装载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391191B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902001B (zh) * | 2019-02-12 | 2022-06-07 | 科华恒盛股份有限公司 | 对未初始化变量的检测方法及终端设备 |
CN112559064A (zh) * | 2019-09-24 | 2021-03-26 | 中兴通讯股份有限公司 | 一种启动动态链接程序的方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5375241A (en) * | 1992-12-21 | 1994-12-20 | Microsoft Corporation | Method and system for dynamic-link library |
CN101165648A (zh) * | 2006-10-16 | 2008-04-23 | 中兴通讯股份有限公司 | 一种构造中间库的方法 |
CN101763273A (zh) * | 2008-12-26 | 2010-06-30 | 上海闻泰电子科技有限公司 | 一种在嵌入式系统的扩展存储器中动态装入代码的方法 |
CN102147743A (zh) * | 2011-03-28 | 2011-08-10 | 博视联(苏州)信息科技有限公司 | 加快嵌入式系统应用程序启动速度的方法 |
JP2013041546A (ja) * | 2011-08-19 | 2013-02-28 | Fujitsu Ltd | デバッグ支援プログラム、デバッグ支援方法及びデバッグ支援システム |
CN103744709A (zh) * | 2014-01-23 | 2014-04-23 | 华为技术有限公司 | 补丁加载方法及装置 |
CN106681828A (zh) * | 2016-12-09 | 2017-05-17 | 北京奇虎科技有限公司 | 一种加固安卓安装包的动态链接库so文件的方法和装置 |
-
2017
- 2017-07-18 CN CN201710586197.5A patent/CN107391191B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5375241A (en) * | 1992-12-21 | 1994-12-20 | Microsoft Corporation | Method and system for dynamic-link library |
CN101165648A (zh) * | 2006-10-16 | 2008-04-23 | 中兴通讯股份有限公司 | 一种构造中间库的方法 |
CN101763273A (zh) * | 2008-12-26 | 2010-06-30 | 上海闻泰电子科技有限公司 | 一种在嵌入式系统的扩展存储器中动态装入代码的方法 |
CN102147743A (zh) * | 2011-03-28 | 2011-08-10 | 博视联(苏州)信息科技有限公司 | 加快嵌入式系统应用程序启动速度的方法 |
JP2013041546A (ja) * | 2011-08-19 | 2013-02-28 | Fujitsu Ltd | デバッグ支援プログラム、デバッグ支援方法及びデバッグ支援システム |
CN103744709A (zh) * | 2014-01-23 | 2014-04-23 | 华为技术有限公司 | 补丁加载方法及装置 |
CN106681828A (zh) * | 2016-12-09 | 2017-05-17 | 北京奇虎科技有限公司 | 一种加固安卓安装包的动态链接库so文件的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107391191A (zh) | 2017-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8566372B2 (en) | Method and device for dynamically loading relocatable file | |
KR100518584B1 (ko) | 공유 라이브러리 시스템 및 상기 시스템 구축 방법 | |
US8453015B2 (en) | Memory allocation for crash dump | |
RU2509347C2 (ru) | Гибкое увеличение страниц памяти | |
US9563446B2 (en) | Binary file generation | |
US7500077B2 (en) | Use of region-oriented memory profiling to detect heap fragmentation and sparse memory utilization | |
KR101059633B1 (ko) | 멀티태스킹 가상 머신을 위한 힙 구성 | |
US20090307292A1 (en) | Dynamically changing a garbage collector in a managed runtime system | |
US9971703B2 (en) | Technologies for position-independent persistent memory pointers | |
US10261918B2 (en) | Process running method and apparatus | |
US20180276120A1 (en) | Manual memory management using lazy patching | |
CN107391190B (zh) | 一种程序模块动态装载方法 | |
CN101668283A (zh) | 一种手机嵌入式系统中动态加载的方法 | |
US8806146B2 (en) | Method and system to accelerate address translation | |
CN107391191B (zh) | 一种程序模块动态装载方法 | |
CN101763273A (zh) | 一种在嵌入式系统的扩展存储器中动态装入代码的方法 | |
US20040015850A1 (en) | Specialized heaps for creation of objects in object-oriented environments | |
US6782446B2 (en) | Method to prevent corruption of page tables during flash EEPROM programming | |
CN112860381B (zh) | 基于申威处理器的虚拟机内存扩容方法及系统 | |
CN109240702B (zh) | 一种多线程模式下的快速段式编址配置和访问方法 | |
CN105653478A (zh) | 串行闪存控制器、串行闪存控制方法及串行闪存控制系统 | |
KR100478463B1 (ko) | 응용 프로그램의 동적링크 방법 | |
CN115827364A (zh) | 安卓平台中Native内存监控方法 | |
KR100727627B1 (ko) | 동적링킹 라이브러리를 사용하는 어플리케이션을 지원하는방법 및 이를 이용한 시스템 | |
KR100884926B1 (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 |