一种基于原子操作的共享内存通信方法及系统技术方案

技术编号:37258199 阅读:16 留言:0更新日期:2023-04-20 23:33
本发明专利技术涉及一种基于原子操作的共享内存通信方法及系统,该共享内存通信方法包括:创建数据区DataBlockA、数据区DataBlockB和控制区;控制区存储有当前读进程数据块索引,当前读进程数据块索引用于指示当前进行数据读取的数据区为数据区DataBlockA或数据区DataBlockB;进程进行读取数据或写入数据时,通过原子操作访问控制区,根据当前读进程数据块索引选择数据区DataBlockA或数据区DataBlockB进行数据读取或写入;通过原子操作代替互斥锁,多进程不会在等待时阻塞,系统也不需要频繁的进行上下文切换,极大提升了共享内存的使用效率,可以显著提升多进程共享同一内存数据时的通信效率。内存数据时的通信效率。内存数据时的通信效率。

【技术实现步骤摘要】
一种基于原子操作的共享内存通信方法及系统


[0001]本专利技术涉及嵌入系统中间件的通信领域,尤其涉及一种基于原子操作的共享内存通信方法及系统。

技术介绍

[0002]共享内存机制是一种用于实现IPC(Inter-Process Communication,进程间通信)的方法,不同进程通过访问同一块内存区域实现数据共享和交互,但是共享内存本身没有进程间同步与互斥机制,所以往往需要与其它通信机制,如信号量、互斥锁结合使用,来达到进程间的同步及互斥。
[0003]基于互斥锁实现多进程同步互斥地访问共享内存时,如果同时访问共享内存的进程较多,就会造成部分进程等待的现象。更进一步,如果共享内存中的数据更新频繁,导致多个进程高频度访问共享内存时,就需要频繁执行加锁和解锁的动作,这种加锁和解锁需要做操作系统内核的上下文切换,占用大量CPU资源。从而,不仅出现了部分进程死等的现象,还造成了系统资源的过度消耗,严重降低了对共享内存的访问效率。

技术实现思路

