CN103176855A - 消息交互处理方法及装置 - Google Patents
消息交互处理方法及装置 Download PDFInfo
- Publication number
- CN103176855A CN103176855A CN2013100829960A CN201310082996A CN103176855A CN 103176855 A CN103176855 A CN 103176855A CN 2013100829960 A CN2013100829960 A CN 2013100829960A CN 201310082996 A CN201310082996 A CN 201310082996A CN 103176855 A CN103176855 A CN 103176855A
- Authority
- CN
- China
- Prior art keywords
- memory block
- message
- state space
- user
- cpu
- 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.)
- Pending
Links
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/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- 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/544—Buffers; Shared memory; Pipes
-
- 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/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种消息交互处理方法及装置,该方法包括:向中央处理器CPU和/或芯片申请预定大小的第一内存块;该CPU与芯片通过该第一内存块进行消息交互,其中,上述第一内存块用于存放至少两条消息,通过本发明,解决了在CPU与芯片之间的消息交互量大的情况下,状态之间的频繁切换导致资源开销大,消息传送效率不高的问题,进而达到显著提高收发消息的效率,以及网络设备的性能的效果。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种消息交互处理方法及装置。
背景技术
网络设备启动以及运行过程中,控制层软件会频繁的与芯片进行交互。比如,芯片初始化过程中,会对大量寄存器进行配置;再如,芯片运行过程中,用户可能下发很多配置,操作大量的芯片表项。对芯片而言,主要就是读写芯片内部或者外部存储器、内部寄存器。目前很多网络设备表项、寄存器配置是通过中央处理器(Central Processing Unit,简称为CPU)与芯片进行消息交互实现的。
目前Linux操作系统广泛应用于网络设备驱动中,Linux系统分为用户态和内核态两个层面,图1是相关技术中Linux系统设备驱动软件层次示意图,如图1所示,以CPU与网络芯片为例进行说明。CPU包括的两个层面:用户态和内核态分别对应于用户态内存和用户态内存,CPU与网络芯片通过总线相连。图2是相关技术中通常的消息发送驱动软件层次示意图,如图2所示,网络设备驱动发送消息的通常做法包括:为每一条消息申请用户态内存,消息填写到该内存中,通过write(写)系统调用进入内核态,将消息内容由用户态内存拷贝到内核态缓冲区中,最后写入芯片。图3是相关技术中通过的消息接收驱动软件层次示意图,如图3所示,该消息接收流程包括:消息上报引入硬件中断,内核驱动从芯片读取消息到内核缓冲区,然后通过read(读)系统调用切换到用户态,消息从内核缓冲区读取到用户态内存中。每次消息发送、接收都会引入用户态内存申请、释放操作,另外引入一次用户态、内核态切换,在Linux系统下用户态、内核态的切换开销是非常大的。
上述传统做法只能应用于消息收发频率不高的情况。如果CPU与芯片间消息交互的吞吐量比较大,将会导致系统不断的申请、释放内存,并且不断地进行用户空间、内核空间的切换(或称为用户态与内核态的切换),对网络设备的CPU是一个很大的负担,同时降低了消息传送效率。
因此,在相关技术中在CPU与芯片之间的消息交互量大的情况下,状态之间的频繁切换导致资源开销大,消息传送效率不高的问题。
发明内容
本发明提供了一种消息交互处理方法及装置,以至少解决现有技术在CPU与芯片之间的消息交互量大的情况下,状态之间的频繁切换导致资源开销大,消息传送效率不高的问题。
根据本发明的一个方面,提供了一种消息交互处理方法,包括:向中央处理器CPU和/或芯片申请预定大小的第一内存块;所述CPU与所述芯片通过所述第一内存块进行消息交互,其中,所述第一内存块用于存放至少两条消息。
优选地,在所述CPU与所述芯片通过所述内存块进行消息交互之前或之后,还包括:向所述CPU的用户态空间和/或内核态空间申请与所述第一内存块大小相同的第二内存块;所述用户态空间与所述内核态空间根据所述第二内存块进行消息交互。
优选地,所述用户态空间通过以下方式至少之一,与所述内核态空间根据所述第二内存块进行消息交互:根据接收到的用于进行消息交互的控制命令,所述用户态空间与所述内核态空间根据所述第二内存块进行消息交互;判断内存块中所存放的消息总长度是否达到预定阈值,在判断到达所述预定阈值时,所述用户态空间与所述内核态空间根据所述第二内存块进行消息交互。
优选地,在所述CPU与所述芯片通过所述第一内存块进行消息交互之后,还包括:释放所述第一内存块和/或所述第二内存块。
优选地,所述第一内存块和/或所述第二内存块中所存放的消息携带有消息头,所述消息头中包括有用于表征所述消息大小的信息。
优选地,每个所述内存块对应于一个标识符,所述标识符用于标识所述内存块的消息的长度及消息的数目。
根据本发明的另一方面,提供了一种消息交互处理装置,包括:第一申请模块,用于向中央处理器CPU和/或芯片申请预定大小的第一内存块;第一交互模块,用于所述CPU与所述芯片通过所述第一内存块进行消息交互,其中,所述第一内存块用于存放至少两条消息。
优选地,该装置还包括:第二申请模块,用于向所述CPU的用户态空间和/或内核态空间申请与所述第一内存块大小相同的第二内存块;第二交互模块,用于所述用户态空间与所述内核态空间根据所述第二内存块进行消息交互。
优选地,所述第二交互模块,还用于所述用户态空间通过以下方式至少之一,与所述内核态空间根据所述第二内存块进行消息交互:根据接收到的用于进行消息交互的控制命令,所述用户态空间与所述内核态空间根据所述第二内存块进行消息交互;判断内存块中所存放的消息总长度是否达到预定阈值,在判断到达所述预定阈值时,所述用户态空间与所述内核态空间根据所述第二内存块进行消息交互。
优选地,该装置还包括:释放模块,用于释放所述第一内存块和/或所述第二内存块。
通过本发明,采用向中央处理器CPU和/或芯片申请预定大小的第一内存块;所述CPU与所述芯片通过所述第一内存块进行消息交互,其中,所述第一内存块用于存放至少两条消息,解决了在CPU与芯片之间的消息交互量大的情况下,状态之间的频繁切换导致资源开销大,消息传送效率不高的问题,进而达到显著提高收发消息的效率,以及网络设备的性能的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是相关技术中Linux系统设备驱动软件层次示意图;
图2是相关技术中通常的消息发送驱动软件层次示意图;
图3是相关技术中通过的消息接收驱动软件层次示意图;
图4是根据本发明实施例的消息交互处理方法的流程图;
图5是根据本发明实施例的消息交互处理装置的结构框图;
图6a是根据本发明实施例的消息交互处理装置的优选结构框图一;
图6b是根据本发明实施例的消息交互处理装置的优选结构框图二;
图7是根据本发明实施例的消息交互处理装置的优选结构框图三;
图8是根据本发明实施例的消息打包收发软件层次示意图;
图9是根据本发明实施例的芯片与CPU之间消息交互示意图;
图10是根据本发明实施例的消息打包发送流程图;
图11是根据本发明实施例的消息打包接收流程图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在本实施例中提供了一种消息交互处理方法,图4是根据本发明实施例的消息交互处理方法的流程图,如图4所示,该流程包括如下步骤:
步骤S402,向中央处理器CPU和/或芯片申请预定大小的第一内存块;
步骤S404,CPU与芯片通过上述第一内存块进行消息交互,其中,该第一内存块用于存放至少两条消息。
通过上述步骤,CPU与芯片通过用于存放至少两条消息的第一内存块来进行消息交互,相对于现有技术中CPU与芯片之间每进行一条信息交互(接收、发送)均需要单独申请、释放内存,每一条消息的交互均需要涉及到状态的切换,从而导致资源消耗大,系统负担重,以及消息传送效率低下的问题,通过采用可以存放至少两条消息的内存块来实现消息的交互,不仅解决了在CPU与芯片之间的消息交互量大的情况下,状态之间的频繁切换导致资源开销大,消息传送效率不高的问题,显著提高了收发消息的效率,以及网络设备的性能。
较优地,为了更进一步地提高收发消息的效率,消息在CPU内部的处理也采用上述处理方式,首先,向CPU的用户态空间和/或内核态空间申请与第一内存块大小相同的第二内存块;用户态空间与内核态空间根据该第二内存块进行消息交互。在CPU向芯片发送消息时,上述处理步骤在CPU与芯片通过第一内存块进行消息交互之前完成;在CPU接收来自芯片的消息时,上述处理步骤则在CPU与芯片通过第一内存块进行消息交互之后完成。需要说明的是,用户态空间与上述内核态空间根据第二内存块进行消息交互时,可以采用多种处理方式,例如,可以根据接收到的用于进行消息交互的控制命令,该用户态空间与内核态空间根据该第二内存块进行消息交互;又例如,可以先判断内存块中所存放的消息总长度是否达到预定阈值,在判断到达该预定阈值时,用户态空间与内核态空间根据该第二内存块进行消息交互。
为了使资源得到重复利用,或是用于它用,在CPU与芯片通过该第一内存块进行消息交互之后,释放第一内存块和/或第二内存块。较优地,该第一内存块和/或第二内存块中所存放的消息携带有消息头,该消息头中包括有用于表征该消息大小的信息。每个内存块对应于一个标识符,该标识符用于标识内存块的消息的长度及消息的数目。
在本实施例中还提供了一种消息交互处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本发明实施例的消息交互处理装置的结构框图,如图5所示,该装置包括第一申请模块52、第一交互模块54,下面对该消息交互处理装置进行说明。
第一申请模块52,用于向中央处理器CPU和/或芯片申请预定大小的第一内存块;第一交互模块54,连接至上述第一申请模块52,用于CPU与芯片通过该第一内存块进行消息交互,其中,该第一内存块用于存放至少两条消息。
图6a是根据本发明实施例的消息交互处理装置的优选结构框图一,如图6a所示,该装置除包括图5所示的所有模块外,还包括第二申请模块62和第二交互模块64,针对CPU向芯片发送消息的流程,该优选结构框图的连接方式如下:
第二申请模块62,连接至上述第一申请模块52,用于向CPU的用户态空间和/或内核态空间申请与第一内存块大小相同的第二内存块;第二交互模块64,连接至上述第二申请模块62与上述第一交互模块54,用于用户态空间与内核态空间根据上述第二内存块进行消息交互。
图6b是根据本发明实施例的消息交互处理装置的优选结构框图二,如图6b所示,该优选结构框图针对CPU从芯片接收消息的流程,所包括的模块与图6a相同,但连接关系存在以下差别:上述第二申请模块62,连接至上述第一交互模块54;第二交互模块64,连接至上述第二申请模块62。
优选地,该第二交互模块64,还用于用户态空间通过以下方式至少之一,与内核态空间根据该第二内存块进行消息交互:根据接收到的用于进行消息交互的控制命令,用户态空间与内核态空间根据该第二内存块进行消息交互;判断内存块中所存放的消息总长度是否达到预定阈值,在判断到达该预定阈值时,用户态空间与内核态空间根据该第二内存块进行消息交互。
图7是根据本发明实施例的消息交互处理装置的优选结构框图三,如图7所示,该装置除包括图5所示的所有模块外,还包括释放模块72,用于释放上述第一内存块和/或上述第二内存块。
在本实施你中提供了一种应用于Linux操作系统下网络设备驱动中快速消息收发方法,在该方法中,芯片驱动程序为字符设备驱动,即驱动程序将芯片作为文件进行操作,用户态驱动程序和内核态驱动程序通过文件流进行交互。芯片驱动首先要为芯片初始化file_operation结构,该结构包括该字符设备的打开(open)、关闭(close)、读(read)、写(write)、控制(ioctl)等。
较佳地,在本实施例中所提供的快速消息发送、接收方法,可以分别通过write、read系统调用来实现。图8是根据本发明实施例的消息打包收发软件层次示意图,如图8所示,消息发送、接收过程中用户态、核心态中内存的申请、释放是基于一个固定大小的内存块操作。具体地讲,如果消息平均大小为128字节,可以申请64K大小的内存块,即一个内存块(buffer)可以存储500条左右的消息(msg)。另外,消息发送、接收过程中用户空间、内核空间之间的切换也不是基于每条单独的消息进行,而是基于内存块进行。
图9是根据本发明实施例的芯片与CPU之间消息交互示意图,如图9所示,消息发送、接收过程中每个内存块中的消息可以背靠背地存放;每条消息前面有消息头,表征消息大小,这样通过消息头可以很容易区分开一条一条报文。消息发送、接收过程中每个内存块也都可以对应于一个描述符,该描述符可以包含buffer中所包含的有效消息的长度及数目。
消息打包发送将引入一次用户空间和内核空间的切换,将用户空间的内存块内容拷贝至内核空间内存块。用户空间和内核空间切换可以采用以下两种方式:用户手动Flush发送或者用户内存块存放消息总大小到达阈值。阈值大小=buffer大小–单个消息的最大长度。
图10是根据本发明实施例的消息打包发送流程图,如图10所示,该流程包括如下步骤:
步骤S1002,开始;
步骤S1004,判断是否分配用户态内存。如果已分配,进入步骤S1008,否则进入步骤S1006;
步骤S1006,申请用户态内存(buffer)。该内存块用于存放一条条消息;
步骤S1008,消息填充。Buffer描述符中记录有当前消息总大小buf_size,将新消息填充到当前buffer的尾部(消息内容拷贝至相对于内存块地址buf_size偏移量的位置);每条消息发送时,在其前面加上一个消息头,消息头包含该条消息的长度;
步骤S1010,判断是否手动发送(Flush)?如果启用flush发送,即不等到buffer满就发送,进入步骤S1014,否则进入步骤S1012;
步骤S1012,判断当前用户buffer是否满?即是否达到阈值?如果buffer中存放消息大小(buf_size)达到buffer阈值,即buffer已满,则进入步骤S1014,否则进入步骤S1018;
步骤S1014,执行write系统调用,向芯片写消息。由用户空间切换至内核空间。具体可以包括如下步骤:申请内核态内存块,大小与用户空间内存块大小相同;从用户空间内存块拷贝消息内容到内核态内存块中;从内核空间内存块取出消息,逐条写入芯片;释放内核态内存块;
步骤S1016,释放用户态内存块。从内核空间切换至用户空间,释放当前用户空间内存块;
步骤S1018,结束。
图11是根据本发明实施例的消息打包接收流程图,如图11所示,该流程包括:
消息接收流程,需要在用户态创建一个接收进程,循环执行read系统调用。如图11中椭圆框内所示。在没有消息上报的情况下,read系统调用在内核进程被信号量挂起;有消息上报将引入硬件中断,中断将触发中断处理例程,中断处理例程包括:中断屏蔽和释放信号量的操作,挂起的内核读消息进程被唤醒,开始读取消息内容。消息读取完成,将消息内容由内核态内存读取至用户态内存,释放内核态内存,用户态程序负责解析内存块中消息内容,读取完毕释放用户态内存。
如图11所示的消息打包接收流程图包括如下步骤:
步骤S1102;创建用户态消息接收进程,该进程在芯片运行过程中一直存在;
步骤S1104,申请用户态内存,内存块大小为预置的固定大小;
步骤S1106,执行read系统调用;
步骤S1108,是否存在消息?由用户空间切换至内核空间,读取芯片相应寄存器判断是否有消息未读,如果有消息未读,跳至步骤S1118;否则进入步骤S1110;
步骤S1110,开启中断。开启芯片中断屏蔽寄存器,即不屏蔽中断;
步骤S1112,内核读进程阻塞。内核读进程挂起,等待中断释放信号量;
步骤S1114,中断产生。芯片有消息上报,触发硬件中断;
步骤S1116,执行中断处理例程。中断处理程序首先关闭中断(屏蔽消息中断源),释放信号量,唤醒挂起的读进程(步骤S1112);
步骤S1118,申请内核态内存;
步骤S1120,消息填充。将消息逐条从芯片中读出,加上携带消息长度的消息头,背靠背地存放到内核内存块中;
步骤S1122,内存拷贝。芯片消息读取完成,或者内核内存块填满(到达预设的阈值)。将消息从内核内存块读取到用户态内存块中。拷贝完毕,释放内核态内存;
步骤S1124,消息读取。从内核空间切换至用户空间。用户态程序从buffer描述符获得消息数目,根据消息头中报文长度解析出消息内容,逐条读取出来;最后释放用户态内存块。跳至步骤S1104。
需要说明的是:(1)在本实施例中所有内存块都按照统一大小申请;(2)消息接收为一个进程,循环地执行read系统调用读取消息(如图11椭圆框所示)。因此步骤S1124步骤之后会跳回步骤S1104;另外,中断(步骤S1114)是一个异步事件,芯片上报消息才会产生中断;(3)消息接收过程,从内核态内存向用户态内存拷贝可以采用以下两种方式(即存在两种情况):①消息全部读完②消息总大小超过一个buffer的大小,第一种情况在内存拷贝完成后,打开中断屏蔽寄存器,等待下次中断到来;第二种情况,继续读取消息,直到消息读完后开启中断屏蔽寄存器。
通过上述实施例及优选实施方式,解决了Linux系统下CPU和芯片间大量交互消息情况下的效率低下问题,大幅度的提高了消息交互的吞吐量。首先,内存申请采用以比较大的内存块申请,避免了基于单条消息的频繁的内存申请、释放操作,减少了系统损耗及内存碎片的产生;另外,用户空间、内核空间切换也是基于内存块进行,大大减少了Linux系统下用户空间、内核空间切换的巨大开销。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种消息交互处理方法,其特征在于,包括:
向中央处理器CPU和/或芯片申请预定大小的第一内存块;
所述CPU与所述芯片通过所述第一内存块进行消息交互,其中,所述第一内存块用于存放至少两条消息。
2.根据权利要求1所述的方法,其特征在于,在所述CPU与所述芯片通过所述内存块进行消息交互之前或之后,还包括:
向所述CPU的用户态空间和/或内核态空间申请与所述第一内存块大小相同的第二内存块;
所述用户态空间与所述内核态空间根据所述第二内存块进行消息交互。
3.根据权利要求2所述的方法,其特征在于,所述用户态空间通过以下方式至少之一,与所述内核态空间根据所述第二内存块进行消息交互:
根据接收到的用于进行消息交互的控制命令,所述用户态空间与所述内核态空间根据所述第二内存块进行消息交互;
判断内存块中所存放的消息总长度是否达到预定阈值,在判断到达所述预定阈值时,所述用户态空间与所述内核态空间根据所述第二内存块进行消息交互。
4.根据权利要求1或2所述的方法,其特征在于,在所述CPU与所述芯片通过所述第一内存块进行消息交互之后,还包括:
释放所述第一内存块和/或所述第二内存块。
5.根据权利要求1或2所述的方法,其特征在于,所述第一内存块和/或所述第二内存块中所存放的消息携带有消息头,所述消息头中包括有用于表征所述消息大小的信息。
6.根据权利要求1或2所述的方法,其特征在于,每个所述内存块对应于一个标识符,所述标识符用于标识所述内存块的消息的长度及消息的数目。
7.一种消息交互处理装置,其特征在于,包括:
第一申请模块,用于向中央处理器CPU和/或芯片申请预定大小的第一内存块;
第一交互模块,用于所述CPU与所述芯片通过所述第一内存块进行消息交互,其中,所述第一内存块用于存放至少两条消息。
8.根据权利要求7所述的装置,其特征在于,还包括:
第二申请模块,用于向所述CPU的用户态空间和/或内核态空间申请与所述第一内存块大小相同的第二内存块;
第二交互模块,用于所述用户态空间与所述内核态空间根据所述第二内存块进行消息交互。
9.根据权利要求8所述的装置,其特征在于,所述第二交互模块,还用于所述用户态空间通过以下方式至少之一,与所述内核态空间根据所述第二内存块进行消息交互:
根据接收到的用于进行消息交互的控制命令,所述用户态空间与所述内核态空间根据所述第二内存块进行消息交互;
判断内存块中所存放的消息总长度是否达到预定阈值,在判断到达所述预定阈值时,所述用户态空间与所述内核态空间根据所述第二内存块进行消息交互。
10.根据权利要求7或8所述的装置,其特征在于,还包括:
释放模块,用于释放所述第一内存块和/或所述第二内存块。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013100829960A CN103176855A (zh) | 2013-03-15 | 2013-03-15 | 消息交互处理方法及装置 |
EP14762273.2A EP2975519A4 (en) | 2013-03-15 | 2014-03-05 | INTERACTIVE MESSAGE PROCESSING METHOD AND APPARATUS |
PCT/CN2014/072924 WO2014139367A1 (zh) | 2013-03-15 | 2014-03-05 | 消息交互处理方法及装置 |
US14/776,969 US9836338B2 (en) | 2013-03-15 | 2014-03-05 | Method and apparatus for message interactive processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013100829960A CN103176855A (zh) | 2013-03-15 | 2013-03-15 | 消息交互处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103176855A true CN103176855A (zh) | 2013-06-26 |
Family
ID=48636755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013100829960A Pending CN103176855A (zh) | 2013-03-15 | 2013-03-15 | 消息交互处理方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9836338B2 (zh) |
EP (1) | EP2975519A4 (zh) |
CN (1) | CN103176855A (zh) |
WO (1) | WO2014139367A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014139367A1 (zh) * | 2013-03-15 | 2014-09-18 | 中兴通讯股份有限公司 | 消息交互处理方法及装置 |
CN109547727A (zh) * | 2018-10-16 | 2019-03-29 | 视联动力信息技术股份有限公司 | 数据缓存方法和装置 |
CN110098993A (zh) * | 2019-04-02 | 2019-08-06 | 视联动力信息技术股份有限公司 | 一种信令报文的处理方法和装置 |
CN110109761A (zh) * | 2019-05-11 | 2019-08-09 | 肖银皓 | 一种用户态管理操作系统内核内存方法及系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107463856B (zh) * | 2017-08-01 | 2020-06-16 | 杭州中天微系统有限公司 | 一种基于可信内核的防攻击数据处理器 |
CN110602225A (zh) * | 2019-09-19 | 2019-12-20 | 北京天地和兴科技有限公司 | 一种适用于工控环境的linux系统高效收发包方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080162860A1 (en) * | 2006-12-27 | 2008-07-03 | Freescale Semiconductor, Inc. | Dynamic allocation of message buffers |
CN101304373A (zh) * | 2008-06-25 | 2008-11-12 | 中兴通讯股份有限公司 | 一种实现局域网内高效传输大块数据的方法及系统 |
CN101340574A (zh) * | 2008-08-04 | 2009-01-07 | 中兴通讯股份有限公司 | 一种实现零拷贝发送流媒体数据的方法及系统 |
US20110010723A1 (en) * | 2009-07-07 | 2011-01-13 | Ricoh Company, Ltd. | Information processing apparatus, information processing method and computer-readable storage medium |
CN102880573A (zh) * | 2012-09-04 | 2013-01-16 | 武汉邮电科学研究院 | 一种基于Linux系统的串行RapidIo数据传输方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0600417D0 (en) * | 2006-01-10 | 2006-02-15 | Level 5 Networks Inc | Virtualisation support |
US7720802B2 (en) * | 2007-01-03 | 2010-05-18 | International Business Machines Corporation | Reclaiming resident buffers when a reclaim threshold has been exceeded by swapping the oldest in use buffer and a new buffer, and referencing the new buffer via an updated set of read and write pointers |
CN100487660C (zh) | 2007-05-28 | 2009-05-13 | 中兴通讯股份有限公司 | 一种多线程处理器动态内存管理系统及方法 |
CN101448018A (zh) | 2008-12-26 | 2009-06-03 | 中兴通讯股份有限公司 | 进程间通信方法和装置 |
US20110321056A1 (en) * | 2010-06-23 | 2011-12-29 | International Business Machines Corporation | Dynamic run time allocation of distributed jobs |
CN102135866B (zh) * | 2010-10-29 | 2013-07-17 | 华南理工大学 | 一种基于Xen安全计算机显示优化的方法 |
EP2463777A1 (en) | 2010-12-10 | 2012-06-13 | Alcatel Lucent | System for improving performance of a real time communication application |
US20120239860A1 (en) * | 2010-12-17 | 2012-09-20 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
US8898222B2 (en) * | 2012-01-19 | 2014-11-25 | International Business Machines Corporation | Processing STREAMS messages over a system area network |
CN103176855A (zh) * | 2013-03-15 | 2013-06-26 | 中兴通讯股份有限公司 | 消息交互处理方法及装置 |
-
2013
- 2013-03-15 CN CN2013100829960A patent/CN103176855A/zh active Pending
-
2014
- 2014-03-05 US US14/776,969 patent/US9836338B2/en active Active
- 2014-03-05 WO PCT/CN2014/072924 patent/WO2014139367A1/zh active Application Filing
- 2014-03-05 EP EP14762273.2A patent/EP2975519A4/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080162860A1 (en) * | 2006-12-27 | 2008-07-03 | Freescale Semiconductor, Inc. | Dynamic allocation of message buffers |
CN101304373A (zh) * | 2008-06-25 | 2008-11-12 | 中兴通讯股份有限公司 | 一种实现局域网内高效传输大块数据的方法及系统 |
CN101340574A (zh) * | 2008-08-04 | 2009-01-07 | 中兴通讯股份有限公司 | 一种实现零拷贝发送流媒体数据的方法及系统 |
US20110010723A1 (en) * | 2009-07-07 | 2011-01-13 | Ricoh Company, Ltd. | Information processing apparatus, information processing method and computer-readable storage medium |
CN102880573A (zh) * | 2012-09-04 | 2013-01-16 | 武汉邮电科学研究院 | 一种基于Linux系统的串行RapidIo数据传输方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014139367A1 (zh) * | 2013-03-15 | 2014-09-18 | 中兴通讯股份有限公司 | 消息交互处理方法及装置 |
US9836338B2 (en) | 2013-03-15 | 2017-12-05 | Zte Corporation | Method and apparatus for message interactive processing |
CN109547727A (zh) * | 2018-10-16 | 2019-03-29 | 视联动力信息技术股份有限公司 | 数据缓存方法和装置 |
CN110098993A (zh) * | 2019-04-02 | 2019-08-06 | 视联动力信息技术股份有限公司 | 一种信令报文的处理方法和装置 |
CN110098993B (zh) * | 2019-04-02 | 2020-12-18 | 视联动力信息技术股份有限公司 | 一种信令报文的处理方法和装置 |
CN110109761A (zh) * | 2019-05-11 | 2019-08-09 | 肖银皓 | 一种用户态管理操作系统内核内存方法及系统 |
CN110109761B (zh) * | 2019-05-11 | 2021-06-04 | 广东财经大学 | 一种用户态管理操作系统内核内存方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP2975519A1 (en) | 2016-01-20 |
US20160103718A1 (en) | 2016-04-14 |
US9836338B2 (en) | 2017-12-05 |
WO2014139367A1 (zh) | 2014-09-18 |
EP2975519A4 (en) | 2016-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103176855A (zh) | 消息交互处理方法及装置 | |
CN109565476B (zh) | 使用共享全局存储器储备进行队列保护 | |
US20070133415A1 (en) | Method and apparatus for flow control initialization | |
CN102473115A (zh) | 用于高效数据处理的装置和方法 | |
KR20130099185A (ko) | 단일 모뎀 보드 상의 개선된 멀티-셀 지원을 위한 방법 및 시스템 | |
US8356299B2 (en) | Interrupt processing method and system | |
CN106155960A (zh) | 基于gpio握手和edma的uart串口通信方法 | |
CN102473117A (zh) | 用于存储器管理和高效数据处理的装置和方法 | |
CN108984327B (zh) | 报文转发方法、多核cpu及网络设备 | |
CN102880573A (zh) | 一种基于Linux系统的串行RapidIo数据传输方法 | |
CN101013383A (zh) | 实现多核cpu进行报文联合处理的系统及方法 | |
WO2012164419A1 (en) | Facilitating routing by selectively aggregating contiguous data units | |
US20150312160A1 (en) | System for flexible dynamic reassignment of throughput | |
CN102750245B (zh) | 报文接收方法、报文接收模块、装置及系统 | |
CN101052031B (zh) | 苹果计算机与无线通讯终端进行数据交互的方法 | |
CN102916902A (zh) | 数据存储方法及装置 | |
US9548906B2 (en) | High availability multi-partition networking device with reserve partition and method for operating | |
US5930261A (en) | Bus protocol | |
CN103678163A (zh) | 数据流的切换方法、装置及系统 | |
CN104769553A (zh) | 用于支持集群中的工作共享复用的系统和方法 | |
CN106713462A (zh) | 一种网络数据包处理方法和装置 | |
CN114186163A (zh) | 一种应用层网络数据缓存方法 | |
CN114327882A (zh) | 一种数据转发方法、装置及系统 | |
CN108781170A (zh) | 一种配置装置及方法 | |
Tzeng | Alleviating the impact of tree saturation on multistage interconnection network performance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130626 |