应用程序的加载方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:19542702 阅读:19 留言:0更新日期:2018-11-24 20:26
本发明专利技术公开了一种应用程序的加载方法、装置、计算机设备及存储介质,属于计算机技术领域。方法包括:将应用程序映射到内存缓冲区,内存缓冲区的每个比特位的取值为第一数值;将应用程序的重定位表中的重定位地址,映射到内存缓冲区的对应比特位的取值更改为第二数值;在加载应用程序时,当应用程序的地址映射到内存缓冲区的对应比特位的取值为第一数值时,按照地址进行应用程序的加载;当应用程序的地址映射到内存缓冲区的对应比特位的取值为第二数值时,对地址进行重定位后,按照重定位后的地址进行应用程序的加载。本发明专利技术在加载应用程序时,可以快速地判断地址是否需要重定位,耗费的时间大大减少,效率提升明显。

Loading Method, Device, Computer Equipment and Storage Medium of Application Program

The invention discloses a loading method, device, computer equipment and storage medium of an application program, which belongs to the field of computer technology. The methods include: mapping the application to the memory buffer, the value of each bit in the memory buffer is the first value; changing the relocation address in the application's relocation table to the value of the corresponding bit in the memory buffer to the second value; and when loading the application, changing the address of the application to the second value. When the value of the corresponding bit mapped to the memory buffer is the first value, the application is loaded according to the address; when the value of the corresponding bit mapped to the memory buffer is the second value, the address is relocated, and the application is loaded according to the relocated address. When the application program is loaded, the invention can quickly determine whether the address needs to be relocated, the time consumed is greatly reduced, and the efficiency is obviously improved.

【技术实现步骤摘要】
应用程序的加载方法、装置、计算机设备及存储介质
本专利技术涉及计算机
,尤其涉及一种应用程序的加载方法、装置、计算机设备及存储介质。
技术介绍
链接器在生成一个应用程序的可执行文件时,会设置该可执行文件被加载时的默认基地址,应用程序的默认基地址一般被设置为0x00400000h,动态链接库的默认基地址一般被设置为0x10000000。在加载应用程序时,应用程序中的一个动态链接库被加载到内存中时,会被优先加载到默认基地址,如果该动态链接库加载时的默认基地址与其它动态链接库的基地址发生冲突,如该默认基地址已分配给其他动态链接库,则需要对该动态链接库的基地址进行重定位,以实现应用程序的正常加载和运行。目前,在加载应用程序过程中,当判断一个地址是否需要重定位时,需要用到重定位表,重定位表里记录了应用程序的哪些地址需要重定位(重定位地址)以及如何进行重定位的信息。计算机设备可以采用循环查找或者排序查找的方法,循环查找是指枚举重定位表,也即是,将重定位表中所有的重定位地址列出来存储,每判断一个地址是否需要重定位,则循环一次存储了重定位地址的数据结构,如果该地址在该数据结构中,则确定该地址需要重定位,如果该地址不在该数据结构中,则确定该地址不需要重定位。排序查找是指先枚举重定位表,再对重定位表中的重定位地址进行排序,每判断一个地址是否需要重定位,则二分查找一次存储了重定位地址的数据结构。在实现本专利技术的过程中,专利技术人发现相关技术至少存在以下问题:在加载应用程序时,需要枚举重定位表,每判断一个地址是否需要重定位时,则需要查询存储了重定位地址的数据结构,复杂度高,当需要判断的地址很多时,需要耗费较长的时间。
技术实现思路
本专利技术实施例提供了一种应用程序的加载方法、装置、计算机设备及存储介质,可以解决相关技术需要耗费较长的时间的问题。所述技术方案如下:一方面,提供了一种应用程序的加载方法,所述方法包括:将应用程序映射到内存缓冲区,所述应用程序的镜像大小是所述内存缓冲区的大小的预设倍数,所述内存缓冲区的每个比特位的取值为第一数值;将所述应用程序的重定位表中的重定位地址,映射到所述内存缓冲区的对应比特位的取值更改为第二数值,所述重定位地址是指需要重定位的地址;在加载所述应用程序时,当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第一数值时,按照所述地址进行所述应用程序的加载;当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第二数值时,对所述地址进行重定位后,按照重定位后的地址进行所述应用程序的加载。一方面,提供了一种应用程序的加载装置,所述装置包括:映射模块,用于将应用程序映射到内存缓冲区,所述应用程序的镜像大小是所述内存缓冲区的大小的预设倍数,所述内存缓冲区的每个比特位的取值为第一数值;更改模块,用于将所述应用程序的重定位表中的重定位地址,映射到所述内存缓冲区的对应比特位的取值更改为第二数值,所述重定位地址是指需要重定位的地址;加载模块,用于在加载所述应用程序时,当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第一数值时,按照所述地址进行应用程序的加载;所述加载模块还用于当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第二数值时,对所述地址进行重定位后,按照重定位后的地址进行应用程序的加载。一方面,提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由所述处理器加载并执行以实现上述应用程序的加载所执行的操作。一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上述应用程序的加载所执行的操作。本专利技术实施例提供的技术方案带来的有益效果至少包括:通过预先将应用程序映射到较小的内存缓冲区,并根据重定位表中需要重定位的地址,对内存缓冲区的对应比特位的取值进行标记,这样在加载应用程序时,直接找到应用程序的地址在内存缓冲区的对应比特位,即可根据该比特位的取值,快速地判断该地址是否需要重定位,以保证应用程序的正常加载。特别是当判断大量的地址是否需要重定位时,需要耗费的时间大大减少,效率提升明显。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提供的一种应用程序的加载方法的流程图;图2是本专利技术实施例提供的一种将应用程序映射到内存缓冲区的示意图;图3是本专利技术实施例提供的一种数据目标表和重定位表的示意图;图4是本专利技术实施例提供的一种初始化过程的示意图;图5是本专利技术实施例提供的一种确定地址是否需要重定位的示意图;图6是本专利技术实施例提供的一种应用程序的加载装置的结构示意图;图7是本专利技术实施例提供的一种应用程序的加载装置的结构示意图;图8是本专利技术实施例提供的一种计算机设备800的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。图1是本专利技术实施例提供的一种应用程序的加载方法的流程图。该方法由计算机设备执行,参见图1,该方法包括:101、将应用程序映射到内存缓冲区,该应用程序的镜像大小是该内存缓冲区的大小的预设倍数,该内存缓冲区的每个比特位的取值为第一数值。其中,应用程序的镜像大小(image_size)是指应用程序正常映射到内存后的大小。本专利技术实施例中,计算机设备可以对应用程序进行缩放,将应用程序映射到一个比应用程序的镜像大小更小的内存缓冲区(buffer)中,并且将该内存缓冲区的内容全部初始化为第一数值。例如,第一数值可以是0,预设倍数可以是8,计算机设备将应用程序映射到一个镜像大小/8的内存缓冲区中,也即是,用一个比特位(bit)来代替应用程序的一个字节(byte)。在一种可能实现方式中,计算机设备将应用程序映射到内存缓冲区之前,可以获取该应用程序的镜像大小,根据应用程序的镜像大小,在内存中为应用程序分配该内存缓冲区;将内存缓冲区的每个比特位的取值初始化为第一数值。通过预先为应用程序分配一个比其镜像大小更小的内存缓冲区,使得计算机设备可以将应用程序映射到该内存缓冲区,并对该内存缓冲区的比特位进行设置。参见图2,提供了一种将应用程序映射到内存缓冲区的示意图,如图2所示,假设应用程序的镜像大小为n,则内存缓冲区大小为n/8,起始位置为缓冲区位置。102、将该应用程序的重定位表中的重定位地址,映射到该内存缓冲区的对应比特位的取值更改为第二数值,该重定位地址是指需要重定位的地址。本专利技术实施例中,计算机设备在将应用程序映射到内存缓冲区时,还可以将重定位表中的重定位地址在内存缓冲区中进行标记。在一种可能实现方式中,计算机设备可以先解析该应用程序的该重定位表,得到重定位地址,该重定位地址可以是一个或多个。进一步地,计算机设备可以将该重定位地址除以该预设倍数,确定该重定位地址映射本文档来自技高网
...

【技术保护点】
1.一种应用程序的加载方法,其特征在于,所述方法包括:将应用程序映射到内存缓冲区,所述应用程序的镜像大小是所述内存缓冲区的大小的预设倍数,所述内存缓冲区的每个比特位的取值为第一数值;将所述应用程序的重定位表中的重定位地址,映射到所述内存缓冲区的对应比特位的取值更改为第二数值,所述重定位地址是指需要重定位的地址;在加载所述应用程序时,当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第一数值时,按照所述地址进行所述应用程序的加载;当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第二数值时,对所述地址进行重定位后,按照重定位后的地址进行所述应用程序的加载。

【技术特征摘要】
1.一种应用程序的加载方法,其特征在于,所述方法包括:将应用程序映射到内存缓冲区,所述应用程序的镜像大小是所述内存缓冲区的大小的预设倍数,所述内存缓冲区的每个比特位的取值为第一数值;将所述应用程序的重定位表中的重定位地址,映射到所述内存缓冲区的对应比特位的取值更改为第二数值,所述重定位地址是指需要重定位的地址;在加载所述应用程序时,当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第一数值时,按照所述地址进行所述应用程序的加载;当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第二数值时,对所述地址进行重定位后,按照重定位后的地址进行所述应用程序的加载。2.根据权利要求1所述的方法,其特征在于,所述将所述应用程序的重定位表中的重定位地址,映射到所述内存缓冲区的对应比特位的取值更改为第二数值,包括:将所述重定位地址除以所述预设倍数,确定所述重定位地址映射到所述内存缓冲区的对应比特位;将所述重定位地址的对应比特位的取值从所述第一数值更改为所述第二数值。3.根据权利要求1所述的方法,其特征在于,所述当所述应用程序的地址映射到所述内存缓冲区的对应比特位的取值为所述第一数值时,按照所述地址进行所述应用程序的加载,包括:将所述地址除以所述预设倍数,确定所述地址映射到所述内存缓冲区的对应比特位;当所述地址的对应比特位的取值为所述第一数值时,按照所述地址进行所述应用程序的加载。4.根据权利要求1所述的方法,其特征在于,所述将应用程序映射到内存缓冲区之前,所述方法还包括:获取所述应用程序的镜像大小;根据所述应用程序的镜像大小,在内存中为所述应用程序分配所述内存缓冲区;将所述内存缓冲区的每个比特位的取值初始化为所述第一数值。5.根据权利要求1所述的方法,其特征在于,所述将所述应用程序的重定位表中的重定位地址,映射到所述内存缓冲区的对应比特位的取值更改为第二数值之前,所述方法还包括:解析所述应用程序的所述重定位表,得到所述重定位地址。6.一种应用程序的加载装置,其特征在于,所述装置包括:映射模块,用于将应用程序映射到内存缓冲区,所述应用程序的镜像大...

【专利技术属性】
技术研发人员:陈小虎
申请(专利权)人:深圳市腾讯网络信息技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1