一种注销内存地址的方法及装置制造方法及图纸

技术编号:19857127 阅读:30 留言:0更新日期:2018-12-22 11:37
本申请公开了一种注销内存地址的方法及装置,包括:确定目标应用程序是否停止运行;若所述目标应用程序已经停止运行,则注销所述目标应用程序在目标设备中注册的内存地址。由此可见,利用本申请实施例提供的技术方案,是通过确定目标应用程序是否停止运行,一旦目标应用程序停止运行,则注销所述目标应用程序在目标设备中注册的内存地址,无需在目标应用程序的应用程序代码中所有可能使得应用程序退出的地方都添加内存地址注销代码,避免了目标应用程序的应用程序代码的代码量非常庞大时,需要添加内存地址注销代码的位置非常多,维护起来非常困难,以及后续版本升级修改时容易忽略和遗漏在其它位置增加内存地址注销代码的工作的问题。

【技术实现步骤摘要】
一种注销内存地址的方法及装置
本申请涉及计算机领域,特别是涉及一种注销内存地址的方法及装置。
技术介绍
目前,计算机可以利用PCI-e(英文:peripheralcomponentinterconnectexpress)设备与其它设备进行数据交互。具体地,安装有Linux操作系统的计算机中的用户空间(英文:userspace)安装的应用程序在运行时,可以与其它设备进行数据交互。随着科学技术的发展,新型的PCI-e设备可以支持直接访问用户空间的内存。具体地,用户空间安装的应用程序例如目标应用程序在运行时,会预先分配内存,以存储目标应用程序运行过程中产生的数据。然后将该预先分配的内存地址注册到PCI-e设备中,当目标应用程序与其它设备进行数据交互,例如,其它设备向目标应用程序发送数据时,PCI-e设备可以直接把其它设备发送的数据写入到预先注册的内存地址对应的内存中。由于Linux操作系统有内存回收机制,当目标应用程序退出(即停止运行)后,Linux操作系统会自动把目标应用程序申请的内存回收回来,以便于在其他应用程序需要时分配给其他应用程序。因此,这就要求目标应用程序在退出时将在PCIe设备中注册的内存地址注销掉。如若不然,当其它设备发送的数据传输进来时,PCIe设备会继续向原来注册的内存地址对应的内存中写数据,如果这块内存被Linux操作系统分配给了其他应用程序,那么这个数据的写入可能会破坏了其他应用程序,引发异常。若要在目标应用程序在退出时将在PCIe设备中注册的内存地址注销掉,可以在目标应用程序的应用程序代码中所有可能使得应用程序退出的地方都添加内存地址注销代码。当这个目标应用程序的应用程序代码的代码量非常庞大时,那么就导致需要添加内存地址注销代码的位置非常多,维护起来非常困难,并且后续版本升级修改时容易忽略和遗漏在其它位置增加内存地址注销代码的工作。因此,需要提供一种方案,可以解决上述问题。
技术实现思路
本申请所要解决的技术问题是如何高效注销内存地址,提供一种注销内存地址的方法及装置。第一方面,本申请实施例提供一种注销内存地址的方法,包括:确定目标应用程序是否停止运行;若所述目标应用程序已停止运行,则注销所述目标应用程序在目标设备中注册的内存地址。可选的,所述目标应用程序停止运行包括:正常停止运行或者异常停止运行;所述确定目标应用程序是否停止运行,包括:利用被登记函数atexit所登记的目标函数确定所述目标应用程序是否正常停止运行;和/或,利用异常停止信号确定所述目标应用程序是否异常停止运行。可选的,所述异常停止信号,通过如下方式生成:响应于应用程序退出命令的执行;和/或,监测到其它使得目标应用程序停止运行的终止信号;和/或,监测到目标应用程序在执行过程中出现错误,并导致目标应用程序停止执行。可选的,所述注销所述目标应用程序在目标设备中注册的内存地址,包括:获取预先定义的内存地址变量的值;若所述内存地址变量的值不是所述内存地址变量的初始值,则注销所述目标应用程序在目标设备中注册的内存地址。可选的,在所述注销所述目标应用程序在目标设备中注册的内存地址之后,还包括:将所述内存地址变量的值修改为所述初始值。可选的,所述方法还包括:当所述目标应用程序向所述目标设备注册内存地址时,将所述内存地址变量的值修改为所述内存地址的值。可选的,所述目标应用程序包括:Linux操作系统的用户空间中的应用程序;所述目标设备包括:支持总线接口PCIExpress的设备。第二方面,本申请实施例提供一种注销内存地址的装置,包括:确定单元,用于确定目标应用程序是否停止运行;注销单元,用于若所述目标应用程序已停止运行,则注销所述目标应用程序在目标设备中注册的内存地址。可选的,所述目标应用程序停止运行包括:正常停止运行或者异常停止运行;所述确定单元,具体用于:利用被登记函数atexit所登记的目标函数确定所述目标应用程序是否正常停止运行;和/或,利用异常停止信号确定所述目标应用程序是否异常停止运行。可选的,所述异常停止信号,通过如下方式生成:响应于应用程序退出命令的执行;和/或,监测到其它用于使得目标应用程序停止运行的终止信号;和/或,监测到目标应用程序在执行过程中出现错误,并导致目标应用程序停止执行。可选的,所述注销单元,具体用于:获取预先定义的内存地址变量的值;若所述内存地址变量的值不是所述内存地址变量的初始值,则注销所述目标应用程序在目标设备中注册的内存地址。可选的,所述装置还包括:第一修改单元,用于将所述内存地址变量的值修改为所述初始值。可选的,所述装置还包括:第二修改单元,用于当所述目标应用程序向所述目标设备注册内存地址时,将所述内存地址变量的值修改为所述内存地址的值。可选的,所述目标应用程序包括:Linux操作系统的用户空间中的应用程序;所述目标设备包括:支持总线接口PCIExpress的设备。与现有技术相比,本申请实施例具有以下优点:本申请实施例提供的注销内存地址的方法及装置,包括:确定目标应用程序是否停止运行;若所述目标应用程序已经停止运行,则注销所述目标应用程序在目标设备中注册的内存地址。由此可见,利用本申请实施例提供的技术方案,是通过确定目标应用程序是否停止运行,一旦目标应用程序停止运行,则注销所述目标应用程序在目标设备中注册的内存地址,无需在目标应用程序的应用程序代码中所有可能使得应用程序退出的地方都添加内存地址注销代码,避免了目标应用程序的应用程序代码的代码量非常庞大时,需要添加内存地址注销代码的位置非常多,维护起来非常困难,以及后续版本升级修改时容易忽略和遗漏在其它位置增加内存地址注销代码的工作的问题。另外,由于目标应用程序停止运行包括正常停止运行和异常停止运行。因此,无论对于目标应用程序的应用程序代码执行完毕使得目标应用程序正常停止运行,还是由于其它原因导致目标应用程序异常停止运行,本申请实施例提供的方案,均可以注销目标应用程序在目标设备中注册的内存地址。这也避免了现有技术中可能出现的目标应用程序异常停止运行时不能正常注销目标应用程序在目标设备中注册的内存地址的问题。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例提供的一种注销内存地址的方法的流程示意图;图2为本申请实施例提供的又一种注销内存地址的方法的流程示意图;图3为本申请实施例提供的一种注销内存地址的装置的结构示意图。具体实施方式为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请的专利技术人经过研究发现,由于Linux操作系统有内存回收机制,当目标应用程序退出(即停止运行)后,Linux操作系统会自动把目标应用程序申请的内存回收回来,以便于在其他应用程序本文档来自技高网
...

