一种多进程共享数据的方法和装置的制造方法_3

文档序号:8905140阅读:来源:国知局
第二文件中调整自定义段的初始大小为页大小的整数倍,然后设置一个变量,并赋予该变量的值为调整后的自定义段的初始大小,通过读取该变量获取自定义段的大小。
[0095]较佳的,在自定义段与共享物理内存之间建立映射关系时,处理单元61用于:
[0096]对自定义段的地址和物理共享内存的地址分别执行页对齐操作;
[0097]基于页对齐操作结果,确定自定义段与共享物理内存之间的地址映射。
[0098]较佳的,基于映射关系,在自定义段和共享物理内存之间,实现各个进程之间的共享数据的交互时,共享单元62用于:
[0099]当检测到至少一个进程访问自定义段时,基于映射关系,在共享物理内存中存取共享数据。
[0100]较佳的,共享单元62进一步用于:
[0101]当检测到共享物理内存已被释放时,则解除自定义段与共享物理内存之间的映射关系O
[0102]综上所述,本发明实施例中,将各个进程中的共享数据存入自定义段中,并将该自定义段加载到虚拟地址空间中;获取自定义段的大小,并为共享数据在物理内存中分配一个与自定义段相等大小的共享物理内存,以及在自定义段与共享物理内存之间建立映射关系;基于映射关系,在自定义段和共享物理内存之间,实现各个进程之间的共享数据的交互。这样,通过将共享数据汇聚存放在自定义段中来实现对自定义段的直接共享,避免了采用数据拷贝实现数据共享时导致效率偏低的问题,也避免了采用指针方式实现数据共享时需要修改原始代码导致的灵活性差以及可维护性差的问题。
[0103]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0104]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0105]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0106]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0107]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0108]显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1.一种多进程共享数据的方法,其特征在于,所述方法包括: 将各个进程中的共享数据存入自定义段中,并将所述自定义段加载到虚拟地址空间中; 获取所述自定义段的大小,并为所述共享数据在物理内存中分配与所述自定义段相等大小的共享物理内存,以及在所述自定义段与所述共享物理内存之间建立映射关系; 基于所述映射关系,在所述自定义段和所述共享物理内存之间,实现各个进程之间的共享数据的交互。2.如权利要求1所述的方法,其特征在于,获取所述自定义段的大小,包括: 编译第一文件,形成可执行连接格式ELF文件,通过所述ELF文件获取所述自定义段的初始大小;其中,所述第一文件为所述至少一个进程的源文件; 临时生成第二文件,在所述第二文件中调整所述自定义段的初始大小为页大小的整数倍,然后设置一个变量,并赋予所述变量的值为调整后的自定义段的初始大小,通过读取所述变量获取自定义段的大小。3.如权利要求1或2所述的方法,其特征在于,在所述自定义段与所述共享物理内存之间建立映射关系,包括: 针对所述自定义段的地址和所述物理共享内存的地址分别执行页对齐操作; 基于页对齐操作结果,确定所述自定义段与所述共享物理内存之间的地址映射。4.如权利要求1、2或3所述的方法,其特征在于,基于所述映射关系,在所述自定义段和所述共享物理内存之间,实现各个进程之间的共享数据的交互,包括: 当检测到所述至少一个进程访问所述自定义段时,基于所述映射关系,在所述共享物理内存中存取所述共享数据。5.如权利要求1-4任一项所述的方法,其特征在于,进一步包括: 当检测到所述共享物理内存已被释放时,则解除所述自定义段与所述共享物理内存之间的映射关系。6.一种多进程共享数据的装置,其特征在于,所述装置包括: 加载单元,用于将各个进程中的共享数据存入自定义段中,并将所述自定义段加载到虚拟地址空间中; 处理单元,用于获取所述自定义段的大小,并为所述共享数据在物理内存中分配一个与所述自定义段相等大小的共享物理内存,以及在所述自定义段与所述共享物理内存之间建立映射关系; 共享单元,用于基于所述映射关系,在所述自定义段和所述共享物理内存之间,实现各个进程之间的共享数据的交互。7.如权利要求6所述的装置,其特征在于,获取所述自定义段的大小时,所述处理单元用于: 编译第一文件,形成可执行连接格式ELF文件,通过所述ELF文件获取所述自定义段的初始大小;其中,所述第一文件为所述至少一个进程的源文件; 临时生成第二文件,在所述第二文件中调整所述自定义段的初始大小为页大小的整数倍,然后设置一个变量,并赋予所述变量的值为调整后的自定义段的初始大小,通过读取所述变量获取自定义段的大小。8.如权利要求6或7所述的装置,其特征在于,在所述自定义段与所述共享物理内存之间建立映射关系时,所述处理单元用于: 对所述自定义段的地址和所述物理共享内存的地址分别执行页对齐操作; 基于页对齐操作结果,确定所述自定义段与所述共享物理内存之间的地址映射。9.如权利要求6、7或8所述的装置,其特征在于,基于所述映射关系,在所述自定义段和所述共享物理内存之间,实现各个进程之间的共享数据的交互时,所述共享单元用于: 当检测到所述至少一个进程访问所述自定义段时,基于所述映射关系,在所述共享物理内存中存取所述共享数据。10.如权利要求6-9任一项所述的装置,其特征在于,所述共享单元进一步用于: 当检测到所述共享物理内存已被释放时,则解除所述自定义段与所述共享物理内存之间的映射关系。
【专利摘要】本发明涉及通信领域,公开了一种多进程共享数据的方法和装置,该方案为:将各个进程中的共享数据存入自定义段中,并将该自定义段加载到虚拟地址空间中;获取自定义段的大小,并为共享数据在物理内存中分配一个与自定义段相等大小的共享物理内存,以及在自定义段与共享物理内存之间建立映射关系;基于映射关系,在自定义段和共享物理内存之间,实现各个进程之间的共享数据的交互。这样,通过将共享数据汇聚存放在自定义段中来实现对自定义段的直接共享,避免了采用数据拷贝实现数据共享时导致效率偏低的问题,也避免了采用指针方式实现数据共享时需要修改原始代码导致的灵活性差以及可维护性差的问题。
【IPC分类】G06F9/54
【公开号】CN104881330
【申请号】CN201510266570
【发明人】笪禹
【申请人】大唐移动通信设备有限公司
【公开日】2015年9月2日
【申请日】2015年5月22日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1