[0004]本专利技术针对现有技术中存在的技术问题,提供一种基于原子操作的共享内存通信方法及系统,通过原子操作代替互斥锁,多进程不会在等待时阻塞,系统也不需要频繁的进行上下文切换,极大提升了共享内存的使用效率,可以显著提升多进程共享同一内存数据时的通信效率。
[0005]根据本专利技术的第一方面,提供了一种基于原子操作的共享内存通信方法,包括:步骤1,创建数据区DataBlockA、数据区DataBlockB和控制区;所述控制区存储有当前读进程数据块索引,所述当前读进程数据块索引用于指示当前进行数据读取的数据区为所述数据区DataBlockA或所述数据区DataBlockB;
[0006]步骤2,进程进行读取数据或写入数据时,通过原子操作访问所述控制区,根据所述当前读进程数据块索引选择所述数据区DataBlockA或所述数据区DataBlockB进行数据读取或写入;进行数据读取的数据区为所述当前读进程数据块索引指示的当前进行数据读取的数据区,进行数据写入的数据区为所述当前读进程数据块索引指示的当前进行数据读取的数据区对应的另一块数据区。
[0007]在上述技术方案的基础上,本专利技术还可以作出如下改进。
[0008]可选的,所述控制区还存储有数据区读取进程计数;
[0009]所述数据区读取进程计数用于记录所述数据区DataBlockA和所述数据区DataBlockB中进行读取数据的进程的个数,有任意进程对数据区进行数据读取时,更新对应数据区的所述数据区读进程计数。
[0010]可选的,所述步骤2中进程进行数据读取的过程包括:
[0011]步骤201,从所述控制区获取所述当前读进程数据块索引,根据所述当前读进程数
据块索引访问进行数据读取对应的数据区;
[0012]步骤202,通过原子操作访问将所述控制区的该对应数据区的数据块读进程计数加一;
[0013]步骤203,操作该对应的数据区进行数据读取;
[0014]步骤204,通过原子操作访问将所述控制区的该对应数据区的数据块读进程计数减一。
[0015]可选的,所述步骤2中进程进行数据写入的过程包括:
[0016]步骤201',从所述控制区获取所述当前读进程数据块索引,根据所述当前读进程数据块索引访问进行数据写入对应的数据区;
[0017]步骤202',操作该对应的数据区进行数据写入。
[0018]可选的,所述步骤201'和所述步骤202'之间还包括:
[0019]步骤211',通过原子操作访问从所述控制区获取该对应数据区的数据块读进程计数,该数据块读进程计数为0时执行步骤202',否则返回步骤201'。
[0020]可选的,步骤202'之后还包括:
[0021]步骤212',通过原子操作访问将所述当前读进程数据块索引中的当前进行数据读取的数据区更新为本次进行了数据写入的数据区。
[0022]根据本专利技术的第二方面,提供一种基于原子操作的共享内存通信系统,包括:数据区DataBlockA、数据区DataBlockB和控制区;
[0023]所述控制区存储有当前读进程数据块索引,所述当前读进程数据块索引用于指示当前进行数据读取的数据区为所述数据区DataBlockA或所述数据区DataBlockB;进程进行读取数据或写入数据时,通过原子操作访问所述控制区,根据所述当前读进程数据块索引选择所述数据区DataBlockA或所述数据区DataBlockB进行数据读取或写入;
[0024]进行数据读取的数据区为所述当前读进程数据块索引指示的当前进行数据读取的数据区,进行数据写入的数据区为所述当前读进程数据块索引指示的当前进行数据读取的数据区对应的另一块数据区。
[0025]根据本专利技术的第三方面,提供了一种电子设备,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机管理类程序时实现基于原子操作的共享内存通信方法的步骤。
[0026]根据本专利技术的第四方面,提供了一种计算机可读存储介质,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现基于原子操作的共享内存通信方法的步骤。
[0027]本专利技术实施例提供的一种基于原子操作的共享内存通信方法、系统、电子设备及存储介质,对于单一进程写共享内存多进程读共享内存的所谓“一写多读”的场景提出了一种根本解决方案。主要利用原子操作来代替互斥锁的机制,同时优化共有内存的设计机制,最大限度提升进程访问效率。参与共享内存读取的进程越多,本专利技术的优势越明显。
附图说明
[0028]图1为本专利技术提供的一种基于原子操作的共享内存通信方法的流程图;
[0029]图2为本专利技术实施例提供的一种基于原子操作的共享内存通信方法中读进程访问
共享内存的流程图;
[0030]图3为本专利技术实施例提供的一种基于原子操作的共享内存通信方法中写进程访问共享内存的流程图;
[0031]图4为本专利技术提供的一种基于原子操作的共享内存通信的结构框图;
[0032]图5为本专利技术提供的一种可能的电子设备的硬件结构示意图;
[0033]图6为本专利技术提供的一种可能的计算机可读存储介质的硬件结构示意图。
具体实施方式
[0034]以下结合附图对本专利技术的原理和特征进行描述,所举实例只用于解释本专利技术,并非用于限定本专利技术的范围。
[0035]图1为本专利技术提供的一种基于原子操作的共享内存通信方法流程图,如图1所示,该共享内存通信方法包括:
[0036]步骤1,创建数据区DataBlockA、数据区DataBlockB和控制区;控制区存储有当前读进程数据块索引,当前读进程数据块索引用于指示当前进行数据读取的数据区为数据区DataBlockA或数据区DataBlockB。
[0037]步骤2,进程进行读取数据或写入数据时,通过原子操作访问控制区,根据当前读进程数据块索引选择数据区DataB本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于原子操作的共享内存通信方法,其特征在于,所述共享内存通信方法包括:步骤1,创建数据区DataBlockA、数据区DataBlockB和控制区;所述控制区存储有当前读进程数据块索引,所述当前读进程数据块索引用于指示当前进行数据读取的数据区为所述数据区DataBlockA或所述数据区DataBlockB;步骤2,进程进行读取数据或写入数据时,通过原子操作访问所述控制区,根据所述当前读进程数据块索引选择所述数据区DataBlockA或所述数据区DataBlockB进行数据读取或写入;进行数据读取的数据区为所述当前读进程数据块索引指示的当前进行数据读取的数据区,进行数据写入的数据区为所述当前读进程数据块索引指示的当前进行数据读取的数据区对应的另一块数据区。2.根据权利要求1所述的共享内存通信方法,其特征在于,所述控制区还存储有数据区读取进程计数;所述数据区读取进程计数用于记录所述数据区DataBlockA和所述数据区DataBlockB中进行读取数据的进程的个数,有任意进程对数据区进行数据读取时,更新对应数据区的所述数据区读进程计数。3.根据权利要求2所述的共享内存通信方法,其特征在于,所述步骤2中进程进行数据读取的过程包括:步骤201,从所述控制区获取所述当前读进程数据块索引,根据所述当前读进程数据块索引访问进行数据读取对应的数据区;步骤202,通过原子操作访问将所述控制区的该对应数据区的数据块读进程计数加一;步骤203,操作该对应的数据区进行数据读取;步骤204,通过原子操作访问将所述控制区的该对应数据区的数据块读进程计数减一。4.根据权利要求2所述的共享内存通信方法,其特征在于,所述步骤2中进程进行数据写入的过程包括:步骤201',从所述控制区获取所述当前读进程数据块索引,根据所述当前读进程数据块索引访问进行数据写入...

【专利技术属性】
技术研发人员:王军德郑乐新
申请(专利权)人:武汉光庭信息技术股份有限公司
类型:发明
国别省市:

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

1