CN114528124A - 一种基于协议的进程大数据内存共享方法及系统 - Google Patents

一种基于协议的进程大数据内存共享方法及系统 Download PDF

Info

Publication number
CN114528124A
CN114528124A CN202210144850.3A CN202210144850A CN114528124A CN 114528124 A CN114528124 A CN 114528124A CN 202210144850 A CN202210144850 A CN 202210144850A CN 114528124 A CN114528124 A CN 114528124A
Authority
CN
China
Prior art keywords
instruction
data
shared memory
module
big data
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.)
Granted
Application number
CN202210144850.3A
Other languages
English (en)
Other versions
CN114528124B (zh
Inventor
刘德建
李佳
张延锋
郑成龙
柳旭辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Tianqing Online Interactive Technology Co Ltd
Original Assignee
Fujian Tianqing Online Interactive Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujian Tianqing Online Interactive Technology Co Ltd filed Critical Fujian Tianqing Online Interactive Technology Co Ltd
Priority to CN202210144850.3A priority Critical patent/CN114528124B/zh
Publication of CN114528124A publication Critical patent/CN114528124A/zh
Application granted granted Critical
Publication of CN114528124B publication Critical patent/CN114528124B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

本发明提供了一种基于协议的进程大数据内存共享方法,所述方法包括以下步骤:步骤S1、使进程A和进程B通信,在进程A和进程B中开辟两个共享内存区,用在读写指令及数据;步骤S2、进程B接收指令线程操作等待进程A发送指令;步骤S3、进程A发送指令线程操作指令进入操作队列;步骤S4、进程B接收进程A发送指令的操作类型,并对指令的类型进行判断;步骤S5、进程B针对进程A发送的指令执行操作,判断该指令是否为中断指令操作,是,则返回步骤S2,否,则执行指令操作;步骤S6、进程B操作结束后,发送完成指令给操作进程A;本发明能够实现根据用户需要交互的进程间的大数据进行分指令类型,完成对占用内存空间数据分段分任务进行处理。

Description

一种基于协议的进程大数据内存共享方法及系统
技术领域
本发明涉及计算机技术领域,特别是一种基于协议的进程大数据内存共享方法及系统。
背景技术
进程间通讯的方式有很多种,常用的有共享内存、命名管道和匿名管道、发送消息等几种方法来直接完成,另外还可以通过socket口、配置文件和注册表等来间接实现进程间数据通讯任务。以上这几种方法各有优缺点,具体到在进程间进行大数据量数据的快速交换问题上,则可以排除使用配置文件和注册表的方法;另外,由于管道和socket套接字的使用需要有网卡的支持,因此也可以不予考虑。这样,可供选择的通讯方式只剩下共享内存和发送消息两种。在交换数据量较大的情况下实现数据频繁而又快速的交换用发送消息的方法也是不合适的(因为发送消息有同步消息和异步消息两种方法,同步消息就是接收方进程处理完毕接收到的消息才返回结果给发送进程,发送进程可根据进程间返回的通迅结果进行下一步处理,但缺点时容易导致发送进程卡死,消息没返回之前不能进一步处理。异步消息处理则是发送进程发送完消息,不等待结果返回,就进行下一步消息处理,但是无法获取消息的执行结果,无法保证结果的正确性当数据传输过于频繁时将有可能导致数据的丢失。
比之以上几种进程间通讯方法,共享内存有着明显的优势。共享内存是通过直接操作内存映射文件来进行的,而内存映射文件又是进行单机数据共享的最低层机制,前面几种数据交换方式在低层都是通过内存映射文件来进行的。因此使用共享内存可以以较小的开销获取较高的性能,是进行大数据量数据快速交换的最佳方案。而且如果进程间需要共享的内存数据过大,比如大过2G很容易造成系统的不稳定。通常操作系统对应用程序是有内存大小限制的,比如32位系统内进程最大处理的内存就是4G。64位操作系统则会多一些,通常一个进程大过3G内存也很容易不稳定造成系统崩溃。缺点是共享内存的同题,这个可以通过好的系统流程解决问题。
发明内容
为克服上述问题,本发明的目的是提供一种能够根据用户需要交互的进程间的大数据进行分指令类型,并对其中某个指令的的数据特别占用内存空间部分进行数据分段分任务处理的方法。
本发明采用以下方案实现:一种基于协议的进程大数据内存共享方法,所述方法包括以下步骤:
步骤S1、使进程A和进程B通信,在进程A和进程B中开辟两个共享内存区,用在读写指令及数据;
步骤S2、进程B接收指令线程操作等待进程A发送指令;
步骤S3、进程A发送指令线程操作指令进入操作队列;
步骤S4、进程B接收进程A发送指令的操作类型,并对指令的类型进行判断;
步骤S5、进程B针对进程A发送的指令执行操作,判断该指令是否为中断指令操作,是,则返回步骤S2,否,则执行指令操作;
步骤S6、进程B操作结束后,发送完成指令给操作进程A,从而能够实现根据用户需要交互的进程间的大数据进行分指令类型,完成对占用内存空间数据分段分任务进行处理。
进一步的,所述步骤S1进一步具体为:通过共享内存区实现进程A和进程B的通信,在进程A和进程B中开辟两个共享内存区,在一个共享内存区内进程A只能写数据,进程B只能读数据,另一个共享内存区内进程A只能读数据,进程B只能写数据。
进一步的,所述步骤S3进一步具体为:操作队列为根据进程A发送的指令线程操作具体指令数量。
本发明还提供了一种基于协议的进程大数据内存共享系统,包括通信模块、接收模块、发送模块、判断模块、执行模块和完成模块,所述通信模块,即使进程A和进程B通信,在进程A和进程B中开辟两个共享内存区,用在读写指令及数据;所述接收模块,即进程B接收指令线程操作等待进程A发送指令;所述发送模块,即进程A发送指令线程操作指令进入操作队列;所述判断模块,即进程B接收进程A发送指令的操作类型,并对指令的类型进行判断;所述执行模块,即进程B针对进程A发送的指令执行操作,判断该指令是否为中断指令操作,是,则返回步骤S2,否,则执行指令操作;所述完成模块,即进程B操作结束后,发送完成指令给操作进程A,从而能够实现根据用户需要交互的进程间的大数据进行分指令类型,完成对占用内存空间数据分段分任务进行处理。
进一步的,所述通信模块进一步具体为:通过共享内存区实现进程A和进程B的通信,在进程A和进程B中开辟两个共享内存区,在一个共享内存区内进程A只能写数据,进程B只能读数据,另一个共享内存区内进程A只能读数据,进程B只能写数据。
进一步的,所述发送模块进一步具体为:操作队列为根据进程A发送的指令线程操作具体指令数量。
本发明的有益效果在于:本发明能够根据用户需要交互的进程间的大数据进行分指令类型,并对其中某个指令的的数据特别占用内存空间部分进行数据分段分任务处理;由于用了共享内存区域映射技术并加入了共享内存区域映射技术的同步进制,使两个进程能快速准确的共享内容,减少的用户相同的操作,节省了时间,以及发生两次操作产生的错误率问题;保证了一份数据一次修改,两个使用的地方保持了当前的统一的同步信息。
附图说明
图1是本发明的方法流程示意图。
图2是本发明的系统原理框图。
具体实施方式
下面结合附图对本发明做进一步说明。
请参阅图1所示,本发明的一种基于协议的进程大数据内存共享方法,所述方法包括以下步骤:
步骤S1、使进程A和进程B通信,在进程A和进程B中开辟两个共享内存区,用在读写指令及数据;
步骤S2、进程B接收指令线程操作等待进程A发送指令;
步骤S3、进程A发送指令线程操作指令进入操作队列;
步骤S4、进程B接收进程A发送指令的操作类型,并对指令的类型进行判断;
步骤S5、进程B针对进程A发送的指令执行操作,判断该指令是否为中断指令操作,是,则返回步骤S2,否,则执行指令操作;
步骤S6、进程B操作结束后,发送完成指令给操作进程A,从而能够实现根据用户需要交互的进程间的大数据进行分指令类型,完成对占用内存空间数据分段分任务进行处理。
下面通过一具体实施例对本发明作进一步说明:
本发明主要包含以下六个步骤:
1、进程A,进程B开劈两个共享内存区1,2,分别用在读写指令及数据;
2、进程B接收指令线程操作等待进程A发送指令;
3、进程A发送指令线程操作指令进入操作队列;
如在进程A中选中一个物件,并进行COPY+C则表示要准备复制此物件,并把当前要复制的操作合并成一个指令,进入操作队列,则此时操作队列只有一个文件,如果同时选择多个物件,则操作队列中需要复制的指令则有多个。详细的复制指令如”五.具体应用场景例子”的步骤14、进程B接收进程A发送指令的操作类型,并对指令的类型进行判断;
指令除了复制,还可以同步选中物件的大小,方向,旋转角度。
如定义程序指令结构定义:
Figure BDA0003508408880000041
Figure BDA0003508408880000051
如在进程A要复制一个物件(对应的文件路径是C:\\1.obj),则发送的指令如下:
Figure BDA0003508408880000052
如要同步选中物件的位置(对应的文件路径是C:\\1.obj),则发送指令如下:
Figure BDA0003508408880000053
5、进程B针对进程A指令做进一步的操作,一般是对数据的操作,也可能是中断本次操作(为了操作随时可中断,数据中加入了数据指令头,每个指令都有);
6、如果是为中断指令操作,则在步骤2继续等待下一指令的操作;
7、进程B操作结束后,发送完成指令给操作进程A;
8、进程A收到进程B发送的完成指令表示进行了一回合的操作。
在实际应用中,进程A和进程B是指同一电脑上的两个游戏编辑器,用户多开同款编辑器(同时编辑两个不同的游戏地图),因为游戏中有些相同的部分可以通过编辑器指令同步操作,节省用户重复操作时间。比如一个复杂的游戏中用到的多个房间布景,如在首张地图中需要慢慢布置,花时几天,在新地图中用到同样的布景只需要指令操作一下,同步到另一个地图编辑器即可。
下面通过一个例子,说明本发明如何两个游戏地图编辑器的操作进行了优化:
例子:打开地图编辑器进程A,并设置好共享内存区1,2,并写入指令到共享内存区1(共享内存区1进程A只写,共享内存区2进程A只读)。
打开地图编辑器作为进程B,读入共享内存区1的指令,并解析数据头上的指令,在共享内存区2反馈给进程A,表示同意进程A我已经准备好接收实际指令,你可以开始发送实际要操作的指令了。(进程B设置共享内存区1只读,进程B设置共享内存区2只写)。
1.然后在进程A中选中100个物件,假设每个物件关联物件又有15个关联物件(则此时需要操作的物件总数为100*15=1500个物件),然后按CTRL+C表示要复制,此时写入指令到内存区1,并对任务总体情况写入到任务队列(包括当前是什么操作(如复制,删除),一共有多少文件
2.到进程B按CTRL+V,进程B表示我要准备接收数据了,并读入进程A写入的内存区1的数据,解析数据头,知道总任务一共是复制1500个物件。并把准备接收数据指令反馈给进程A(通过写入指令到内存区2)
3.进程A接收到进程B可以开始的指令后。则开始拆分任务,并有多少个子任务,及当前是第几个子任务,及任务完成状态,当前任务的文件名,偏移量,数据长度,及真正需要操作的数据,并写入到内存区1
4.进程B接收到任务后开始拆分指令头,分析当前的任务,并把数据按指令进行操作,此例子指令是复制文件,则是把数据存成进程B可用的文件。
5.重复3,4直到总任务完成
6.总任务完成后,进程B反馈给进程A表示任务已经完成
7.进程A收到进程B的完成指令后,并把已经完成的子任务移出任务队列,开始下一个任务,如果有下一步操作则从1指令开始。
8.进程A任务队列已经清空,本次操作完成。
总之,本发明提供一种新的一种基于协议的进程间大数据共享方法和系统,能够根据用户需要交互的进程间的大数据进行分指令类型,并对其中某个指令的的数据特别占用内存空间部分进行数据分段分任务处理。从而实现比如需要从一个游戏地图编辑器拷贝当前的选中地图中的物件进行整体复制。(因为每个物件都是3d而且关联的物件及贴图,音效,特效都很多,所以会需要有非常大的内存,如果一次性复制大量的物件,可能直接造成两个进程间都需要大量有内存,一是会造成两个进行间的卡死,二是会造成内存占用过多可能导致程序崩溃)。
请参阅图2所示,本发明还提供了一种基于协议的进程大数据内存共享系统,包括通信模块、接收模块、发送模块、判断模块、执行模块和完成模块,所述通信模块,即使进程A和进程B通信,在进程A和进程B中开辟两个共享内存区,用在读写指令及数据;所述接收模块,即进程B接收指令线程操作等待进程A发送指令;所述发送模块,即进程A发送指令线程操作指令进入操作队列;所述判断模块,即进程B接收进程A发送指令的操作类型,并对指令的类型进行判断;所述执行模块,即进程B针对进程A发送的指令执行操作,判断该指令是否为中断指令操作,是,则返回步骤S2,否,则执行指令操作;所述完成模块,即进程B操作结束后,发送完成指令给操作进程A,从而能够实现根据用户需要交互的进程间的大数据进行分指令类型,完成对占用内存空间数据分段分任务进行处理。
所述通信模块进一步具体为:通过共享内存区实现进程A和进程B的通信,在进程A和进程B中开辟两个共享内存区,在一个共享内存区内进程A只能写数据,进程B只能读数据,另一个共享内存区内进程A只能读数据,进程B只能写数据。
所述发送模块进一步具体为:操作队列为根据进程A发送的指令线程操作具体指令数量。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

Claims (6)

1.一种基于协议的进程大数据内存共享方法,其特征在于,所述方法包括以下步骤:
步骤S1、使进程A和进程B通信,在进程A和进程B中开辟两个共享内存区,用在读写指令及数据;
步骤S2、进程B接收指令线程操作等待进程A发送指令;
步骤S3、进程A发送指令线程操作指令进入操作队列;
步骤S4、进程B接收进程A发送指令的操作类型,并对指令的类型进行判断;
步骤S5、进程B针对进程A发送的指令执行操作,判断该指令是否为中断指令操作,是,则返回步骤S2,否,则执行指令操作;
步骤S6、进程B操作结束后,发送完成指令给操作进程A,从而能够实现根据用户需要交互的进程间的大数据进行分指令类型,完成对占用内存空间数据分段分任务进行处理。
2.根据权利要求1所述的一种基于协议的进程大数据内存共享方法,其特征在于:所述步骤S1进一步具体为:通过共享内存区实现进程A和进程B的通信,在进程A和进程B中开辟两个共享内存区,在一个共享内存区内进程A只能写数据,进程B只能读数据,另一个共享内存区内进程A只能读数据,进程B只能写数据。
3.根据权利要求1所述的一种基于协议的进程大数据内存共享方法,其特征在于:所述步骤S3进一步具体为:操作队列为根据进程A发送的指令线程操作具体指令数量。
4.一种基于协议的进程大数据内存共享系统,其特征在于:包括通信模块、接收模块、发送模块、判断模块、执行模块和完成模块,所述通信模块,即使进程A和进程B通信,在进程A和进程B中开辟两个共享内存区,用在读写指令及数据;所述接收模块,即进程B接收指令线程操作等待进程A发送指令;所述发送模块,即进程A发送指令线程操作指令进入操作队列;所述判断模块,即进程B接收进程A发送指令的操作类型,并对指令的类型进行判断;所述执行模块,即进程B针对进程A发送的指令执行操作,判断该指令是否为中断指令操作,是,则返回步骤S2,否,则执行指令操作;所述完成模块,即进程B操作结束后,发送完成指令给操作进程A,从而能够实现根据用户需要交互的进程间的大数据进行分指令类型,完成对占用内存空间数据分段分任务进行处理。
5.根据权利要求4所述的一种基于协议的进程大数据内存共享系统,其特征在于:所述通信模块进一步具体为:通过共享内存区实现进程A和进程B的通信,在进程A和进程B中开辟两个共享内存区,在一个共享内存区内进程A只能写数据,进程B只能读数据,另一个共享内存区内进程A只能读数据,进程B只能写数据。
6.根据权利要求4所述的一种基于协议的进程大数据内存共享系统,其特征在于:所述发送模块进一步具体为:操作队列为根据进程A发送的指令线程操作具体指令数量。
CN202210144850.3A 2022-02-17 2022-02-17 一种基于协议的进程大数据内存共享方法及系统 Active CN114528124B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210144850.3A CN114528124B (zh) 2022-02-17 2022-02-17 一种基于协议的进程大数据内存共享方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210144850.3A CN114528124B (zh) 2022-02-17 2022-02-17 一种基于协议的进程大数据内存共享方法及系统

Publications (2)

Publication Number Publication Date
CN114528124A true CN114528124A (zh) 2022-05-24
CN114528124B CN114528124B (zh) 2024-09-03

Family

ID=81623609

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210144850.3A Active CN114528124B (zh) 2022-02-17 2022-02-17 一种基于协议的进程大数据内存共享方法及系统

Country Status (1)

Country Link
CN (1) CN114528124B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1031616A (ja) * 1996-07-17 1998-02-03 Nec Corp プロセス間通信システム
CN102541663A (zh) * 2011-12-28 2012-07-04 创新科软件技术(深圳)有限公司 一种多进程使用共享内存进行通信的方法
CN108446182A (zh) * 2018-02-07 2018-08-24 链家网(北京)科技有限公司 一种基于共享内存的跨进程通信方法及装置
US20190073316A1 (en) * 2017-09-05 2019-03-07 NGINX, Inc. Using Shared Memory To Transport Data Between Server Processes
US20210141545A1 (en) * 2019-11-11 2021-05-13 Cambricon Technologies Corporation Limited Shared storage space access method, device and system and storage medium
CN113495795A (zh) * 2020-04-03 2021-10-12 华为技术有限公司 一种进程间通信方法及相关设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1031616A (ja) * 1996-07-17 1998-02-03 Nec Corp プロセス間通信システム
CN102541663A (zh) * 2011-12-28 2012-07-04 创新科软件技术(深圳)有限公司 一种多进程使用共享内存进行通信的方法
US20190073316A1 (en) * 2017-09-05 2019-03-07 NGINX, Inc. Using Shared Memory To Transport Data Between Server Processes
CN108446182A (zh) * 2018-02-07 2018-08-24 链家网(北京)科技有限公司 一种基于共享内存的跨进程通信方法及装置
US20210141545A1 (en) * 2019-11-11 2021-05-13 Cambricon Technologies Corporation Limited Shared storage space access method, device and system and storage medium
CN113495795A (zh) * 2020-04-03 2021-10-12 华为技术有限公司 一种进程间通信方法及相关设备

Also Published As

Publication number Publication date
CN114528124B (zh) 2024-09-03

Similar Documents

Publication Publication Date Title
CN106790599B (zh) 一种基于多核无锁环形缓冲区的共生虚拟机通信方法
JP4889471B2 (ja) セパレートプロセッシングコンポーネント間のバッファ間データ転送を減らす方法およびシステム
US5384890A (en) Method and apparatus for providing multiple clients simultaneous access to a sound data stream
US7098921B2 (en) Method, system and computer program product for efficiently utilizing limited resources in a graphics device
US7506345B2 (en) Method and apparatus for adapting and hosting legacy user interface controls
US8145822B2 (en) Computer system for electronic data processing
US20160239355A1 (en) System and method of providing inter-application communications
EP0871111A2 (en) Method computer program product and data structure for validating creation of an routing messages to file objects
JPS63174135A (ja) 分散型メツセージ・ベース・オペレーテイング・システムにおけるノードの自己構成法
WO2022142601A1 (zh) 应用程序的构建方法、装置及计算机设备
US6243107B1 (en) Optimization of a graphics processor system when rendering images
CN111274019A (zh) 一种数据处理方法、装置及计算机可读存储介质
CN112764877A (zh) 一种用于硬件加速设备与docker内进程通信的方法与系统
CN109032818B (zh) 一种同构系统核间同步与通信的方法
US20180033115A1 (en) Capturing Commands in a Multi-Engine Graphics Processing Unit
CN114528124A (zh) 一种基于协议的进程大数据内存共享方法及系统
CA2169993C (en) Data transfer control device for controlling data transfer between shared memories of clusters
WO2021084269A1 (en) System and method for constructing filter graph-based media processing pipelines in a browser
JPH09114693A (ja) プログラム開発支援装置及びプログラム実行装置
EP1056008A2 (en) Interrupt control system
CN111310638A (zh) 一种数据处理方法、装置及计算机可读存储介质
CN103843036A (zh) 描绘控制装置
CN115543246A (zh) 一种bmc和服务器
CN110795389B (zh) 基于存储快照的拷贝方法、用户设备、存储介质及装置
US6865579B1 (en) Simplified thread control block design

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant