CN1549108A - A Method for Realizing Zero-copy Message Queue in Communication Process - Google Patents
A Method for Realizing Zero-copy Message Queue in Communication Process Download PDFInfo
- Publication number
- CN1549108A CN1549108A CNA031134130A CN03113413A CN1549108A CN 1549108 A CN1549108 A CN 1549108A CN A031134130 A CNA031134130 A CN A031134130A CN 03113413 A CN03113413 A CN 03113413A CN 1549108 A CN1549108 A CN 1549108A
- Authority
- CN
- China
- Prior art keywords
- message
- message queue
- pointer
- queue
- semaphore
- 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
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明涉及一种在通信过程中,实现零拷贝消息队列的方法。零拷贝消息队列是一个由指向消息体数据的指针组成的循环缓冲区,其数据结构包括消息队列的头指针、尾指针、当前消息数目、消息队列的总的消息数目、以及互斥操作信号量、计数信号量等。本发明克服了现有操作系统消息队列中存在多次内存拷贝的缺点,以保证消息通信过程中没有内存拷贝。可广泛地应用于嵌入式操作系统。通过与VxWorks消息队列的对比测试,大大提高了通信速率,同时降低了通信过程中的内存占用,节省了宝贵的系统资源。同时由于支持多种操作系统,因此有利于构建在各种操作系统之上的应用程序的移植。
The invention relates to a method for realizing a zero-copy message queue in a communication process. The zero-copy message queue is a circular buffer composed of pointers to message body data. Its data structure includes the head pointer, tail pointer, current number of messages, total number of messages in the message queue, and mutex operation semaphore , counting semaphores, etc. The invention overcomes the disadvantage of multiple memory copies in the message queue of the existing operating system, so as to ensure that there is no memory copy in the message communication process. It can be widely used in embedded operating systems. Through the comparison test with the VxWorks message queue, the communication rate has been greatly improved, and the memory occupation in the communication process has been reduced, saving valuable system resources. At the same time, because it supports multiple operating systems, it is beneficial to the transplantation of application programs built on various operating systems.
Description
技术领域technical field
本发明涉及一种实现在操作系统任务或线程间进行通信的方法,具体是一种在通信过程中,实现零拷贝消息队列的方法,适用于在嵌入式实时操作系统任务间,通过消息队列进行通信。The invention relates to a method for realizing communication between operating system tasks or threads, in particular to a method for realizing zero-copy message queue in the communication process, which is suitable for communication between embedded real-time operating system tasks through message queue communication.
背景技术Background technique
随着世界经济进入数字新经济时代,电信技术和信息网络技术得到了前所未有的迅猛发展。通信领域从网络到业务的巨大变化推动着数据业务的持续发展,数据业务的流量在2~3年内可能超过话音业务流量。As the world economy enters the new era of digital economy, telecommunication technology and information network technology have achieved unprecedented rapid development. The huge change from the network to the business in the communication field is driving the continuous development of the data service, and the flow of the data service may exceed the flow of the voice service within 2 to 3 years.
基于数据分组交换的业务将在5~10年内覆盖整个传统电信业务。从而在单一话音业务电路交换中的信令流通信方式,变为大量数据业务数据交换中的协议流和信令流通信方式,通信量大大增加,通信速率也在增大,这就对通过操作系统传递控制流数据提出了更高的要求。The business based on data packet switching will cover the entire traditional telecommunication business within 5 to 10 years. Therefore, the communication mode of signaling flow in circuit switching of a single voice service is changed to the communication mode of protocol flow and signaling flow in data exchange of a large number of data services, the communication volume is greatly increased, and the communication rate is also increasing. The system transfers control flow data to put forward higher requirements.
现代操作系统常常是通过消息的方式来进行任务间的通信,消息队列提供了一种高级的任务间通信机制,在嵌入式系统中有广泛的用途。但目前的操作系统提供的消息队列在进行消息通信的过程中,为了提供对任务上下文的保护,通常的做法是将发送任务私有空间的消息拷贝到系统缓冲区,再从系统缓冲区拷贝到接收任务的私有空间中,这样在消息收发过程中存在多次的消息内存拷贝,一方面大量消耗系统资源,另一方面通信效率也大大降低了。Modern operating systems often communicate between tasks through messages. Message queues provide an advanced communication mechanism between tasks and are widely used in embedded systems. However, the message queue provided by the current operating system is in the process of message communication. In order to provide protection for the task context, the usual practice is to copy the message in the private space of the sending task to the system buffer, and then copy it from the system buffer to the receiving In the private space of the task, there are multiple copies of the message memory during the message sending and receiving process. On the one hand, it consumes a lot of system resources, and on the other hand, the communication efficiency is also greatly reduced.
1.在嵌入式实时操作系统VxWorks中,系统通过msgQSend()函数发送消息,通过msgQReceive()函数接收消息。一个消息的发送在接收任务等待该消息队列的情况下,要经过一次内存拷贝:发送任务的私有空间到接收任务的私有空间。而在接收任务没有等待该消息队列时,要经过二次内存拷贝:从发送任务的私有空间到系统消息队列的缓冲区;再从消息队列缓冲区到接收任务的私有空间。如果发送的消息较大,则还必须加大发送任务和接收任务的堆栈空间,否则容易造成堆栈溢出。1. In the embedded real-time operating system VxWorks, the system sends messages through the msgQSend() function and receives messages through the msgQReceive() function. When sending a message, when the receiving task is waiting for the message queue, it needs to go through a memory copy: the private space of the sending task to the private space of the receiving task. When the receiving task is not waiting for the message queue, it needs to go through two memory copies: from the private space of the sending task to the buffer of the system message queue; then from the message queue buffer to the private space of the receiving task. If the message to be sent is large, the stack space of the sending task and the receiving task must also be increased, otherwise it is easy to cause stack overflow.
2.在通用操作系统如Windows NT中,系统通过PostMessage()函数发送异步消息,通过SendMessage()函数发送同步消息,通过GetMessage()或PeekMessage()接收消息。在windows程序中,当应用程序发送一个消息通知指定的窗口执行一个任务时,PostMessage()函数为该消息创建一个MSG消息结构并将该消息拷贝到消息队列中,而应用程序通过消息循环将该消息取出(从消息队列中拷贝到本地上下文),并派发到相应的窗口进行处理。可见,消息在派发过程中也存在多次内存拷贝问题。2. In general-purpose operating systems such as Windows NT, the system sends asynchronous messages through the PostMessage() function, sends synchronous messages through the SendMessage() function, and receives messages through GetMessage() or PeekMessage(). In the windows program, when the application sends a message to notify the specified window to perform a task, the PostMessage() function creates a MSG message structure for the message and copies the message to the message queue, and the application sends the message through the message loop. The message is fetched (copied from the message queue to the local context) and dispatched to the corresponding window for processing. It can be seen that there are multiple memory copy problems in the message distribution process.
再者,通信领域的应用程序大多是基于消息驱动,对消息队列的操作非常频繁,而目前各种操作系统提供的消息队列调用接口不一致,造成应用程序代码的移植很不方便,可读性也很差。Furthermore, most of the applications in the communication field are based on message-driven, and the operations on message queues are very frequent. However, the calling interfaces of message queues provided by various operating systems are inconsistent, which makes the transplantation of application codes very inconvenient and poor in readability. very bad.
发明内容Contents of the invention
本发明的目的是为了克服了现有操作系统消息队列中存在多次内存拷贝的缺点,提出了一种在通信过程中,实现零拷贝消息队列的方法,以保证消息通信过程中没有内存拷贝。本发明支持紧迫和普通两级消息,并提供了多种查询接口,通过对信号量和互斥机制的适配,可广泛地应用于嵌入式操作系统如VxWorks,pSoS,以及通用操作系统Windows NT,Linux等多种操作系统,屏蔽各种操作系统的差异。The purpose of the present invention is to overcome the shortcoming of multiple memory copies in the existing operating system message queue, and propose a method for realizing zero-copy message queue in the communication process, so as to ensure that there is no memory copy in the message communication process. The present invention supports urgent and common two-level messages, and provides multiple query interfaces, and can be widely used in embedded operating systems such as VxWorks, pSoS, and general-purpose operating systems Windows NT through the adaptation of semaphores and mutual exclusion mechanisms , Linux and other operating systems, shielding the differences of various operating systems.
本发明是这样实现的:The present invention is achieved like this:
一种实现通信过程零拷贝消息队列的方法,包括如下步骤:A method for implementing a zero-copy message queue in a communication process, comprising the steps of:
第一步 信号量适配:创建、获取、释放、删除一个对各种操作系统通用的信号量,包括vxworks,pSos,Windows NT,Linux等操作系统。The first step is semaphore adaptation: create, acquire, release, and delete a semaphore common to various operating systems, including vxworks, pSos, Windows NT, Linux and other operating systems.
第二步 互斥量适配:创建、获取、释放、删除一个对各种操作系统通用的互斥量,包括vxworks,pSos,Windows NT,Linux等操作系统。Step 2 Mutex adaptation: Create, acquire, release, and delete a mutex common to various operating systems, including vxworks, pSos, Windows NT, Linux and other operating systems.
第三步 系统消息队列池初始化:系统初始化时在系统缓冲区中分配一个消息队列池创建整个消息队列的索引信息。The third step is to initialize the system message queue pool: when the system is initialized, a message queue pool is allocated in the system buffer to create the index information of the entire message queue.
第四步 创建消息队列:从消息队列池中查找一个尚未分配的消息队列,返回该消息的编号,用于消息的发送和接收。Step 4 Create a message queue: Find an unallocated message queue from the message queue pool, and return the number of the message for sending and receiving messages.
第五步 发送消息:在指定的消息队列上,发送消息数据,如果是紧迫消息,将该消息添加到消息队列头,普通消息,将该消息添加到消息队列尾,最后返回成功或失败。Step 5 Send a message: Send message data on the specified message queue. If it is an urgent message, add the message to the head of the message queue. For ordinary messages, add the message to the end of the message queue, and finally return success or failure.
第六步 接收消息:在指定的消息队列上接收消息,并返回接收缓冲区的指针。如果消息队列为空:当超时参数为0,立即返回空指针;当超时参数为-1,任务进入阻塞队列永久等待;当超时参数为其它值,任务延迟一段时间并继续运行。当消息队列非空时,从消息队列头取出一消息并返回到接收缓冲区。Step 6 Receive the message: Receive the message on the specified message queue and return the pointer to the receive buffer. If the message queue is empty: when the timeout parameter is 0, a null pointer is returned immediately; when the timeout parameter is -1, the task enters the blocking queue and waits forever; when the timeout parameter is other values, the task delays for a period of time and continues to run. When the message queue is not empty, take a message from the head of the message queue and return it to the receive buffer.
第七步删除消息队列:对不用的消息队列需要删除,并释放其占用的内存。删除消息队列是创建消息队列的逆过程,通过对指定的消息队列ID号判断其是否正在使用,若没有使用,删除失败,若正在使用,则将该消息队列中的消息内存释放,清空消息个数,并设置为未用。The seventh step is to delete the message queue: the unused message queue needs to be deleted and the memory occupied by it should be released. Deleting a message queue is the reverse process of creating a message queue. It is judged whether the specified message queue ID number is in use. If it is not in use, the deletion will fail. If it is in use, the message memory in the message queue will be released and the message space will be cleared. number and set to unused.
第八步查询消息数:通过输入索引号获得需要查询的消息队列,并返回其中的消息数。Step 8 Query the number of messages: Obtain the message queue to be queried by inputting the index number, and return the number of messages in it.
采用本发明所述的零拷贝消息通信的方法,通过与VxWorks消息队列的对比测试,与现有技术相比,大大提高了通信速率,同时降低了通信过程中的内存占用,节省了宝贵的系统资源。同时由于其支持多种操作系统,因此有利于构建在各种操作系统之上的应用程序的移植。Adopting the zero-copy message communication method described in the present invention, compared with the prior art, the communication rate is greatly improved by comparing with the VxWorks message queue, and the memory occupation in the communication process is reduced at the same time, saving valuable system resource. At the same time, because it supports multiple operating systems, it is beneficial to the transplantation of application programs built on various operating systems.
附图说明Description of drawings
图1给出的是VxWorks消息队列实现方式;Figure 1 shows the implementation of VxWorks message queue;
图2给出的是零拷贝消息队列实现原理;Figure 2 shows the implementation principle of zero-copy message queue;
图3给出的是零拷贝消息队列的实现流程;Figure 3 shows the implementation process of the zero-copy message queue;
图4给出的是创建消息队列流程;Figure 4 shows the process of creating a message queue;
图5给出的是发送消息流程;Figure 5 shows the process of sending messages;
图6给出的是接收消息流程;Figure 6 shows the process of receiving messages;
图7给出的是删除消息队列流程。Figure 7 shows the process of deleting the message queue.
具体实施方式Detailed ways
图1介绍了VxWorks消息队列实现方式,消息队列在初始化时,在系统空间里分配并初始化一个消息队列。以它能够排队的最大的消息数目以及每个消息的最大字节长度作为参数,预先分配足够的缓冲空间。当任务和ISR调用msgQSend()函数向消息队列发送消息时,如果没有任务在等待该队列中的消息,那么该消息进入消息队列的缓冲。如果有任务等待该队列的消息,那么这个消息立即提交给第一个等待的任务。当消息队列已满时,即当队列没有可用缓冲时,发送任务等待一定的超时。当超时为NO_WAIT(0),发送任务立即返回错误。当超时为WAIT_FOREVER(-1),发送任务进入阻塞任务队列。当超时为其他时,发送任务延迟一段时间再继续运行。任务调用msgQReceive()函数从消息队列接收消息。如果队列缓冲中已有可用的消息,那么第一个消息立即出队列,并返回给调用者。如果没有消息可用,调用者将阻塞,进入等待该消息的任务队列中排队。由此可见,在VxWorks中,一个消息的发送在接收任务等待该消息队列的情况下,要经过一次内存拷贝:发送任务的私有空间到接收任务的私有空间。而在接收任务没有在该消息队列等待时,要经过二次内存拷贝:从发送任务的私有空间到系统消息队列的缓冲区;再从消息队列缓冲区到接收任务的私有空间。Figure 1 introduces the implementation of the VxWorks message queue. When the message queue is initialized, a message queue is allocated and initialized in the system space. It pre-allocates enough buffer space with the maximum number of messages it can queue and the maximum byte length of each message. When the task and ISR call the msgQSend() function to send a message to the message queue, if no task is waiting for the message in the queue, then the message enters the buffer of the message queue. If there are tasks waiting for a message on the queue, the message is immediately submitted to the first waiting task. When the message queue is full, that is, when the queue has no available buffers, the sending task waits for a certain timeout. When the timeout is NO_WAIT(0), the sending task returns an error immediately. When the timeout is WAIT_FOREVER(-1), the sending task enters the blocking task queue. When the timeout is other, the sending task is delayed for a period of time before continuing to run. The task calls the msgQReceive() function to receive messages from the message queue. If there are already messages available in the queue buffer, the first message is dequeued immediately and returned to the caller. If no message is available, the caller will block and be enqueued in the task queue waiting for the message. It can be seen that in VxWorks, when sending a message, when the receiving task is waiting for the message queue, it needs to go through a memory copy: from the private space of the sending task to the private space of the receiving task. When the receiving task is not waiting in the message queue, it needs to go through two memory copies: from the private space of the sending task to the buffer of the system message queue; then from the message queue buffer to the private space of the receiving task.
图2介绍了零拷贝消息队列实现原理。零拷贝消息队列是一个由指向消息体数据的指针组成的循环缓冲区,其数据结构包括消息队列的头指针、尾指针、当前消息数目、消息队列的总的消息数目、以及互斥操作信号量、计数信号量等。系统初始化时在系统缓冲区中分配一个消息队列池创建整个消息队列的索引信息。当任务创建一个用于任务间通信的消息队列时,从消息队列池中查找一个尚未分配的消息队列,返回该消息的编号,用于消息的发送和接收。消息发送时,如果是普通消息,发送任务数据的指针挂接到当前消息队列的尾部,如果是紧迫消息,则将该消息数据的指针添加到消息队列的头部。如果到达消息队列的边界,作边界指针调整。发送完毕后释放等待在该消息队列上的信号量,即计数信号量加1。接收消息时,接收任务从队列头取出第一个消息的指针,并将它返回给接收任务缓冲区,同时作适当的指针操作。若消息队列为空,接收等待该消息队列的计数信号量,即计数信号量减1。如果此时计数信号量小于0,则根据接收超时值参数进行相应的处理。由于在消息的发送和接收过程中采用了指针传递,没有进行内存拷贝。Figure 2 introduces the implementation principle of the zero-copy message queue. The zero-copy message queue is a circular buffer composed of pointers to message body data. Its data structure includes the head pointer, tail pointer, current number of messages, total number of messages in the message queue, and mutex operation semaphore , counting semaphores, etc. When the system is initialized, a message queue pool is allocated in the system buffer to create the index information of the entire message queue. When a task creates a message queue for inter-task communication, it searches for an unallocated message queue from the message queue pool, and returns the number of the message, which is used for sending and receiving messages. When the message is sent, if it is an ordinary message, the pointer of the sending task data is attached to the tail of the current message queue, and if it is an urgent message, the pointer of the message data is added to the head of the message queue. If the boundary of the message queue is reached, the boundary pointer is adjusted. Release the semaphore waiting on the message queue after sending, that is, add 1 to the counting semaphore. When receiving a message, the receiving task takes out the pointer of the first message from the head of the queue, returns it to the receiving task buffer, and performs appropriate pointer operations at the same time. If the message queue is empty, receive and wait for the counting semaphore of the message queue, that is, decrement the counting semaphore by 1. If the counting semaphore is less than 0 at this time, perform corresponding processing according to the receive timeout value parameter. Since the pointer is passed in the sending and receiving process of the message, no memory copy is performed.
图3介绍了创建消息队列的流程。首先初始化消息队列池,如果消息队列池已经初始化,就不再调用初始化函数。初始化完成后,从系统消息队列池中查找一个尚未使用的消息队列,如果没有找到,则返回一个非法消息队列的索引值;如果找到一个尚未使用的消息队列,则初始化该消息队列的值,包括头指针、尾指针、消息数,创建互斥信号量、创建计数信号量等。这一步操作由于是对全局数据的操作,需要用全局信号量来互斥。初始化该消息队列完成后,返回消息队列的索引。Figure 3 introduces the process of creating a message queue. First initialize the message queue pool. If the message queue pool has been initialized, the initialization function will not be called any more. After the initialization is complete, search for an unused message queue from the system message queue pool, if not found, return an index value of an illegal message queue; if find an unused message queue, initialize the value of the message queue, including Head pointer, tail pointer, number of messages, create mutex semaphore, create count semaphore, etc. Since this step is an operation on global data, a global semaphore is required for mutual exclusion. After the message queue is initialized, the index of the message queue is returned.
图4介绍了发送消息流程。首先对输入参数进行效验,非法参数输出打印信息并返回发送失败。接着进入关键代码段保护:关键代码段保护可以用开关中断或用信号量来实现,通过宏开关来适配。如果是中断互斥,锁中断;如果是信号量互斥,取信号量。下一步是进行队列的指针操作:如果是紧迫消息,将该消息添加到消息队列头;如果是普通消息,将该消息添加到消息队列尾。同时消息队列中的消息数加1。操作完成后退出关键代码段保护:如果是中断互斥,打开中断锁。如果是信号量互斥,释放信号量。消息添加到消息队列后,发送任务需要释放等待在该消息队列上的计数信号量,该计数信号量加1,使阻塞任务进入就绪,并让内核运行调度核心。最后返回发送消息成功。Figure 4 introduces the process of sending messages. Firstly, check the input parameters, output print information for illegal parameters and return sending failure. Then enter the key code segment protection: the key code segment protection can be realized by switch interrupt or semaphore, and adapted by macro switch. If it is an interrupt mutual exclusion, the lock is interrupted; if it is a semaphore mutual exclusion, take the semaphore. The next step is to operate the pointer of the queue: if it is an urgent message, add the message to the head of the message queue; if it is an ordinary message, add the message to the tail of the message queue. At the same time, the number of messages in the message queue is increased by 1. After the operation is completed, exit the key code segment protection: if it is interrupt mutual exclusion, open the interrupt lock. If the semaphore is mutually exclusive, release the semaphore. After the message is added to the message queue, the sending task needs to release the counting semaphore waiting on the message queue, and the counting semaphore is increased by 1 to make the blocked task ready and let the kernel run the scheduling core. Finally, it returns the success of sending the message.
图5介绍了接收消息流程。首先对输入参数进行效验,如果参数非法则返回空指针。首先取得操作该消息队列的指针,然后获取计数信号量,使计数信号量减1,如果该计数信号量小于0,则调用任务将根据超时参数进行处理:当超时参数为0,立即返回空指针;当超时参数为-1,任务进入阻塞队列永久等待;当超时参数为其它值,任务延迟一段时间并继续运行。当调用任务恢复运行时,如果消息队列为空,返回空指针,否则进行核心数据操作:首先进入关键代码保护,接着进行指针操作,从消息队列头取出一消息,返回给调用者,同时消息队列中的消息数减1,取出消息后退出关键代码保护。最后返回取出的消息。Figure 5 describes the process of receiving messages. First, check the input parameters, and return a null pointer if the parameters are illegal. First obtain the pointer to operate the message queue, and then obtain the counting semaphore to decrement the counting semaphore by 1. If the counting semaphore is less than 0, the calling task will be processed according to the timeout parameter: when the timeout parameter is 0, return a null pointer immediately ; When the timeout parameter is -1, the task enters the blocking queue and waits forever; when the timeout parameter is other values, the task delays for a period of time and continues to run. When the calling task resumes running, if the message queue is empty, return a null pointer, otherwise perform core data operations: first enter the key code protection, then perform pointer operations, take a message from the head of the message queue, return it to the caller, and message queue The number of messages in the message is reduced by 1, and the key code protection is exited after the message is taken out. Finally return the retrieved message.
图6介绍了删除消息队列的流程。删除消息队列是创建消息队列的逆过程,首先取得操作该消息队列的指针,如果该消息队列没有使用,则返回删除错误,否则获得该消息队列的指针,将头指针、尾指针、消息数、最大消息数等值设置为0,同时删除互斥信号量、等待计数信号量,本操作需要做全局数据区的互斥。最后返回删除成功。Figure 6 introduces the process of deleting a message queue. Deleting a message queue is the inverse process of creating a message queue. First, get the pointer to operate the message queue. If the message queue is not in use, return a deletion error. Otherwise, get the pointer to the message queue. Set the head pointer, tail pointer, number of messages, Set the equivalent value of the maximum number of messages to 0, and delete the mutex semaphore and waiting count semaphore at the same time. This operation needs to do mutual exclusion in the global data area. Finally, return delete successfully.
图7介绍了如何实现消息队列方案的流程。对前面介绍的方案的8个步骤进行了流程图实现,即信号量适配、互斥量适配、消息队列初始化、创建消息队列、发送消息、接收消息、删除消息队列、查询消息队列等。Figure 7 introduces the flow of how to implement the message queue solution. The flowchart implements the 8 steps of the scheme introduced above, namely, semaphore adaptation, mutex adaptation, message queue initialization, creation of message queue, sending message, receiving message, deleting message queue, querying message queue, etc.
Claims (12)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CNB031134130A CN1312577C (en) | 2003-05-07 | 2003-05-07 | Method for realizing communication process zero copy information queue |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CNB031134130A CN1312577C (en) | 2003-05-07 | 2003-05-07 | Method for realizing communication process zero copy information queue |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN1549108A true CN1549108A (en) | 2004-11-24 |
| CN1312577C CN1312577C (en) | 2007-04-25 |
Family
ID=34320072
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CNB031134130A Expired - Fee Related CN1312577C (en) | 2003-05-07 | 2003-05-07 | Method for realizing communication process zero copy information queue |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN1312577C (en) |
Cited By (23)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN100464304C (en) * | 2006-08-29 | 2009-02-25 | 飞塔信息科技(北京)有限公司 | A device and method for realizing zero-copy based on Linux operating system |
| CN101146028B (en) * | 2006-09-12 | 2010-11-24 | 中兴通讯股份有限公司 | A method for extracting message data in a communication system |
| CN101470623B (en) * | 2007-12-26 | 2011-02-16 | 无锡江南计算技术研究所 | Queue management method and queue management device, method and system for processing queue message |
| US8020141B2 (en) | 2004-12-06 | 2011-09-13 | Microsoft Corporation | Operating-system process construction |
| US8032898B2 (en) | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
| CN101470636B (en) * | 2007-12-27 | 2011-10-26 | 北京东方通科技股份有限公司 | Message read-write method and apparatus |
| US8074231B2 (en) | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
| CN101409715B (en) * | 2008-10-22 | 2012-04-18 | 中国科学院计算技术研究所 | Method and system for communication using InfiniBand network |
| CN101634956B (en) * | 2009-08-25 | 2012-08-08 | 华为技术有限公司 | Dispatching method and dispatcher of information of polynuclear processor |
| CN102902542A (en) * | 2012-09-27 | 2013-01-30 | Tcl通力电子(惠州)有限公司 | virtual interface configuration method and device |
| CN101576884B (en) * | 2008-05-07 | 2013-03-20 | 中兴通讯股份有限公司 | Implementation method for chain fracture cache file management |
| US8789063B2 (en) | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
| US8849968B2 (en) | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
| WO2016134634A1 (en) * | 2015-02-27 | 2016-09-01 | 中兴通讯股份有限公司 | Message receiving method, apparatus and device, computer storage medium and central processing unit |
| CN106851015A (en) * | 2017-03-10 | 2017-06-13 | 广东欧珀移动通信有限公司 | Adjust method, device and the terminal of broadcast message queue |
| CN107247631A (en) * | 2017-07-04 | 2017-10-13 | 深圳市西迪特科技有限公司 | General GPON OLT system communication between plates middleware systems |
| CN107391279A (en) * | 2017-07-31 | 2017-11-24 | 山东浪潮云服务信息科技有限公司 | A kind of message queue container creation method, device and message queue container |
| CN110856004A (en) * | 2019-11-05 | 2020-02-28 | 北京字节跳动网络技术有限公司 | Message processing method and device, readable storage medium and electronic equipment |
| CN111240828A (en) * | 2019-12-30 | 2020-06-05 | 苏州大学 | Synchronous communication system and method of embedded real-time operating system |
| CN111537791A (en) * | 2020-07-01 | 2020-08-14 | 杭州雷甸科技有限公司 | Intelligent electric meter based on embedded operating system |
| CN114168365A (en) * | 2021-12-07 | 2022-03-11 | 中国船舶重工集团公司第七0七研究所 | Real-time data recording method based on stm32f450 processor |
| CN115225525A (en) * | 2022-07-07 | 2022-10-21 | 金锐软件技术(杭州)有限公司 | An Internet-based network traffic management system |
| CN115470015A (en) * | 2022-09-06 | 2022-12-13 | 浪潮软件集团有限公司 | Inter-process large-scale data transmission method based on shared memory |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA2167633A1 (en) * | 1995-01-23 | 1996-07-24 | Leonard R. Fishler | Apparatus and method for efficient modularity in a parallel, fault tolerant, message based operating system |
| US6081890A (en) * | 1998-11-30 | 2000-06-27 | Intel Corporation | Method of communication between firmware written for different instruction set architectures |
-
2003
- 2003-05-07 CN CNB031134130A patent/CN1312577C/en not_active Expired - Fee Related
Cited By (32)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8020141B2 (en) | 2004-12-06 | 2011-09-13 | Microsoft Corporation | Operating-system process construction |
| US8849968B2 (en) | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
| US8074231B2 (en) | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
| US8032898B2 (en) | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
| CN100464304C (en) * | 2006-08-29 | 2009-02-25 | 飞塔信息科技(北京)有限公司 | A device and method for realizing zero-copy based on Linux operating system |
| CN101146028B (en) * | 2006-09-12 | 2010-11-24 | 中兴通讯股份有限公司 | A method for extracting message data in a communication system |
| US8789063B2 (en) | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
| CN101470623B (en) * | 2007-12-26 | 2011-02-16 | 无锡江南计算技术研究所 | Queue management method and queue management device, method and system for processing queue message |
| CN101470636B (en) * | 2007-12-27 | 2011-10-26 | 北京东方通科技股份有限公司 | Message read-write method and apparatus |
| CN101576884B (en) * | 2008-05-07 | 2013-03-20 | 中兴通讯股份有限公司 | Implementation method for chain fracture cache file management |
| CN101409715B (en) * | 2008-10-22 | 2012-04-18 | 中国科学院计算技术研究所 | Method and system for communication using InfiniBand network |
| CN101634956B (en) * | 2009-08-25 | 2012-08-08 | 华为技术有限公司 | Dispatching method and dispatcher of information of polynuclear processor |
| CN102902542A (en) * | 2012-09-27 | 2013-01-30 | Tcl通力电子(惠州)有限公司 | virtual interface configuration method and device |
| CN102902542B (en) * | 2012-09-27 | 2016-06-01 | Tcl通力电子(惠州)有限公司 | Virtual interface configuration method and device |
| WO2016134634A1 (en) * | 2015-02-27 | 2016-09-01 | 中兴通讯股份有限公司 | Message receiving method, apparatus and device, computer storage medium and central processing unit |
| CN105991475A (en) * | 2015-02-27 | 2016-10-05 | 中兴通讯股份有限公司 | Message receiving method and device, and central processing unit |
| CN105991475B (en) * | 2015-02-27 | 2020-01-07 | 中兴通讯股份有限公司 | Message receiving method, device and central processing unit |
| CN106851015A (en) * | 2017-03-10 | 2017-06-13 | 广东欧珀移动通信有限公司 | Adjust method, device and the terminal of broadcast message queue |
| CN106851015B (en) * | 2017-03-10 | 2020-09-22 | Oppo广东移动通信有限公司 | Method, device and terminal for adjusting broadcast message queue |
| CN107247631A (en) * | 2017-07-04 | 2017-10-13 | 深圳市西迪特科技有限公司 | General GPON OLT system communication between plates middleware systems |
| CN107247631B (en) * | 2017-07-04 | 2020-07-28 | 无锡雷华网络技术有限公司 | Universal GPON-O L T system inter-board communication middleware system |
| CN107391279B (en) * | 2017-07-31 | 2020-08-25 | 浪潮云信息技术股份公司 | A message queue container creation method, device and message queue container |
| CN107391279A (en) * | 2017-07-31 | 2017-11-24 | 山东浪潮云服务信息科技有限公司 | A kind of message queue container creation method, device and message queue container |
| CN110856004B (en) * | 2019-11-05 | 2022-02-01 | 北京字节跳动网络技术有限公司 | Message processing method and device, readable storage medium and electronic equipment |
| CN110856004A (en) * | 2019-11-05 | 2020-02-28 | 北京字节跳动网络技术有限公司 | Message processing method and device, readable storage medium and electronic equipment |
| CN111240828A (en) * | 2019-12-30 | 2020-06-05 | 苏州大学 | Synchronous communication system and method of embedded real-time operating system |
| WO2021136127A1 (en) * | 2019-12-30 | 2021-07-08 | 苏州大学 | Synchronous communication system and method for embedded real-time operating system |
| CN111537791A (en) * | 2020-07-01 | 2020-08-14 | 杭州雷甸科技有限公司 | Intelligent electric meter based on embedded operating system |
| CN114168365A (en) * | 2021-12-07 | 2022-03-11 | 中国船舶重工集团公司第七0七研究所 | Real-time data recording method based on stm32f450 processor |
| CN114168365B (en) * | 2021-12-07 | 2023-06-20 | 中国船舶重工集团公司第七0七研究所 | Real-time data recording method based on stm32f450 processor |
| CN115225525A (en) * | 2022-07-07 | 2022-10-21 | 金锐软件技术(杭州)有限公司 | An Internet-based network traffic management system |
| CN115470015A (en) * | 2022-09-06 | 2022-12-13 | 浪潮软件集团有限公司 | Inter-process large-scale data transmission method based on shared memory |
Also Published As
| Publication number | Publication date |
|---|---|
| CN1312577C (en) | 2007-04-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN1312577C (en) | Method for realizing communication process zero copy information queue | |
| US5758184A (en) | System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads | |
| US7549151B2 (en) | Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment | |
| Cooper | Protocol implementation on the Nectar communication processor | |
| WO2020238737A1 (en) | Database task processing method and apparatus, electronic device, and readable medium | |
| Govindan et al. | Scheduling and IPC mechanisms for continuous media | |
| Anderson et al. | Real-time computing with lock-free shared objects | |
| US6141701A (en) | System for, and method of, off-loading network transactions from a mainframe to an intelligent input/output device, including off-loading message queuing facilities | |
| CA2350517C (en) | Batch-wise handling of signals in a processing system | |
| CN100511206C (en) | Inter-processor communication system in parallel processing system by single processor operating system | |
| CN100351792C (en) | A real-time task management and scheduling method | |
| WO2004051466A2 (en) | Method and system for intertask messaging between multiple processor | |
| CN112491426B (en) | Multi-core DSP-oriented Service Component Communication Architecture, Task Scheduling, and Data Interaction Method | |
| WO2003005645A2 (en) | Method and apparatus in data packet processing | |
| CN1286038C (en) | Dual-ring quene-based, non-interrupt PCI communication method | |
| CN1328877C (en) | Sharing route realizing and sheduling method | |
| US11086691B2 (en) | Producer-consumer communication using multi-work consumers | |
| CN115480904A (en) | Concurrent calling method for system service in microkernel | |
| WO2024007934A1 (en) | Interrupt processing method, electronic device, and storage medium | |
| CN1277196C (en) | A method for realizing computer system application server | |
| Nakajima et al. | Experiments with Real-Time Servers in Real-Time Mach. | |
| CN1870767A (en) | Method for managing timer task | |
| CN115086238B (en) | TSN network port output scheduling device | |
| CN1556654A (en) | Timing and Control Method of Software Timer | |
| CN1794185A (en) | Resources calling method in multiline range process |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C14 | Grant of patent or utility model | ||
| GR01 | Patent grant | ||
| TR01 | Transfer of patent right |
Effective date of registration: 20181017 Address after: 510640 2414-2416 of the main building 371, five mountain road, Tianhe District, Guangzhou, Guangdong. Patentee after: Guangdong Gaohang Intellectual Property Operation Co., Ltd. Address before: 518057 Department of law, Zhongxing building, South Science and technology road, Nanshan District hi tech Industrial Park, Shenzhen Patentee before: ZTE Corporation |
|
| TR01 | Transfer of patent right | ||
| TR01 | Transfer of patent right |
Effective date of registration: 20181107 Address after: 221300 room 103, student Pioneer Park, Pizhou, Xuzhou, Jiangsu Patentee after: Jiangsu Sannong Tesco Agel Ecommerce Ltd Address before: 510640 2414-2416 of the main building 371, five mountain road, Tianhe District, Guangzhou, Guangdong. Patentee before: Guangdong Gaohang Intellectual Property Operation Co., Ltd. |
|
| TR01 | Transfer of patent right | ||
| CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070425 Termination date: 20180507 |
|
| CF01 | Termination of patent right due to non-payment of annual fee |
