CN112506676A - 进程间的数据传输方法、计算机设备和存储介质 - Google Patents
进程间的数据传输方法、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112506676A CN112506676A CN202011386528.9A CN202011386528A CN112506676A CN 112506676 A CN112506676 A CN 112506676A CN 202011386528 A CN202011386528 A CN 202011386528A CN 112506676 A CN112506676 A CN 112506676A
- Authority
- CN
- China
- Prior art keywords
- data
- address
- buffer
- interprocess
- inter
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 396
- 230000005540 biological transmission Effects 0.000 title claims abstract description 41
- 239000000872 buffer Substances 0.000 claims abstract description 197
- 238000012545 processing Methods 0.000 claims description 49
- 238000004590 computer program Methods 0.000 claims description 14
- 238000003672 processing method Methods 0.000 claims description 7
- 230000002093 peripheral effect Effects 0.000 description 20
- 238000004891 communication Methods 0.000 description 19
- 238000012546 transfer Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000003993 interaction Effects 0.000 description 8
- 238000013500 data storage Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/543—User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请涉及一种进程间的数据传输方法、装置、计算机设备和存储介质。所述方法包括:第一进程接收待发送数据;第一进程从第一进程与第二进程共享的至少两个进程间缓冲区中,查找处于空闲状态的闲置进程间缓冲区;第一进程将待发送数据存储于数据缓冲区,闲置进程间缓冲区包括所述数据缓冲区;第一进程将第一地址传输给第二进程。采用本方法能够解决进程间数据传输丢失数据的问题。
Description
技术领域
本申请涉及通讯技术领域,特别是涉及一种进程间的数据传输方法、装置、计算机设备和存储介质。
背景技术
随着通讯技术的发展,客户端主控MCU(微控制模块)与客户端外部设备之间进行数据交互时,往往需要多个进程之间相互配合完成数据的发送和接收,然而数据在进程间传输和处理的过程中,容易出现数据丢失或系统堵塞的问题。
传统的技术中,通过引进信号量来解决上述问题,在发送进程中等待信号量,接收进程中释放信号量,可以解决发送进程中只有单任务的情况,如果发送进程中出现多个UART(通用异步收发传输器)独立同时工作,一个信号量不能解决多路的问题,如果引用多个信号量则会出现发送进程一直处于等待中。当一个信号量处于等待状态,发送进程就会停止工作,此时如果其它路UART需要发送进程进行处理,系统将不会响应,从而导致系统堵塞,造成系统假死。
发明内容
基于此,有必要针对上述技术问题,提供一种能够防止进程间数据传输、时数据丢失的进程间的数据传输方法、装置、计算机设备和存储介质。
一种进程间的数据传输方法,所述方法包括:
第一进程接收待发送数据;
第一进程从第一进程与第二进程共享的至少两个进程间缓冲区中,查找处于空闲状态的闲置进程间缓冲区,每一所述进程间缓冲区均包括数据缓冲区;
第一进程将所述待发送数据存储于所述闲置进程间缓冲区的数据缓冲区,所述闲置进程间缓冲区的数据缓冲区具有第一地址;
第一进程将所述第一地址传输给第二进程。
在其中一个实施例中,每一所述进程间缓冲区均包括数据长度缓冲区,所述进程间的数据传输方法还包括:
第一进程将所述待发送数据的数据长度存储于所述闲置进程间缓冲区的数据长度缓冲区,所述闲置进程间缓冲区的数据长度缓冲区具有第二地址;
第一进程将所述第二地址传输给第二进程。
在其中一个实施例中,还包括:
第一进程将所述第一地址、所述第二地址写入消息队列,通过所述消息队列将所述第一地址、所述第二地址传输给第二进程。
在其中一个实施例中,还包括:
所述消息队列中包括消息类型,第一进程根据所述消息类型确定所述消息队列中的数据的优先级。
一种进程间的数据处理方法,用于处理如上述的进程间的数据传输方法所传输的数据,所述进程间的数据处理方法包括:
第二进程接收第一进程传输的所述第一地址;
第二进程从所述第一地址对应的数据缓冲区中取出数据,并处理所述数据;
第二进程处理完成所述数据后,清空所述第一地址对应的数据缓冲区。
在其中一个实施例中,还包括:
第二进程接收第一进程传输的所述第二地址;
第二进程从所述第二地址对应的数据长度缓冲区中读取数据长度,判断数据是否受损;
若所述数据没有受损,则从所述第一地址对应的数据缓冲区中取出数据,并处理所述数据。
在其中一个实施例中,还包括:
第二进程接收第一进程通过消息队列传输的所述第一地址、所述第二地址。
在其中一个实施例中,所述从所述第一地址对应的数据缓冲区中取出数据,并处理所述数据,包括:
第二进程基于所述消息队列中数据的优先级,优先处理所述消息队列中优先级高的数据。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
上述进程间的数据传输方法、装置、计算机设备和存储介质。第一进程从第一进程与第二进程共享的至少两个进程间缓冲区中,查找处于空闲状态的闲置进程间缓冲区,每一所述进程间缓冲区均包括数据缓冲区;第一进程将待发送数据存储于闲置进程间缓冲区的数据缓冲区,闲置进程间缓冲区的数据缓冲区具有第一地址;第一进程将第一地址传输给第二进程。其中,通过设置至少两个第一进程与第二进程共享的进程间缓冲区,可以将待发送的数据存储于空闲状态的闲置进程间缓冲区,避免了只有一个进程间缓冲区时出现前一次数据未处理完成时,又产生新数据覆盖掉前一次的数据,进而导致数据丢失,通过上述方法可以有效解决进程间数据传输时数据丢失的问题。
附图说明
图1为一个实施例中进程间的数据传输方法的应用环境图;
图2为一个实施例中进程间的数据传输方法的流程示意图;
图3为一个实施例中进程间的数据传输方法的流程示意图;
图4为另一个实施例中进程间的数据传输方法的流程示意图;
图5为一个实施例中进程间的数据处理方法的流程示意图;
图6为一个实施例中进程间的数据处理方法的流程示意图;
图7为一个实施例中进程间的数据传输装置的结构框图;
图8为一个实施例中进程间的数据处理装置的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请提供的进程间的数据传输方法,可以应用于如图1所示的应用环境中。其中,客户端102与客户端外设装置106之间通过通讯模块104完成数据的交互,其中,通讯模块104中包括有多个进程,进程与进程之间可以存在数据的交互,本申请的实施例中,以两个进程之间的数据交互为例来进行说明,如图1中包含有进程UART-TASK和进程AT-TASK,进程UART-TASK包括有UART1和UART2,其中,UART1和UART2为通用异步收发传输器,负责数据的发送与接收,其中,可以设置UART1与客户端102连接,UART2和客户端外设装置106连接,其中,客户端102通过通讯模块与客户端外设装置106完成数据交互,客户端102通过UART1将数据发送至进程AT-TASK进行数据解析处理,有需要发送给客户端外设装置106的数据,通过UART2发送,与此同时,客户端外设装置106通过UART2将数据发送至进程AT-TASK中进行数据解析处理,当接收到客户端102的读指令之后,AT-TASK模块中的数据通过UART2发送给客户端102。本申请的实施例中,将发送数据的进程称之为第一进程,将接收数据的进程称之为第二进程。可以理解的是,同一个进程某个需要发送数据的场景中会作为第一进程,而在需要接收数据的场景中会作为第二进程。第一进程接收待发送数据;第一进程从第一进程与第二进程共享的至少两个进程间缓冲区中,查找处于空闲状态的闲置进程间缓冲区;第一进程将待发送数据存储于数据缓冲区,每一进程间缓冲区均包括数据缓冲区,闲置进程间缓冲区的数据缓冲区具有第一地址,第一进程将第一地址传输给第二进程。其中,第一进程、第二进程为具有专用的系统堆栈空间和独立的存储空间的进程,客户端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,客户端外设装置可以为对数据和信息起着传输、转送和存储的作用的外围设备。
在一个实施例中,如图2所示,提供了一种进程间的数据传输方法,以该方法应用于图1中通讯模块104中的第一进程为例进行说明,包括以下步骤:
步骤202,第一进程接收待发送数据。
其中,第一进程为数据发送进程,用于接收待发送的数据,并将待发送的数据传输给第二进程进行处理。其中,待发送的数据可以由UART中断产生,UART可以包括UART1、UART2等多个通用异步收发传输器,根据实际的数据交互需求,待发送的数据可以由UART1中断产生、可以由UART2中断产生,也可以由UART1、UART2均发生中断,UART中断产生待发送的数据之后,第一进程接收待发送的数据。
在其中一个实施例中,客户端的MCU与客户端外设装置之间基于通讯模块完成数据交互,其中,通讯模块中可以有第一进程,第一进程中包括有UART任务产生的数据,通讯模块中还可以包括有第二进程,第二进程中可以为AT模块,用于对第一进程中传输的数据进行解析处理之后发送出去。其中,UART任务可以包括UART1任务以及UART2任务,客户端MCU的UART口与UART1连接,客户端外设装置与UART2连接。
步骤204,第一进程从第一进程与第二进程共享的至少两个进程间缓冲区中,查找处于空闲状态的闲置进程间缓冲区,每一所述进程间缓冲区均包括数据缓冲区。
其中,进程间缓冲区是第一进程与第二进程间进行数据交互的共享区域,通过设置至少两个进程间缓冲区域,可以在第二进程未处理完第一进程发送的数据时,第一进程又更新了新的待发送数据时,将新的待发送的数据存储于处于空闲状态的闲置进程间缓冲区。其中,每一个进程间缓冲区均包括数据缓冲区。
其中,如果从发送数据到接收数据,处理完成所需要的时间太长,会遇到接收一次数据,多次发送数据的情况,则可以采用循环列表的方式,具体的,基于循环列表的节点,通过在每一个节点设置一个进程间缓冲区,将多次需要发送的数据存储于不同节点的进程间缓冲区。在本申请的实施例中,由于UART向AT模块输出数据的时候,时间比较短,无需采用循环列表的方式设置进程间缓冲区,直接通过增加进程间缓冲区的数量足够解决数据发送过程中可能产生的数据丢失问题。
在一个实施例中,UART1中断产生数据,则查找处于空闲状态的第一进程与第二进程之间共享的闲置进程间缓冲区,取出数据存储区中的数据,将其存放入进程间缓冲区中的数据缓冲区,取出数据长度存储区中的数据长度,将其存储于进程间缓冲区中的数据长度缓冲区。
步骤206,第一进程将所述待发送数据存储于所述闲置进程间缓冲区的数据缓冲区,所述闲置进程间缓冲区的数据缓冲区具有第一地址。
其中,第一进程将待发送的数据存储于数据缓冲区中,数据缓冲区具有对应的第一地址。
步骤208,第一进程将所述第一地址传输给第二进程。
其中,第一地址对应有唯一的一个数据缓冲区,数据缓冲区中存储有待发送的数据,第一进程通过将第一地址传输给第二进程,第二进程可以通过第一地址查找到对应的数据缓冲区。
上述进程间的数据传输方法中,第一进程接收待发送数据;第一进程从第一进程与第二进程共享的至少两个进程间缓冲区中,查找处于空闲状态的闲置进程间缓冲区,每一进程间缓冲区均包括数据缓冲区;第一进程将待发送数据存储于闲置进程间缓冲区的数据缓冲区,闲置进程间缓冲区的数据缓冲区具有第一地址;第一进程将第一地址传输给第二进程,从而通过上述方法解决进程间数据传输时的数据丢失问题。
在其中一个实施例中,还包括:
每一进程间缓冲区均包括数据长度缓冲区;
第一进程将所述待发送数据的数据长度存储于所述闲置进程间缓冲区的数据长度缓冲区,所述闲置进程间缓冲区的数据长度缓冲区具有第二地址;
第一进程将所述第二地址传输给第二进程。
其中,数据长度缓存区中存储有数据长度,第一进程在将数据缓冲区的第一地址传输给第二进程时,同时还会将数据长度缓冲区的第二地址传输给第二进程,第二进程可以通过判断数据长度缓冲区的第二地址,找出与第二地址对应的数据长度缓冲区,并根据数据长度缓冲区中的数据长度判断数据在传输的过程中是否受损,例如,通过数据长度判断数据帧有无发生变化,若没有发生变化,则可以确定数据在传输的过程中没有受损,则可以进行后续的数据处理步骤,否则,则可以确定数据在传输的过程中受损,则可以终止此处数据传输过程。通过将第二地址传输给第二进程可以避免无效的数据处理过程,提高数据处理过程的效率。
在其中一个实施例中,还包括:
第一进程将所述第一地址、所述第二地址写入消息队列,通过所述消息队列将所述第一地址、所述第二地址传输给第二进程。
其中,消息队列可以理解为一个消息的链表,有写权限的进程可以向队列中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息。例如,可以设定第一进程对消息队列有写权限,第二进程对消息队列有读权限,则第一进程即可向消息队列中添加消息,其中,消息即为需要传输的数据,相应的,具有读权限第二进程即可以从消息队列中读取待处理的数据。通过消息队列进行数据的传递可以承载较大的信息量。
在其中一个实施例中,还包括:
所述消息队列中包括消息类型,第一进程根据所述消息类型确定所述消息队列中的数据的优先级。
其中,消息队列中的每个消息都有相同的数据结构,一般情况下,这个数据结构包含两部分内容:一个是代表消息类型的成员(一个长整型的变量),另一个是消息数据的内容,从消息队列中读取消息的一个重要依据就是消息的类型,与此同时消息队列中消息的优先级也可以通过消息的类型实现的,例如,可以设置UART1中断产生的数据为第一消息类型,UART2中断产生的数据为第二消息类型,并设置第一消息类型的优先级高于第二消息类型。
以传统的进程间的数据传输过程为例来说明。其中,当第一进程接收到UART的数据发送请求之后,第一进程就会接收待发送的数据,并将第一进程中串口接收到的数据的地址通过消息队列传输给第二进程,例如,第一进程接收到UART1的数据发送请求,第一进程向第二进程发送消息并将第一进程之中UART1接收到的数据所在的地址传输给第二进程,如果第二进程不能在第一进程更新发送数据之前处理完第一进程发送的数据,则会出现数据丢失的现象或数据操作异常的现象。
传统的进程间的数据传输过程通过引进信号量来解决上述问题,其中,信号量是作为进程间以及同一进程不同线程之间的一种同步手段,在第一进程中等待信号量,第二进程中释放信号量,可以解决第一进程中只有一路UART工作,如果第一进程中出现多路UART独立同时工作,例如,UART1、UART2同时工作,一个信号量不能解决多路的问题,如果引用多个信号量则会出现第一进程一直处于等待中。当一个信号量处于WAIT(等待)状态,第一进程就会停止工作,此时如果其它路UART需要第一进程进行处理,系统将不会响应,系统堵塞,造成系统假死。
在其中一个实施例中,如图3所示,为一个具体实施例中双BUFFER在多任务应用中的流程图:
其中,在第一进程与第二进程进行数据的发送与接收之前,可以选择先参数初始化进程间缓冲区,例如,初始化发送buffer1:IPC1_Sendbuffer1分配空间,清空发送buffer1;IPC1_Sendbufferlen1=0;初始化发送buffer2:IPC1_Sendbuffer2分配空间,清空发送buffer2;IPC1_Sendbufferlen2=0。
其中,Databuffer用于存储第一进程要发送给第二进程的数据,Databufflen用于存储第一进程要发送给第二进程的数据的长度。IPC1_Sendbuffer1为第一进程与第二进程间的闲置进程间缓冲区中的数据缓冲区,IPC1_Sendbufferlen1为第一进程与第二进程间的闲置进程间缓冲区中的数据长度缓冲区。IPC1_Sendbuffer2为第一进程与第二进程间的第二进程间缓冲区中的数据缓冲区,IPC1_Sendbufflener2为第一进程与第二进程间的第二进程间缓冲区中数据长度缓冲区。
当查询到IPC1_Sendbufferlen1等于0,将要传递的数据和数据长度分别赋给IPC1_Sendbuffer1和IPC1_Sendbufferlen1,并将IPC1_Sendbuffer1的地址和IPC1_Sendbufferlen1的地址通过消息队列传给第二进程。
第二进程收到消息后,首先通过数据长度缓冲区地址对应的数据长度缓冲区中的数据长度,判断数据有无出现帧失真,在无帧失真的情况下,取出第一地址对应的数据缓冲区中的数据,并对数据进行处理,处理完成后,将对应的进程间缓冲区中的数据缓冲区中的数据清空、数据长度缓冲区中的数据长度置0。
如果IPC1_Sendbufferlen1不等于0,说明第二进程对IPC1_Sendbuffer1中的数据并未处理完成,此时第一进程不能对IPC1_Sendbuffer1中的数据进行重新赋值,否则会出现发送数据丢失或第二进程中处理的数据出错。
当第二进程对IPC1_Sendbuffer1中的数据没有处理完成时,即IPC1_Sendbufferlen1不等于0,第一进程需要向第二进程再次发送数据的时候,此时,采用IPC1_Sendbuffer2对数据进行发送,将要传递的数据和数据长度分别赋给IPC1_Sendbuffer2和IPC1_Sendbufferlen2,并将IPC1_Sendbuffer2的地址和IPC1_Sendbufferlen2的地址通过消息队列传给进程2。
在其中一个实施例中,如图4所示,为一个具体实施例中的进程间数据传输方法的流程图:
其中,UART_TASK处于系统的硬件底层,作为第一进程,负责数据的发送,AT_TASK处于系统的应用层,作为第二进程,负责解析第一进程传输过来的数据。UART_TASK可以包括UART1、UART2两个用于客户端与客户端外设装置之间的通信接口,具体的,可以设置UART1与客户端MCU连接,客户端MCU发送和接收的数据均通过UART1,UART2与客户端外设装置连接,客户端外设装置发送和接收的数据均通过UART2。
UART1、UART2中断产生数据,例如,可以为UART1产生中断数据,具体的,客户端MCU通过UART1发送数据,客户端MCU将需要发送的数据通过UART1发送给通讯模块,通讯模块中的AT指令解析模块对数据进行解析处理,将需要发送给客户端外设装置的数据通过UART2输出给客户端外设装置,也可以为UART2中断产生数据,具体的,可以为客户端外设装置将需要发送的数据通过UART2发送给通讯模块,通讯模块中的AT指令解析模块对数据进行解析处理之后,通过UART1输出给客户端MCU。也可以为UART1、UART2同时中断产生数据,即客户端MCU需要通过UART1传输数据,客户端外设装置同样也需要通过UART2传输数据。
基于UART1、UART2中断产生的数据,系统对产生的数据进行处理,具体的,将需要发送给第二进程的数据放在Databuffer(数据存储区)中,数据长度保存在Databufferlen(数据长度存储区)中。
基于数据存储区中存储的数据的属性,例如,数据ID(标识号),判断是UART1中断产生的数据还是UART2中断产生的数据,若是UART1产生的数据,则判断基于UART1与第一进程与第二进程之间的进程间缓冲区是否为空,若进程间缓冲区为空,则取出数据存储区中的数据,将其存放入进程间缓冲区中的数据缓冲区,取出数据长度存储区中的数据长度,将其存储于进程间缓冲区中的数据长度缓冲区。若基于UART1的进程间缓冲区不为空,则将UART1产生的数据存入备用的进程间缓冲区,其中,第一进程与第二进程之间共享有至少两个进程间缓冲区。
若是由于UART2中断产生的数据发送请求,则判断基于UART2与第一进程与第二进程之间的进程间缓冲区是否为空,若进程间缓冲区为空,则取出数据存储区中的数据,将其存放入进程间缓冲区中的数据缓冲区,取出数据长度存储区中的数据长度,将其存储于进程间缓冲区中的数据长度缓冲区。若基于UART2的进程间缓冲区不为空,则将UART2产生的数据存入备用的进程间缓冲区,其中,第一进程与第二进程之间共享有至少两个进程间缓冲区。
在UART_TASK中,UART1和UART2中采用了两个进程间缓冲区对数据进行了传输,UART1使用uart1_buffer和uart1_bufferbak,UART2使用uart2_buffer和uart2_bufferbak。
当数据存储于进程间缓冲区中的数据缓冲区、数据长度存储于进程间缓冲区中的数据长度缓冲区之后,则可以将存储有数据的第一地址、存储有数据长度的第二地址通过消息队列发送给第二进程,其中,消息队列中还包括有消息类型,可以通过消息类型设置消息的优先级。
在一个实施例中,如图5所示,提供了一种进程间的数据处理方法,以该方法应用于图1中的第二进程为例进行说明,包括以下步骤:
步骤502,第二进程接收第一进程传输的所述第一地址。
其中,第二进程接收第一进程传输过来的第一地址,根据第一地址,取出第一地址中对应的数据缓冲区中的数据进行解析处理,具体的,第二进程可以为AT数据解析模块,用于对第一进程发送过来的AT数据进行解析处理,例如,客户端MCU通过UART1发送AT数据给客户端外设装置,AT指令解析模块对AT命令解析处理之后通过UART2发送给客户端外设装置,又如,客户端外设装置将缓存的数据通过UART2口发送给第二进程中的AT数据解析模块进行解析处理之后通过UART1发送给客户端MCU。具体的,AT数据可以为AT+MIPPROFILE,表示客户端MCU发送拨号信息配置请求给客户端外设装置,AT数据解析模块将接收到AT数据跟列表中的AT数据进行匹配解析,接收处理每一个字节数据。
步骤504,第二进程从所述第一地址对应的数据缓冲区中取出数据,并处理所述数据。
其中,第一地址对应有唯一的一个数据缓冲区,数据缓冲区中存储有待处理的数据,第二进程从数据缓冲区中取出数据,并进行相应的处理。
步骤506,第二进程处理完成所述数据后,清空所述第一地址对应的数据缓冲区。
其中,当第二进程处理完成第一进程传输过来的数据后,会清空第一地址对应的数据缓冲区。
在其中一个实施例中,所述方法还包括:
第二进程接收第一进程传输的所述第二地址;第二进程从所述第二地址对应的数据长度缓冲区中读取数据长度,判断数据是否受损;若所述数据没有受损,则从所述第一地址对应的数据缓冲区中取出数据,并处理所述数据。
其中,第二进程在处理数据之前,会根据接收的第一进程传输的第二地址对应的数据长度缓冲区,读取数据长度缓冲区中的数据长度,通过数据长度判断数据有无受损,基于判断的结果,再确定是否处理数据。通过判断数据有无受损,可以提高第二进程处理数据时的效率。
在其中一个实施例中,所述方法还包括:
第二进程接收第一进程通过消息队列传输的所述第一地址、所述第二地址。。
在其中一个实施例中,所述从所述第一地址对应的数据缓冲区中取出数据,并处理所述数据,包括:
第二进程基于所述消息队列中数据的优先级,优先处理所述消息队列中优先级高的数据。
其中,通过消息队列中数据的优先级,第二进程可以优先处理优先级别高的数据。
在其中一个实施例中,如图6所示,为一个具体实施例中的进程间的数据处理方法的流程图。
首先,第二进程接收到第一进程通过消息队列传输过来的第一地址,基于消息队列中的消息类型,判断是UART1发送的数据还是UART2发送的数据,如果是UART1发送的数据,第二进程则取出数据缓冲区地址中存储的数据,并通过数据长度缓冲区的存储地址中的数据长度判断数据是否受损,若数据没有受损,第二进程则从第一地址对应的数据缓冲区中取出数据,并对数据进行解析执行,执行完成之后,则清空数据对应的进程间缓冲区。
同样的,如果是UART2发送的数据,第二进程则取出数据长度缓冲区地址中存储的数据长度,并通过数据缓冲区的存储地址中的数据长度判断数据是否受损,若数据没有受损,第二进程则从第一地址对应的数据缓冲区中取出数据,并对数据进行解析执行,执行完成之后,则会清空数据对应的第一进程与第二进程间共享的进程间缓冲区。
应该理解的是,虽然图2-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种进程间的数据传输装置,包括:第一数据接收模块、进程间缓冲区查找模块、数据存储模块和数据传输模块,
其中:
第一数据接收模块702,用于接收待发送数据。
进程间缓冲区查找模块704,用于从第一进程与第二进程共享的至少两个进程间缓冲区中,查找处于空闲状态的闲置进程间缓冲区。
数据存储模块706,用于将待发送数据存储于数据缓冲区,闲置进程间缓冲区包括所述数据缓冲区。
数据传输模块708,用于将第一地址传输给第二进程。
可选的,所述装置还包括:
数据长度传输模块,用于将第二地址传输给第二进程。
在一个实施例中,本申请还提供了一种进程间的数据处理装置,包括:第二数据接收模块802,数据处理模块804,数据缓冲区处理模块806,其中:
第二数据接收模块802,用于接收第一进程传输的第一地址;第一进程与第二进程之间共享有至少两个进程间缓冲区,进程间缓冲区包括数据缓冲区。
数据处理模块804,用于从第一地址对应的数据缓冲区中取出数据,并处理数据。
数据缓冲区处理模块806,用于当第二进程处理完成所述数据,清空数据缓冲区。
可选的,所述装置还包括:
数据长度处理模块,用于根据第二地址中的数据长度,判断数据是否受损;数据没有受损,则从所述据缓冲区的地址中取出数据,并处理数据。
在其中一个实施例中,还提供了一种进程间的数据传输和处理装置,所述装置包括:
第一数据接收模块702,用于接收待发送数据。
进程间缓冲区查找模块704,用于从第一进程与第二进程共享的至少两个进程间缓冲区中,查找处于空闲状态的闲置进程间缓冲区。
数据存储模块706,用于将待发送数据存储于数据缓冲区,闲置进程间缓冲区包括所述数据缓冲区。
数据传输模块708,用于将第一地址传输给第二进程。数据长度传输模块,用于将第二地址传输给第二进程。
第二数据接收模块802,用于接收第一进程传输的第一地址;第一进程与第二进程之间共享有至少两个进程间缓冲区,进程间缓冲区包括数据缓冲区。
数据处理模块804,用于从第一地址对应的数据缓冲区中取出数据,并处理数据。
数据缓冲区处理模块806,用于当第二进程处理完成所述数据,清空数据缓冲区。
数据长度处理模块808,用于根据第二地址中的数据长度,判断数据是否受损;数据没有受损,则从所述据缓冲区的地址中取出数据,并处理数据。
可选的,所述装置还包括:
数据长度传输模块,用于将第二地址传输给第二进程。
数据长度处理模块,用于根据第二地址中的数据长度,判断数据是否受损;数据没有受损,则从所述据缓冲区的地址中取出数据,并处理数据。
关于进程间的数据传输装置、进程间的数据处理装置的具体限定可以参见上文中对于进程间的数据处理方法的限定,在此不再赘述。上述进程间的数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种进程间的数据传输方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种进程间的数据传输方法,其特征在于,包括:
第一进程接收待发送数据;
第一进程从第一进程与第二进程共享的至少两个进程间缓冲区中,查找处于空闲状态的闲置进程间缓冲区,每一所述进程间缓冲区均包括数据缓冲区;
第一进程将所述待发送数据存储于所述闲置进程间缓冲区的数据缓冲区,所述闲置进程间缓冲区的数据缓冲区具有第一地址;
第一进程将所述第一地址传输给第二进程。
2.根据权利要求1所述的进程间的数据传输方法,其特征在于,每一所述进程间缓冲区均包括数据长度缓冲区,所述进程间的数据传输方法还包括:
第一进程将所述待发送数据的数据长度存储于所述闲置进程间缓冲区的数据长度缓冲区,所述闲置进程间缓冲区的数据长度缓冲区具有第二地址;
第一进程将所述第二地址传输给第二进程。
3.根据权利要求2所述的进程间的数据传输方法,其特征在于,还包括:
第一进程将所述第一地址、所述第二地址写入消息队列,通过所述消息队列将所述第一地址、所述第二地址传输给第二进程。
4.根据权利要求3所述的进程间的数据传输方法,其特征在于,还包括:
所述消息队列中包括消息类型,第一进程根据所述消息类型确定所述消息队列中的数据的优先级。
5.一种进程间的数据处理方法,其特征在于,用于处理如权利要求1-4任一项所述的进程间的数据传输方法所传输的数据,所述进程间的数据处理方法包括:
第二进程接收第一进程传输的所述第一地址;
第二进程从所述第一地址对应的数据缓冲区中取出数据,并处理所述数据;
第二进程处理完成所述数据后,清空所述第一地址对应的数据缓冲区。
6.根据权利要求5所述的进程间的数据处理方法,其特征在于,还包括:
第二进程接收第一进程传输的所述第二地址;
第二进程从所述第二地址对应的数据长度缓冲区中读取数据长度,判断数据是否受损;
若所述数据没有受损,则从所述第一地址对应的数据缓冲区中取出数据,并处理所述数据。
7.根据权利要求6所述的进程间的数据处理方法,其特征在于,还包括:
第二进程接收第一进程通过消息队列传输的所述第一地址、所述第二地址。
8.根据权利要求7所述的进程间的数据处理方法,其特征在于,所述从所述第一地址对应的数据缓冲区中取出数据,并处理所述数据,包括:
第二进程基于所述消息队列中数据的优先级,优先处理所述消息队列中优先级高的数据。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011386528.9A CN112506676B (zh) | 2020-12-02 | 2020-12-02 | 进程间的数据传输方法、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011386528.9A CN112506676B (zh) | 2020-12-02 | 2020-12-02 | 进程间的数据传输方法、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112506676A true CN112506676A (zh) | 2021-03-16 |
CN112506676B CN112506676B (zh) | 2024-04-05 |
Family
ID=74968327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011386528.9A Active CN112506676B (zh) | 2020-12-02 | 2020-12-02 | 进程间的数据传输方法、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112506676B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114928652A (zh) * | 2022-04-29 | 2022-08-19 | 高德软件有限公司 | 地图数据传输方法、装置、电子设备、存储介质和程序 |
CN116016805A (zh) * | 2023-03-27 | 2023-04-25 | 四川弘和通讯集团有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078799A1 (en) * | 2002-10-17 | 2004-04-22 | Maarten Koning | Interpartition communication system and method |
CN1638357A (zh) * | 2003-10-31 | 2005-07-13 | 朗迅科技公司 | 具有链表处理器的存储器管理系统 |
US20060174251A1 (en) * | 2005-02-03 | 2006-08-03 | Level 5 Networks, Inc. | Transmit completion event batching |
US20080120476A1 (en) * | 2006-11-17 | 2008-05-22 | Sun Microsystems, Inc. | Method and system for file access using a shared memory |
CN101258484A (zh) * | 2005-07-08 | 2008-09-03 | 微软公司 | 用于图形适配器的虚拟化的资源管理 |
CN101894044A (zh) * | 2003-02-18 | 2010-11-24 | 微软公司 | 用于调度协处理器的处理的方法和系统 |
CN102591815A (zh) * | 2011-12-27 | 2012-07-18 | Tcl集团股份有限公司 | 一种用环形数据缓冲区读写批量数据的方法及装置 |
US20140244944A1 (en) * | 2013-02-25 | 2014-08-28 | Barco N.V. | Wait-free algorithm for inter-core, inter-process, or inter-task communication |
US20150317280A1 (en) * | 2014-04-30 | 2015-11-05 | William R. Magro | Method to optimize network data flows within a constrained system |
CN106126359A (zh) * | 2016-08-25 | 2016-11-16 | 成都交大光芒科技股份有限公司 | 进程间共享数据的快速传输方法 |
WO2017096633A1 (zh) * | 2015-12-09 | 2017-06-15 | 美的集团股份有限公司 | Uart的数据处理控制方法及控制装置 |
CN108282521A (zh) * | 2018-01-11 | 2018-07-13 | 深圳市广和通无线股份有限公司 | Bip协议数据传输的方法、装置、计算机设备和存储介质 |
CN110083468A (zh) * | 2019-05-05 | 2019-08-02 | Oppo广东移动通信有限公司 | 一种数据传输方法、电子装置和存储介质 |
CN111131081A (zh) * | 2019-12-31 | 2020-05-08 | 武汉绿色网络信息服务有限责任公司 | 一种支持多进程的高性能单向传输的方法和装置 |
CN111367687A (zh) * | 2020-02-28 | 2020-07-03 | 罗普特科技集团股份有限公司 | 进程间数据通信方法和装置 |
US10846117B1 (en) * | 2015-12-10 | 2020-11-24 | Fireeye, Inc. | Technique for establishing secure communication between host and guest processes of a virtualization architecture |
-
2020
- 2020-12-02 CN CN202011386528.9A patent/CN112506676B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078799A1 (en) * | 2002-10-17 | 2004-04-22 | Maarten Koning | Interpartition communication system and method |
CN101894044A (zh) * | 2003-02-18 | 2010-11-24 | 微软公司 | 用于调度协处理器的处理的方法和系统 |
CN1638357A (zh) * | 2003-10-31 | 2005-07-13 | 朗迅科技公司 | 具有链表处理器的存储器管理系统 |
US20060174251A1 (en) * | 2005-02-03 | 2006-08-03 | Level 5 Networks, Inc. | Transmit completion event batching |
CN101258484A (zh) * | 2005-07-08 | 2008-09-03 | 微软公司 | 用于图形适配器的虚拟化的资源管理 |
US20080120476A1 (en) * | 2006-11-17 | 2008-05-22 | Sun Microsystems, Inc. | Method and system for file access using a shared memory |
CN102591815A (zh) * | 2011-12-27 | 2012-07-18 | Tcl集团股份有限公司 | 一种用环形数据缓冲区读写批量数据的方法及装置 |
US20140244944A1 (en) * | 2013-02-25 | 2014-08-28 | Barco N.V. | Wait-free algorithm for inter-core, inter-process, or inter-task communication |
US20150317280A1 (en) * | 2014-04-30 | 2015-11-05 | William R. Magro | Method to optimize network data flows within a constrained system |
WO2017096633A1 (zh) * | 2015-12-09 | 2017-06-15 | 美的集团股份有限公司 | Uart的数据处理控制方法及控制装置 |
US10846117B1 (en) * | 2015-12-10 | 2020-11-24 | Fireeye, Inc. | Technique for establishing secure communication between host and guest processes of a virtualization architecture |
CN106126359A (zh) * | 2016-08-25 | 2016-11-16 | 成都交大光芒科技股份有限公司 | 进程间共享数据的快速传输方法 |
CN108282521A (zh) * | 2018-01-11 | 2018-07-13 | 深圳市广和通无线股份有限公司 | Bip协议数据传输的方法、装置、计算机设备和存储介质 |
CN110083468A (zh) * | 2019-05-05 | 2019-08-02 | Oppo广东移动通信有限公司 | 一种数据传输方法、电子装置和存储介质 |
CN111131081A (zh) * | 2019-12-31 | 2020-05-08 | 武汉绿色网络信息服务有限责任公司 | 一种支持多进程的高性能单向传输的方法和装置 |
CN111367687A (zh) * | 2020-02-28 | 2020-07-03 | 罗普特科技集团股份有限公司 | 进程间数据通信方法和装置 |
Non-Patent Citations (4)
Title |
---|
CHEN HONGYAN ET.AL: "Research and implementation of database high performance sorting algorithm with big data", 2017 IEEE 2ND INTERNATIONAL CONFERENCE ON BIG DATA ANALYSIS (ICBDA), 23 October 2017 (2017-10-23) * |
MELONBOY: "双缓冲的设计和应用", Retrieved from the Internet <URL:https://www.cnblogs.com/melonboy/archive/2012/12/10/2800598.html> * |
孔峻;: "异构多处理器体系下缓冲机制研究", 科技资讯, no. 34, 3 December 2008 (2008-12-03) * |
陈忠贵: "微过滤驱动模型下的加解密文件系统研究", 中国优秀硕士学位论文全文数据库, 15 January 2013 (2013-01-15) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114928652A (zh) * | 2022-04-29 | 2022-08-19 | 高德软件有限公司 | 地图数据传输方法、装置、电子设备、存储介质和程序 |
CN116016805A (zh) * | 2023-03-27 | 2023-04-25 | 四川弘和通讯集团有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112506676B (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108628684B (zh) | 一种基于dpdk的报文处理方法及计算机设备 | |
US8752051B2 (en) | Performing an allreduce operation using shared memory | |
US8694595B2 (en) | Low latency, high bandwidth data communications between compute nodes in a parallel computer | |
US8346928B2 (en) | Administering an epoch initiated for remote memory access | |
US7155550B2 (en) | Program-executing apparatus and portable information processing apparatus | |
US11853767B2 (en) | Inter-core data processing method, system on chip and electronic device | |
CN111190854B (zh) | 通信数据处理方法、装置、设备、系统和存储介质 | |
US20090046585A1 (en) | Determining Communications Latency for Transmissions Between Nodes in a Data Communications Network | |
CN112506676A (zh) | 进程间的数据传输方法、计算机设备和存储介质 | |
US7890597B2 (en) | Direct memory access transfer completion notification | |
US20150121376A1 (en) | Managing data transfer | |
CN111427806A (zh) | 一种双核amp系统共用串口的方法、存储介质及智能终端 | |
US20230153153A1 (en) | Task processing method and apparatus | |
CN116450554A (zh) | 中断处理方法、根复合体设备及电子设备 | |
EP1936514B1 (en) | Apparatus and method for controlling issue of requests to another operation processing device | |
CN114371920A (zh) | 一种基于图形处理器加速优化的网络功能虚拟化系统 | |
GB2519578A (en) | Managing data transfer | |
EP4310678A1 (en) | Accelerator control system, accelerator control method, and accelerator control program | |
EP4310679A1 (en) | Accelerator control system, accelerator control method, and accelerator control program | |
WO2024174877A1 (zh) | 虚拟机迁移加速方法、系统、迁移设备及介质 | |
WO2023226787A1 (zh) | 通信方法、系统、装置和电子设备 | |
JP2002169699A (ja) | 複数の仮想計算機を用いた通信システム | |
CN115344192A (zh) | 一种数据处理方法、装置及电子设备 | |
CN115202902A (zh) | 控制进程交互的方法及相关装置 | |
CN118796738A (zh) | 基于dpu的数据搬移方法、装置、电子设备及存储介质 |
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 |