【技术保护点】
1.一种注销内存地址的方法,其特征在于,包括:确定目标应用程序是否停止运行;若所述目标应用程序已停止运行,则注销所述目标应用程序在目标设备中注册的内存地址。

【技术特征摘要】
1.一种注销内存地址的方法,其特征在于,包括:确定目标应用程序是否停止运行;若所述目标应用程序已停止运行,则注销所述目标应用程序在目标设备中注册的内存地址。2.根据权利要求1所述的方法,其特征在于,所述目标应用程序停止运行包括:正常停止运行或者异常停止运行;所述确定目标应用程序是否停止运行,包括:利用被登记函数atexit所登记的目标函数确定所述目标应用程序是否正常停止运行;和/或,利用异常停止信号确定所述目标应用程序是否异常停止运行。3.根据权利要求2所述的方法,其特征在于,所述异常停止信号,通过如下方式生成:响应于应用程序退出命令的执行;和/或,监测到其它使得目标应用程序停止运行的终止信号;和/或,监测到目标应用程序在执行过程中出现错误,并导致目标应用程序停止执行。4.根据权利要求1所述的方法,其特征在于,所述注销所述目标应用程序在目标设备中注册的内存地址,包括:获取预先定义的内存地址变量的值;若所述内存地址变量的值不是所述内存地址变量的初始值,则注销所述目标应用程序在目标设备中注册的内存地址。5.根据权利要求4所述的方法,其特征在于,在所述注销所述目标应用程序在目标设备中注册的内存地址之后,还包括:将所述内存地址变量的值修改为所述初始值。6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:当所述目标应用程序向所述目标设备注册内存地址时,将所述内存地址变量的值修改为所述内存地址的值。7.根据权利要求1-5任意一项所述的方法,其特征在于,所述目标应用程序包括:Linux操作系统的用户空间中的应用程序;所述目标设备包括:支持总线接口PCIExpress...

【专利技术属性】
技术研发人员:李美欣
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1