CN104881330B - 一种多进程共享数据的方法和装置 - Google Patents
一种多进程共享数据的方法和装置 Download PDFInfo
- Publication number
- CN104881330B CN104881330B CN201510266570.XA CN201510266570A CN104881330B CN 104881330 B CN104881330 B CN 104881330B CN 201510266570 A CN201510266570 A CN 201510266570A CN 104881330 B CN104881330 B CN 104881330B
- Authority
- CN
- China
- Prior art keywords
- self
- defined section
- shared
- physical memory
- size
- 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
Abstract
本发明涉及通信领域,公开了一种多进程共享数据的方法和装置,该方案为:将各个进程中的共享数据存入自定义段中,并将该自定义段加载到虚拟地址空间中;获取自定义段的大小,并为共享数据在物理内存中分配一个与自定义段相等大小的共享物理内存,以及在自定义段与共享物理内存之间建立映射关系;基于映射关系,在自定义段和共享物理内存之间,实现各个进程之间的共享数据的交互。这样,通过将共享数据汇聚存放在自定义段中来实现对自定义段的直接共享,避免了采用数据拷贝实现数据共享时导致效率偏低的问题,也避免了采用指针方式实现数据共享时需要修改原始代码导致的灵活性差以及可维护性差的问题。
Description
技术领域
本发明涉及通信领域,尤其涉及一种多进程共享数据的方法和装置。
背景技术
在多核对称多处理机(Symmetrical Multi-Processing,SMP)系统,尤其是需要有较高隔离度和可靠性的系统中,多进程是典型的软件模型,多进程之间地址空间隔离,进程拥有自己私有的数据区域,这样,进程相互之间互不干扰,而且异常后能有效隔离故障,并恢复系统正常运行。
在大容量并行处理的系统上,多进程实例是典型的并发设计模型,多进程实例是指多个进程运行完全相同的程序代码,并且将不同实例亲和到不同的中央处理器(CentralProcessing Unit,CPU)核上以充分发挥并发的性能优势。多进程实例可以实现在多实例之间完全隔离,互不干扰。但是,多进程实例往往不可避免需要共享数据,例如共享全局控制变量、共享内存池等。在共享数据时通常的实现方式有两种:
第一种方法:第一个进程实例(以下称为主进程)通过操作系统接口获取一段共享内存;主进程将共享内存映射到自己的地址空间;其余进程调用操作系统接口将共享内存分别映射到本进程的地址空间;各进程通过将数据拷贝到共享内存进行交互数据,参阅图1所示。
然而,这种方法如果需要进程间共享变量和缓冲区,第一个进程实例需要将数据拷贝到共享内存区域,其他进程实例需要从共享内存提取数据,由于此过程涉及数据拷贝,在大数据共享时效率很低。
例如,假设用户代码中有一个全局变量g_ControlCb表示全局控制结构,当运行多进程实例时,由于用户代码的复用性,每个进程中都存在一个全局变量g_ControlCb,每次当一个进程修改了全局变量g_ControlCb后,将这个全局变量整体拷贝到共享内存区域(假设地址为pShareDataAddr),然后采用某种机制通知其它进程这个全局数据已经发生修改,当其它进程检测到全局变量修改后,再从pShareDataAddr将全局数据拷贝回g_ControlCb,这样两边的进程仍然能直接使用g_ControlCb这个全局变量,但是修改、通知、同步机制较为复杂。
第二种方法:第一个进程实例(以下称为主进程)通过操作系统接口获取一段共享内存;主进程将共享内存映射到自己的地址空间;其余进程调用操作系统接口将共享内存分别映射到本进程的地址空间;各进程通过指针访问的方式来共享内存进行交互数据,参阅图2所示。
然而,通过指针方式来存取共享内存的方式需要对原始代码进行改造,将需要共享的全局变量全部替换为指针,代码兼容性较差。
例如,假设用户代码中有一个全局变量g_ControlCb表示全局控制结构,当运行多进程实例时,由于用户代码的复用性,每个进程中都存在一个全局变量g_ControlCb,修改所有的代码,放弃直接使用g_ControlCb,当需要访问共享控制数据g_ControlCb时,改为直接使用共享内存pShareDataAddr,这种修改对代码结构影响较大,并且需要人为维护全局变量在共享内存中的地址关系。
发明内容
本发明实施例提供了一种多进程共享数据的方法和装置,用以解决在数据共享的过程中,由于采用数据拷贝导致效率偏低的问题,以及采用指针方式时需要修改原始代码导致的灵活性差以及可维护性差的问题,
本发明实施例提供的具体技术方案如下:
一种多进程共享数据的方法,包括:
将各个进程中的共享数据存入自定义段中,并将所述自定义段加载到虚拟地址空间中;
获取所述自定义段的大小,并为所述共享数据在物理内存中分配一个与所述自定义段相等大小的共享物理内存,以及在所述自定义段与所述共享物理内存之间建立映射关系;
基于所述映射关系,在所述自定义段和所述共享物理内存之间,实现各个进程之间的共享数据的交互。
这样,通过将共享数据汇聚存放在自定义段中来实现对自定义段的直接共享,避免了采用数据拷贝实现数据共享时导致效率偏低的问题,也避免了采用指针方式实现数据共享时需要修改原始代码导致的灵活性差以及可维护性差的问题。
较佳的,获取所述自定义段的大小,包括:
编译第一文件,形成可执行连接格式ELF文件,通过所述ELF文件获取所述自定义段的初始大小;其中,所述第一文件为所述至少一个进程的源文件;
临时生成第二文件,在所述第二文件中调整所述自定义段的初始大小为页大小的整数倍,然后设置一个变量,并赋予所述变量的值为调整后的自定义段的初始大小,通过读取所述变量获取自定义段的大小。
较佳的,在所述自定义段与所述共享物理内存之间建立映射关系,包括:
针对所述自定义段的地址和所述共享物理内存的地址分别执行页对齐操作;
基于页对齐操作结果,确定所述自定义段与所述共享物理内存之间的地址映射。
较佳的,基于所述映射关系,在所述自定义段和所述共享物理内存之间,实现各个进程之间的共享数据的交互,包括:
当检测到所述至少一个进程访问所述自定义段时,基于所述映射关系,在所述共享物理内存中存取所述共享数据。
较佳的,进一步包括:
当检测到所述共享物理内存已被释放时,则解除所述自定义段与所述共享物理内存之间的映射关系。
一种多进程共享数据的装置,包括:
加载单元,用于将各个进程中的共享数据存入自定义段中,并将所述自定义段加载到虚拟地址空间中;
处理单元,用于获取所述自定义段的大小,并为所述共享数据在物理内存中分配一个与所述自定义段相等大小的共享物理内存,以及在所述自定义段与所述共享物理内存之间建立映射关系;
共享单元,用于基于所述映射关系,在所述自定义段和所述共享物理内存之间,实现各个进程之间的共享数据的交互。
这样,通过将共享数据汇聚存放在自定义段中来实现对自定义段的直接共享,避免了采用数据拷贝实现数据共享时导致效率偏低的问题,也避免了采用指针方式实现数据共享时需要修改原始代码导致的灵活性差以及可维护性差的问题。
较佳的,获取所述自定义段的大小时,所述处理单元用于:
编译第一文件,形成可执行连接格式ELF文件,通过所述ELF文件获取所述自定义段的初始大小;其中,所述第一文件为所述至少一个进程的源文件;
临时生成第二文件,在所述第二文件中调整所述自定义段的初始大小为页大小的整数倍,然后设置一个变量,并赋予所述变量的值为调整后的自定义段的初始大小,通过读取所述变量获取自定义段的大小。
较佳的,在所述自定义段与所述共享物理内存之间建立映射关系时,所述处理单元用于:
针对所述自定义段的地址和所述共享物理内存的地址分别执行页对齐操作;
基于页对齐操作结果,确定所述自定义段与所述共享物理内存之间的地址映射。
较佳的,基于所述映射关系,在所述自定义段和所述共享物理内存之间,实现各个进程之间的共享数据的交互时,所述共享单元用于:
当检测到所述至少一个进程访问所述自定义段时,基于所述映射关系,在所述共享物理内存中存取所述共享数据。
较佳的,所述共享单元进一步用于:
当检测到所述共享物理内存已被释放时,则解除所述自定义段与所述共享物理内存之间的映射关系。
附图说明
图1为现有技术下采用数据拷贝方式进行多进程数据共享的结构示意图;
图2为现有技术下采用数据拷贝方式进行多进程数据共享的结构示意图;
图3为本发明实施例中多进程数据共享的具体流程示意图;
图4为本发明实施例中多进程数据共享的自定义段的结构示意图;
图5为本发明实施例中三进程数据共享的具体流程示意图;
图6为本发明实施例中多进程数据共享的装置的结构示意图。
具体实施方式
为了避免在数据共享的过程中,由于采用数据拷贝导致效率偏低的问题,以及采用指针方式时需要修改原始代码导致的灵活性差以及可维护性差的问题,本发明实施例中,通过在虚拟地址空间中设置的自定义段与共享物理内存之间建立的映射关系,基于该映射关系,在自定义段和共享物理内存之间,实现各个进程之间的共享数据的交互。
下面结合附图对本发明优选的实施方式进行详细说明。
参阅图3所示,本发明实施例中,多进程共享数据的具体流程如下:
步骤300:将各个进程中的共享数据存入自定义段中,并将该自定义段加载到虚拟地址空间中。
本发明实施例中,在执行步骤300时,将共享数据在编译阶段全部放置在用户自定义段中,参阅图4所示。
例如:共享数据为全局变量g_ControlCb,将该全局变量放置在自定义user_share_section中,可以进行如下定义:
TYPE g_ControlCb__attribute__(section(“user_share_section”));
其中,TYPE为g_ControlCb的具体类型定义。
用户将所有需要共享的全局变量按照这种方式定义,编译器编译完成后将全局变量放入指定的自定义段中,然后将该自定义段加载到虚拟地址空间中,这里的虚拟地址空间一般是指用户空间。
步骤310:获取自定义段的大小,并为共享数据在物理内存中分配一个与自定义段相等大小的共享物理内存,以及在自定义段与共享物理内存之间建立映射关系。
本发明实施例中,在执行步骤110时,获取自定义段的步骤如下:首先,编译第一文件,形成可执行连接格式(Executable and linking Format,ELF)文件,通过ELF文件获取自定义段的初始大小;其中,第一文件为至少一个进程的源文件;
例如:获取ELF文件中user_share_section的section的大小,并记为user_share_section_size。
然后,临时生成第二文件,在该第二文件中调整自定义段的初始大小为页大小的整数倍,然后设置一个变量,并赋予该变量的值为调整后的自定义段的初始大小,通过读取该变量获取自定义段的大小。
例如:第二文件中定义一个全局变量g_user_share_section_size,将全局变量赋值为自定义section的大小:g_user_share_section_size=user_share_section_size。从而获得自定义段的大小。
基于自定义段的大小,在分配共享物理内存时,可以如下定义:
shmid=shmget(shm_key,shm_size,shm_flag),其中,shm_size是共享物理内存大小,也就是g_user_share_section_size的大小。
进一步地,对自定义段的地址和共享物理内存的地址分别执行页对齐操作;基于页对齐操作结果,确定自定义段与共享物理内存之间的地址映射
例如:在系统框架代码中定义:
Int g_user_share_section_first_var__attribute__((section(“user_share_section”),aligned(PAGE_SIZE)));
为了保证这个全局变量出现在自定义段user_share_section的第一个位置上,需要在makefile中让框架代码第一个被编译和链接。
因此,Shmat(shmid,shm_addr,shm_flag)中的shm_addr就是g_user_share_section_first_var在共享物理内存中的地址,并且是页对其的。
步骤320:基于映射关系,在自定义段和共享物理内存之间,实现各个进程之间的共享数据的交互。
本发明实施例中,在执行步骤320时,当检测到至少一个进程访问自定义段时,基于映射关系,在共享物理内存中存取共享数据。
例如:A、B和C三个进程之间实现数据共享,假如共享数据为A进程中的部分数据,基于已经建立好的映射关系,B进程和C进程可以通过访问自定义段的地址读取到共享数据,此时如共享数据为B进程的共享数据,可以通过访问自定义段的地址写入共享物理内存中。
此外,当检测到共享物理内存已被释放时,则解除自定义段与共享物理内存之间的映射关系。
基于上述实施例,下面结合一个具体的应用场景对上述实施例作出进一步详细的说明。
假设一共有三个进程,分别为A、B和C,第一个启动的进程为A,随后分别启动进程B和C,参阅图5所示。
步骤500:将各个进程中的共享数据放入自定义段中,并将该自定义段加载到虚拟地址空间中。
具体的,应用程序开发阶段,通过编译手段将需要共享的变量或数据放置到自定义段user_share_section中。
步骤501:A进程启动,获取当前进程自定义段首地址a_section_addr和自定义段大小g_user_share_size。
具体的,在获取自定义段的大小时,通过在编译的user_share_section中,将user_share_section调整到页大小的整数倍,然后通过变量g_user_share_size指示自定义段大小。
步骤502:A进程创建共享物理内存phy_share_mem。
步骤503:A进程完成a_section_addr和phy_share_mem之间的映射关系。
步骤504:B进程启动,获取当前进程自定义段首地址b_section_addr和自定义段大小g_user_share_size。
步骤505:B进程获取A进程创建的共享物理内存phy_share_mem。
步骤506:B进程完成b_section_addr和phy_share_mem之间的映射关系。
步骤507:C进程启动,获取当前进程自定义段首地址c_section_addr和自定义段大小g_user_share_size。
步骤508:C进程获取A进程创建的共享物理内存phy_share_mem。
步骤509:C进程完成c_section_addr和phy_share_mem之间的映射关系。
步骤510:A、B和C进程可以分别通过访问a_section_addr、b_section_addr、c_section_addr中的共享变量或数据直接进行通信。
基于上述实施例,参阅图6所示,本发明实施例中,一种多进程共享数据的装置包括:加载单元60、处理单元61和共享单元62,其中,
加载单元60,用于将各个进程中的共享数据存入自定义段中,并将自定义段加载到虚拟地址空间中;
处理单元61,用于获取自定义段的大小,并为共享数据在物理内存中分配一个与自定义段相等大小的共享物理内存,以及在自定义段与共享物理内存之间建立映射关系;
共享单元62,用于基于映射关系,在自定义段和共享物理内存之间,实现各个进程之间的共享数据的交互。
较佳的,获取自定义段的大小时,处理单元61用于:
编译第一文件,形成可执行连接格式ELF文件,通过ELF文件获取自定义段的初始大小;其中,第一文件为至少一个进程的源文件;
临时生成第二文件,在第二文件中调整自定义段的初始大小为页大小的整数倍,然后设置一个变量,并赋予该变量的值为调整后的自定义段的初始大小,通过读取该变量获取自定义段的大小。
较佳的,在自定义段与共享物理内存之间建立映射关系时,处理单元61用于:
对自定义段的地址和共享物理内存的地址分别执行页对齐操作;
基于页对齐操作结果,确定自定义段与共享物理内存之间的地址映射。
较佳的,基于映射关系,在自定义段和共享物理内存之间,实现各个进程之间的共享数据的交互时,共享单元62用于:
当检测到至少一个进程访问自定义段时,基于映射关系,在共享物理内存中存取共享数据。
较佳的,共享单元62进一步用于:
当检测到共享物理内存已被释放时,则解除自定义段与共享物理内存之间的映射关系。
综上所述,本发明实施例中,将各个进程中的共享数据存入自定义段中,并将该自定义段加载到虚拟地址空间中;获取自定义段的大小,并为共享数据在物理内存中分配一个与自定义段相等大小的共享物理内存,以及在自定义段与共享物理内存之间建立映射关系;基于映射关系,在自定义段和共享物理内存之间,实现各个进程之间的共享数据的交互。这样,通过将共享数据汇聚存放在自定义段中来实现对自定义段的直接共享,避免了采用数据拷贝实现数据共享时导致效率偏低的问题,也避免了采用指针方式实现数据共享时需要修改原始代码导致的灵活性差以及可维护性差的问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种多进程共享数据的方法,其特征在于,所述方法包括:
将各个进程中的共享数据存入自定义段中,并将所述自定义段加载到虚拟地址空间中;
获取所述自定义段的大小,并为所述共享数据在物理内存中分配与所述自定义段相等大小的共享物理内存,以及在所述自定义段与所述共享物理内存之间建立映射关系;
基于所述映射关系,在所述自定义段和所述共享物理内存之间,实现各个进程之间的共享数据的交互。
2.如权利要求1所述的方法,其特征在于,获取所述自定义段的大小,包括:
编译第一文件,形成可执行连接格式ELF文件,通过所述ELF文件获取所述自定义段的初始大小;其中,所述第一文件为至少一个进程的源文件;
临时生成第二文件,在所述第二文件中调整所述自定义段的初始大小为页大小的整数倍,然后设置一个变量,并赋予所述变量的值为调整后的自定义段的初始大小,通过读取所述变量获取自定义段的大小。
3.如权利要求1或2所述的方法,其特征在于,在所述自定义段与所述共享物理内存之间建立映射关系,包括:
针对所述自定义段的地址和所述共享物理内存的地址分别执行页对齐操作;
基于页对齐操作结果,确定所述自定义段与所述共享物理内存之间的地址映射。
4.如权利要求1或2所述的方法,其特征在于,基于所述映射关系,在所述自定义段和所述共享物理内存之间,实现各个进程之间的共享数据的交互,包括:
当检测到至少一个进程访问所述自定义段时,基于所述映射关系,在所述共享物理内存中存取所述共享数据。
5.如权利要求1或2所述的方法,其特征在于,进一步包括:
当检测到所述共享物理内存已被释放时,则解除所述自定义段与所述共享物理内存之间的映射关系。
6.一种多进程共享数据的装置,其特征在于,所述装置包括:
加载单元,用于将各个进程中的共享数据存入自定义段中,并将所述自定义段加载到虚拟地址空间中;
处理单元,用于获取所述自定义段的大小,并为所述共享数据在物理内存中分配一个与所述自定义段相等大小的共享物理内存,以及在所述自定义段与所述共享物理内存之间建立映射关系;
共享单元,用于基于所述映射关系,在所述自定义段和所述共享物理内存之间,实现各个进程之间的共享数据的交互。
7.如权利要求6所述的装置,其特征在于,获取所述自定义段的大小时,所述处理单元用于:
编译第一文件,形成可执行连接格式ELF文件,通过所述ELF文件获取所述自定义段的初始大小;其中,所述第一文件为至少一个进程的源文件;
临时生成第二文件,在所述第二文件中调整所述自定义段的初始大小为页大小的整数倍,然后设置一个变量,并赋予所述变量的值为调整后的自定义段的初始大小,通过读取所述变量获取自定义段的大小。
8.如权利要求6或7所述的装置,其特征在于,在所述自定义段与所述共享物理内存之间建立映射关系时,所述处理单元用于:
对所述自定义段的地址和所述共享物理内存的地址分别执行页对齐操作;
基于页对齐操作结果,确定所述自定义段与所述共享物理内存之间的地址映射。
9.如权利要求6或7所述的装置,其特征在于,基于所述映射关系,在所述自定义段和所述共享物理内存之间,实现各个进程之间的共享数据的交互时,所述共享单元用于:
当检测到至少一个进程访问所述自定义段时,基于所述映射关系,在所述共享物理内存中存取所述共享数据。
10.如权利要求6或7所述的装置,其特征在于,所述共享单元进一步用于:
当检测到所述共享物理内存已被释放时,则解除所述自定义段与所述共享物理内存之间的映射关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510266570.XA CN104881330B (zh) | 2015-05-22 | 2015-05-22 | 一种多进程共享数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510266570.XA CN104881330B (zh) | 2015-05-22 | 2015-05-22 | 一种多进程共享数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104881330A CN104881330A (zh) | 2015-09-02 |
CN104881330B true CN104881330B (zh) | 2018-08-21 |
Family
ID=53948836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510266570.XA Active CN104881330B (zh) | 2015-05-22 | 2015-05-22 | 一种多进程共享数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104881330B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557427B (zh) * | 2015-09-25 | 2021-11-12 | 中兴通讯股份有限公司 | 共享内存数据库的内存管理方法及装置 |
CN107577539B (zh) * | 2016-07-05 | 2021-03-16 | 阿里巴巴集团控股有限公司 | 用于内核态和用户态通讯的共享内存结构及其应用 |
US10474568B2 (en) | 2017-09-20 | 2019-11-12 | Huawei Technologies Co., Ltd. | Re-playable execution optimized for page sharing in a managed runtime environment |
US11243790B2 (en) * | 2017-09-20 | 2022-02-08 | Huawei Technologies Co., Ltd. | Re-playable execution optimized for page sharing in a managed runtime environment |
CN109669784B (zh) * | 2017-10-13 | 2021-06-22 | 华为技术有限公司 | 一种进程间通信的方法及系统 |
CN109783144B (zh) * | 2017-11-13 | 2022-03-25 | 深圳市创客工场科技有限公司 | 虚拟环境交互实现中变量的处理方法、装置和存储介质 |
CN109062693A (zh) * | 2018-07-26 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种内存管理方法及相关设备 |
CN112596918A (zh) * | 2020-12-04 | 2021-04-02 | 广东嘉腾机器人自动化有限公司 | 系统内各程序间共享变量的方法及存储装置 |
CN114035980B (zh) * | 2021-11-08 | 2023-11-14 | 海飞科(南京)信息技术有限公司 | 基于便笺存储器来共享数据的方法和电子装置 |
CN114302040B (zh) * | 2021-12-24 | 2024-03-19 | 展讯半导体(成都)有限公司 | 多应用共享单一摄像头的方法及相关产品 |
CN114546523A (zh) * | 2022-01-29 | 2022-05-27 | 阿里巴巴(中国)有限公司 | 应用程序启动方法、装置、电子设备、介质及程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1705269A (zh) * | 2004-05-25 | 2005-12-07 | 中国科学院计算技术研究所 | 一种用于虚拟共享存储系统的远程取页方法及网络接口卡 |
GB2420642A (en) * | 2004-11-30 | 2006-05-31 | Sendo Int Ltd | Sharing a block of memory between processes on a portable electronic device |
CN102156700A (zh) * | 2010-02-12 | 2011-08-17 | 华为技术有限公司 | 数据库的访问方法、装置及系统 |
CN104636260A (zh) * | 2013-11-06 | 2015-05-20 | 深圳市风景智联科技有限公司 | 一种用于计费业务的数据管理方法及系统 |
-
2015
- 2015-05-22 CN CN201510266570.XA patent/CN104881330B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1705269A (zh) * | 2004-05-25 | 2005-12-07 | 中国科学院计算技术研究所 | 一种用于虚拟共享存储系统的远程取页方法及网络接口卡 |
GB2420642A (en) * | 2004-11-30 | 2006-05-31 | Sendo Int Ltd | Sharing a block of memory between processes on a portable electronic device |
CN102156700A (zh) * | 2010-02-12 | 2011-08-17 | 华为技术有限公司 | 数据库的访问方法、装置及系统 |
CN104636260A (zh) * | 2013-11-06 | 2015-05-20 | 深圳市风景智联科技有限公司 | 一种用于计费业务的数据管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104881330A (zh) | 2015-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104881330B (zh) | 一种多进程共享数据的方法和装置 | |
JP5639274B2 (ja) | 計算プラットフォームのヘテロジニアスプロセッサの間で共有されるバーチャルメモリにおけるバーチャル機能の共有 | |
Nasre et al. | Morph algorithms on GPUs | |
Venkataraman et al. | Presto: distributed machine learning and graph processing with sparse matrices | |
Hermann et al. | Multi-GPU and multi-CPU parallelization for interactive physics simulations | |
KR101240092B1 (ko) | 컴퓨터 플랫폼에서의 방법 및 컴퓨터 플랫폼 | |
Busato et al. | BFS-4K: an efficient implementation of BFS for kepler GPU architectures | |
Best et al. | Synchronization via scheduling: techniques for efficiently managing shared state | |
Heuveline et al. | Towards a hybrid parallelization of lattice Boltzmann methods | |
Friedley et al. | Ownership passing: Efficient distributed memory programming on multi-core systems | |
Noaje et al. | Source-to-source code translator: OpenMP C to CUDA | |
Stone et al. | Early experiences scaling VMD molecular visualization and analysis jobs on Blue Waters | |
Malik et al. | Productivity of GPUs under different programming paradigms | |
Huo et al. | Porting irregular reductions on heterogeneous CPU-GPU configurations | |
Ivannikov et al. | Dataflow computing model—Perspectives, advantages and implementation | |
Mivule et al. | A review of cuda, mapreduce, and pthreads parallel computing models | |
WO2009064420A1 (en) | Multiprocessing apparatus, system and method | |
Lee et al. | A constraint-based approach to automatic data partitioning for distributed memory execution | |
Best et al. | Searching for concurrent design patterns in video games | |
Belova et al. | Breadth-first search with a multi-core computer | |
Gómez-Iglesias et al. | Porting scientific libraries to PGAS in XSEDE resources: Practice and experience | |
Hegde et al. | D2P: From recursive formulations to distributed-memory codes | |
Torres et al. | A novel set of directives for multi-device programming with openmp | |
Liu et al. | A survey: main virtualization methods and key virtualization technologies of CPU and memory | |
Ivanovic et al. | Shared Memory Enhanced Cloud as a Computing Tool for Micromagnetic Simulations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |