KR20010010275A - An interprocess communication method utilizing message queue combined with shared memory - Google Patents
An interprocess communication method utilizing message queue combined with shared memory Download PDFInfo
- Publication number
- KR20010010275A KR20010010275A KR1019990029074A KR19990029074A KR20010010275A KR 20010010275 A KR20010010275 A KR 20010010275A KR 1019990029074 A KR1019990029074 A KR 1019990029074A KR 19990029074 A KR19990029074 A KR 19990029074A KR 20010010275 A KR20010010275 A KR 20010010275A
- Authority
- KR
- South Korea
- Prior art keywords
- shared memory
- message
- address
- message queue
- processes
- Prior art date
Links
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/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/546—Message passing systems or structures, e.g. queues
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
Description
본 발명은 여러 개의 프로세스로 구성된 응용하에서 프로세스 간의 통신이 빈번하게 일어날 때 이를 지원하기 위한 통신방식에 대한 것으로서, 특히 메시지 큐와 공유메모리를 결합하여 사용함으로써 효율적으로 프로세스 간의 통신을 수행할 수 있는 통신방법에 관한 것이다.The present invention relates to a communication method for supporting when communication between processes occurs frequently in an application composed of several processes, and in particular, a communication that can efficiently communicate between processes by using a message queue and a shared memory in combination. It is about a method.
통신 프로토콜은 일반적으로 여러 개의 계층으로 구분되며, 각 계층들은 다른 계층들과 결합되어 전체의 기능을 수행하게 된다. 즉, 하위 계층의 요구를 받아 이를 계층 고유의 처리를 행한 후 상위계층으로 보내거나, 상위 계층의 요구에 대하여 처리를 행한 후 하위 계층에 보낸다. 통신 프로토콜의 구현 시, 모든 프로토콜 계층을 하나의 프로세스로 구성하지 않는 한, 계층 별 혹은 몇 개의 계층을 묶어서 여러 개의 독립 프로세스(Process)로 구성할 것이므로, 전체 프로토콜의 동작은 여러 개 프로세스의 상호 협력하에 이루어지게 된다. 따라서, 프로세스간 통신의 문제가 중요한 문제로 대두된다.The communication protocol is generally divided into several layers, and each layer is combined with other layers to perform a whole function. In other words, it receives a request from a lower layer and sends it to a higher layer after performing a layer-specific process, or sends it to a lower layer after processing a request of a higher layer. When implementing a communication protocol, unless all protocol layers are configured as one process, each layer or several layers will be grouped into several independent processes, so the operation of the entire protocol is the mutual cooperation of several processes. Will be done under Therefore, the problem of interprocess communication has emerged as an important problem.
유닉스 시스템 V(UNIX System V) 운영체제에는 여러 종류의 프로세스간 통신 메커니즘들이 존재하는데, 대표적인 것으로는 메시지 큐(Message Queue), 공유 메모리(Shared Memory), 그리고 세마포어(Semaphore) 방식이 있다.There are several types of interprocess communication mechanisms in the UNIX System V operating system, including Message Queue, Shared Memory, and Semaphore.
메시지 큐 방식은 메시지 대기기능, 메시지 상태에 따른 프로세스 동기화(Synchronization), 메시지 우선순위(Priority) 등의 유용한 기능들을 포함하고 있으나, 자료의 내용 자체가 커널공간(Kernel Space)에 저장되므로 시스템 콜 사용에 따른 사용자 공간(User Space)과 커널공간 사이의 자료의 이동이 많다. 그 이유는 사용자가 어떠한 메시지를 보내고자 한다면, 그것은 일단 사용자 공간의 어떤 변수에 저장된 후, 메시지 큐 송신 시스템 콜에 의해서 사용자 공간에서 커널공간으로 자료가 복사되고, 이를 어떠한 프로세스가 수신하면 메시지 큐 수신 시스템 콜에 의하여 다시 커널공간에서 사용자공간으로 자료가 복사되기 때문이다. 만일, 길이가 긴 메시지를 송/수신하고자 한다면, 사용자공간과 커널공간사이의 자료이동에 많은 시간을 소모할 것이므로, 이는 시스템의 성능 저하를 가져오게 된다.Message queuing includes useful features such as message queuing, process synchronization according to message status, and message priority, but the system itself uses system calls because the contents of the data are stored in kernel space. There is a lot of movement of data between user space and kernel space. The reason is that if a user wants to send a message, it is stored in a variable in user space, and then the data is copied from user space into kernel space by the message queue sender system call, and when any process receives it, it receives the message queue. This is because the data is copied from kernel space to user space by the system call. If you want to send / receive long messages, you will spend a lot of time moving data between user space and kernel space.
공유메모리 방법의 경우, 다수의 프로세스가 사용자 공간을 공유하여 자료를 읽거나 쓸 수 있도록 되어 있다. 공유메모리는 그 제어정보만 커널공간에 저장하고, 나머지 내용은 사용자 영역에 존재하므로 각 프로세스들은 자신의 변수에 자료를 쓰거나 읽어냄으로써 상호간 자료교환을 가능하게 한다. 그러나, 공유메모리 방식은 자료의 송/수신에 따르는 동기화 메커니즘을 제공하지 않기 때문에 프로세스들은 자료를 쓰고 자료를 읽어내는데, 미리 정해진 어떠한 규약을 정해야 한다. 다수의 프로세스가 다수의 메시지들을 동시 다발적으로 송신하고 수신하는 통신 프로토콜의 환경하에서는 그러한 규약을 정할 때 상당히 복잡한 제어가 요구될 수 있어, 제어에 따르는 많은 비용이 요구된다.In the shared memory method, multiple processes can share user space to read or write data. Shared memory only stores its control information in kernel space, and the rest is in user space so that each process can exchange data by writing or reading data to its own variables. However, since shared memory does not provide a synchronization mechanism for sending and receiving data, processes must write some data and read some data. In the context of a communication protocol in which multiple processes send and receive multiple messages simultaneously, a fairly complex control may be required when deciding such protocols, requiring a high cost of control.
세마포어 방법은 프로세스간 상호배제(Mutual Exclusion)를 지원함으로써 다수의 프로세스가 동시에 하나의 자료를 접근할 때 이들간의 동기화를 지원한다. 그러나, 이 방법은 동기화만 지원할 뿐 자료의 전달기능은 없다. 통신 프로세스간 통신의 목적은 자료의 이동에 있으므로, 이 방식은 단독으로 자료의 송수신을 지원할 수는 없다.The semaphore method supports mutual exclusion, allowing synchronization between multiple processes when accessing a single data at the same time. However, this method only supports synchronization and no data transfer. Since the purpose of communication between communication processes is the movement of data, this method cannot support the transmission and reception of data by itself.
프로세스가 다른 프로세스에게 메시지를 보낼 때, 메시지의 속성은 크게 둘로 나누어진다. 하나는 메시지의 이름이며, 하나는 메시지의 파라미터 들 이다. 이들은 양 프로세스간 인터페이스를 정의할 때 구체화된다. 일반적으로 메시지의 이름은 고정된 길이이고, 메시지내의 파라미터 들 은 메시지 특성에 따라 가변적이다.When a process sends a message to another process, the attributes of the message are divided into two major parts. One is the name of the message and one is the parameters of the message. These are specified when defining the interface between both processes. In general, the name of a message is of fixed length, and the parameters in the message vary depending on the message characteristics.
본 발명에서는 프로세스간 통신에 있어서 위의 두 가지 메시지 속성 즉, 메시지이름과 메시지 파라미터를 나누어 서로 다른 기법을 사용하여 통신하고자 한다. 즉, 메시지의 이름과 관련된 정보는 메시지 큐를 이용하여 통신하고, 메시지내의 파라미터와 관련한 부분은 공유메모리를 통하여 통신한다. 파라미터를 담은 공유 메모리위치는 메시지 큐에 의해 메시지의 이름이 전달될 때 같이 전달한다. 만일 프로세스 A가 프로세스 B에게 메시지를 전달 하고자 한다면, 프로세스 A는 메시지의 파라미터를 공유메모리에 세팅하고, 메시지의 이름과 관련된 정보를 메시지 큐의 자료 구조에 세팅한다. 아울러 파라미터를 세팅한 공유 메모리의 주소정보를 메시지 큐의 자료구조에 세팅한다. 이를 수신한 프로세스 B는 메시지 큐로부터 메시지 이름과 공유메모리의 주소정보를 얻게 되고, 그 주소정보가 지시하는 공유 메모리로부터 프로세스 A가 세팅한 파라미터 정보를 얻게 된다.In the present invention, in the interprocess communication, the above two message attributes, that is, message names and message parameters, are divided and communicated using different techniques. That is, information related to the name of the message communicates using the message queue, and parts related to parameters in the message communicate through the shared memory. The shared memory location containing the parameters is passed along when the name of the message is passed by the message queue. If process A wants to deliver a message to process B, process A sets the parameters of the message in shared memory and sets the information associated with the name of the message in the message queue's data structure. In addition, the address information of the shared memory with parameters is set in the data structure of the message queue. The process B receives the message name and the address information of the shared memory from the message queue, and obtains the parameter information set by the process A from the shared memory indicated by the address information.
따라서, 본 발명은 메시지 큐 방식과 공유메모리 방식의 장점만을 살려 결합 사용하여 프로세스간 통신에 있어서 효율을 기하는 방법에 관한 것으로서, 메시지 큐 방식에 대하여는 메시지의 동기화와 메시지 대기기능을 이용하면서 메시지 이름과 관련된 고정의 짧은 자료만을 전송함으로써 커널공간과 사용자 공간간의 자료이동에 따른 오버해드를 최대한도로 줄이고, 공유메모리 방식에 대해서는 사용자 공간의 자료를 손쉽게 이용하는 장점을 이용하면서 동기화 기능을 지원하지 못하는 단점을 메시지 큐 방식에 혼합함으로써 해결할 수 있는 메시지 큐와 공유메모리를 결합 이용한 프로세스간의 통신 방법을 제공하는데 있다.Accordingly, the present invention relates to a method for achieving efficiency in interprocess communication by combining and using only the advantages of the message queue method and the shared memory method. In the message queue method, message synchronization and message waiting functions are used. By reducing only the fixed short data related to the data, the overhead due to data movement between kernel space and user space is reduced to the maximum. It is to provide a communication method between processes using a message queue and shared memory that can be solved by mixing the message queue method.
상기한 목적을 달성하기 위한 본 발명은 프로세스 간의 통신 방법에 있어서, 가변적인 정보인 메시지의 파라미터는 공유 메모리를 통하고, 고정적인 정보인 주소정보와 메시지 이름은 메시지 큐를 통하게 함으로써, 메시지 큐 방식과 공유메모리 방식을 결합하여 사용하는 형태를 특징으로 한다.The present invention for achieving the above object is a method of inter-process communication, the message parameter of the variable information through the shared memory, the fixed information address information and the message name through the message queue, And a shared memory method.
도 1은 본 발명에 따른 메시지 큐와 공유메모리를 통한 프로세스간 통신 방법의 개념도.1 is a conceptual diagram of an interprocess communication method through a message queue and a shared memory according to the present invention;
도 2는 이벤트 제어블록의 구조도.2 is a structural diagram of an event control block;
도 3은 오프셋주소 공간과 절대 주소공간간의 사상(Mapping)을 도시한 도면.3 illustrates mapping between an offset address space and an absolute address space.
도 4는 주소 변환 함수의 절차를 나타낸 도면.4 is a diagram illustrating a procedure of an address translation function.
〈도면의 주요 부분에 대한 부호 설명〉<Description of Signs of Major Parts of Drawings>
11 : 공유메모리 12 : 프로세스 A11: shared memory 12: process A
13 : 프로세스 B 14 : 이벤트제어블록13: Process B 14: Event Control Block
15, 16, 17 및 18 : 사용자자료블록15, 16, 17 and 18: user data blocks
20 : 메시지이름 21 : 운영변수20: Message name 21: Operating variable
22 : 사용자제어블록주소정보 31 : 메시지 이름 필드22: user control block address information 31: message name field
32 : 발신지 메시지 큐 번호 필드 33 : 착신지 메시지 큐 번호 필드32: source message queue number field 33: destination message queue number field
34 : 사용자 인스턴스 번호 필드 35 : 사용자자료블록 오프셋 필드34: user instance number field 35: user data block offset field
이하, 첨부된 도면을 참조하여 본 발명을 상세히 설명하기로 한다.Hereinafter, with reference to the accompanying drawings will be described in detail the present invention.
도 1은 본 발명에 따른 메시지 큐와 공유메모리를 통한 프로세스간의 통신의 내용을 개념적으로 표시한 것으로서, 프로세스간 통신이 이루어지는 형태를 나타내었다.1 conceptually displays the contents of communication between processes through a message queue and a shared memory according to the present invention, and shows a form in which interprocess communication is performed.
프로세스 A(12)를 어떠한 메시지를 송신할 발신지 프로세스라고 하고, 프로세스 B(13)을 프로세스 A(12)가 송신한 메시지를 수신할 착신지 프로세스라고 가정할 때, 프로세스 A(12)는 메시지의 내용을 분리하여 길이가 고정적인 부분인 메시지이름(20), 운영변수(21)등과, 길이가 가변적인 부분인 메시지 파라미터(23)로 나눈다. 이중 고정적인 부분은 이벤트제어블록(14)이라는 자료구조에 세팅하고, 가변적인 부분은 공유메모리(11) 상의 사용자제어블록의 풀(Pool)(15, 16, 17, 18)중에서 하나(16)를 할당 받아 그곳에 세팅한다. 이후, 할당 받은 사용자자료블록의 주소정보(22)를 이벤트제어블록(14)에 세팅한다. 이벤트제어블록(14)의 세팅이 모두 완료되었으면 프로세스 A(12)는 운영체제의 메시지 큐 송신 시스템 콜을 이용하여 이벤트제어블록(14)을 송신하게 된다.Assuming that process A 12 is an originating process to which a message is to be sent, and process B 13 is a destination process that will receive the message sent by process A 12, process A 12 is the message of the message. The contents are separated and divided into a message length (20), an operating variable (21), etc., of which the length is fixed, and a message parameter (23), of the variable length. The fixed part is set in the data structure called the event control block 14, and the variable part is one of the pools 15, 16, 17, 18 of the user control block on the shared memory 11 (16). Gets assigned and sets it there. Thereafter, the address information 22 of the assigned user data block is set in the event control block 14. When the setting of the event control block 14 is completed, the process A 12 transmits the event control block 14 using the message queue transmission system call of the operating system.
프로세스 A(12)가 송신한 이벤트제어블록(14)은 운영체제의 메시지 큐 수신 시스템 콜에 의하여 프로세스 B(13)에 수신된다. 이후, 프로세스 B(13)는 우선 수신된 이벤트제어블록(14)내의 메시지 이름(20), 운영변수(21), 그리고 사용자제어블록 주소정보(22)를 얻어내게 된다. 사용자제어블록 주소정보(22)는 공유메모리(11) 상에서 프로세스 A(12)가 할당 받아 메시지 파라미터(23)을 세팅한 사용자자료블록(16)을 접근할 수 있는 주소정보 이므로, 그 정보를 기반으로 하여 프로세스 B(13)는 메시지 파라미터(16)를 얻을 수 있게 된다. 이로써 프로세스 A(12)가 송신하려 했던 메시지 이름(20), 운영변수(21), 그리고 메시지 파라미터(23)등의 모든 정보가 정확히 프로세스 B에게 전달되게 되는 것이다.The event control block 14 transmitted by the process A 12 is received by the process B 13 by the message queue receiving system call of the operating system. Process B 13 then first obtains the message name 20, operational variables 21, and user control block address information 22 in the received event control block 14. The user control block address information 22 is address information that can be accessed by the user data block 16 in which the process A 12 has been assigned on the shared memory 11 and set the message parameter 23. In this way, the process B 13 can obtain the message parameter 16. This ensures that all information, such as message name 20, operational variable 21, and message parameter 23, that process A 12 is trying to send, is correctly transmitted to process B.
도 2는 도 1의 설명 중 언급되었던 이벤트제어블록(14)의 구조를 구체적으로 표시한 것이다.FIG. 2 specifically shows the structure of the event control block 14 mentioned in the description of FIG. 1.
메시지 이름 필드(31)에는 프로세스간 송/수신에 이용되는 다수의 메시지들을 구분하는 번호 정보를 담는 곳이다. 이 번호 정보의 정의 사항은 통신에 참여하는 프로세스들간에 미리 정해진 협약에 의한다. 이 필드는 4 바이트의 정수 값의 길이를 갖는다. 발신지 메시지큐 번호 필드(32), 착신지 메시지큐 번호 필드(33), 그리고 사용자 인스턴스 번호 필드(34)들은 메시지와 관련된 운영 변수들을 담는 곳이다. 발신지 메시지 큐 번호(32)는 메시지를 송신할 프로세스의 수신 메시지 큐의 번호를 의미하고, 착신지 메시지 큐 번호(33)는 메시지를 수신할 프로세스의 수신 메시지 큐의 번호를 의미한다. 이러한 정보를 운영하는 이유는 메시지를 수신하여 처리한 후, 그 메시지를 반송(Return)하고자 할 때 반송처를 손쉽게 찾도록 하고, 또한 디버깅을 위하여 프로세스간 통신내용을 모니터링할 필요가 있을 때 다수의 메시지들의 발신지와 착신지를 쉽게 알아볼 수 있도록 하기 위함이다. 메시지 큐의 번호는 운용체제의 메시지 큐 시스템 콜의 정의 사항에 4 바이트의 정수 길이로 정의되어 있으므로 여기서도 그 길이를 채용한다.The message name field 31 is a place for storing number information for distinguishing a plurality of messages used for transmission / reception between processes. The definition of this number information is by a predetermined agreement between the processes involved in the communication. This field has an integer value length of 4 bytes. The source message queue number field 32, the destination message queue number field 33, and the user instance number field 34 are places that hold operational variables associated with the message. Source message queue number 32 means the number of the receiving message queue of the process to which to send the message, and destination message queue number 33 means the number of the receiving message queue of the process to receive the message. The reason for running this information is that when you receive and process a message, you can easily find the destination when you want to return the message, and when you need to monitor the interprocess communication for debugging purposes, This is to make it easy to recognize the source and destination of the messages. The message queue number is defined here as an integer length of 4 bytes in the operating system's message queue system call definition.
사용자 인스턴스 번호(34)는 송/수신하고자 하는 메시지에 어떤 사용자 고유의 실행 사례와 연관이 되어 있을 경우, 이를 구분하는 번호이다. 만일, 프로세스 A가 갑 이라는 사용자와 을 이라는 사용자의 실행사례를 동시 처리 중에 프로세스 B로의 메시지 송신 요구가 발생 한다면, 갑과 을에 대하여 고유의 사용자 인스턴스 번호를 할당하고 각각의 관련 메시지들의 사용자 인스턴스 번호 필드(34)에 사용자별 인스턴스 번호를 세팅하여 보낸다. 이를 수신한 프로세스 B는 수신된 사용자 인스턴스 번호를 그대로 유지하고 있다가 메시지 결과 반송시 그대로 세팅하여 보냄으로써 프로세스 A로 하여금 수신 메시지와 관련된 사용자 실행사례를 구분할 수 있도록 하는 것이다. 이러한 사용자 인스턴스 필드의 길이도 4 바이트 정수 값으로 운영한다.The user instance number 34 is a number for identifying a case where a message to be transmitted / received is associated with a user's own execution case. If process A requests to send a message to process B while concurrently processing a case of user A and user A, then it assigns a unique user instance number for A and B and the user instance number field of each related message. Send an instance number per user to (34). Receiving this, process B keeps the received user instance number as it is, and sends it as it is when sending the message result so that process A can distinguish the user execution cases related to the received message. The length of this user instance field is also operated as a 4-byte integer value.
마지막으로 사용자자료블록 오프셋 필드(35)는 도 1에 언급되었던 사용자자료블록의 주소정보를 담는 곳이다. 여기서 오프셋이란 개념은 주소의 절대값을 의미하는 것이 아니라, 공유메모리 주소의 시작점을 0으로 가정한 상대적인 위치를 값을 의미한다. 이는 두 프로세스가 공유메모리를 사용할 때, 그 공유메모리에 대한 절대 주소 값이 프로세스마다 상이함에 기인한 것이다. 이에 대한 설명은 도 3에서 자세히 하고자 한다.Finally, the user data block offset field 35 is a place for the address information of the user data block mentioned in FIG. In this case, the concept of offset does not mean an absolute value of an address, but a relative position that assumes a starting point of a shared memory address as 0. This is because when two processes use shared memory, the absolute address value for that shared memory differs from process to process. This will be described in detail with reference to FIG. 3.
상기에서 정의한 바와 같이 이벤트제어블록(14)은 4 바이트의 길이를 갖는 5개의 필드로 구성되므로 총 20 바이트의 고정 길이를 갖게 된다.As defined above, since the event control block 14 is composed of five fields having a length of 4 bytes, the event control block 14 has a fixed length of 20 bytes in total.
도 3은 공유메모리의 각 프로세스 상 절대 어드레스 공간이 상이함을 보이고, 이를 맞추기 위하여 도입한 오프셋 공간과의 사상(Mapping) 관계를 나타낸 것이다.FIG. 3 shows that the absolute address spaces are different in each process of the shared memory, and shows a mapping relationship with the offset spaces introduced to match them.
시스템상에 공유메모리(52)가 만들어지면 이는 운영체제상의 어떤 영역에 자리를 잡게되고, 이를 프로세스가 사용하려면 공유메모리(52)를 프로세스의 주소영역에 부착(Attach)하는 시스템 콜을 수행한 후, 사용하게 된다. 공유메모리(52)가 프로세스내에 부착되는 절차가 성공적으로 수행되면, 그 프로세스는 공유메모리(52)를 자신의 영역처럼 사용이 가능하다. 각 프로세스가 사용하는 주소공간(51, 53)은 서로 상이하며, 따라서 한 프로세스의 주소공간은 그 프로세스에게만 유효할 뿐 다른 프로세스에게는 의미가 없다. 즉, 프로세스 A는 공유메모리를 0x10,000번지(64)부터 0x19,999번지(67)까지 부착하여 사용하고, 프로세스 B는 0x20,000번지(68) 부터 0x29,999번지(71)까지 부착하여 사용한다.When the shared memory 52 is created on the system, it is settled in an area of the operating system. To use the process, the system call attaches the shared memory 52 to the address area of the process. Will be used. When the procedure of attaching the shared memory 52 in the process is successfully performed, the process can use the shared memory 52 as its own area. The address spaces 51 and 53 used by each process are different from each other, so that the address space of one process is valid only for that process and is meaningless to other processes. That is, process A attaches and uses shared memory from 0x10,000 address 64 to 0x19,999 address 67, and process B attaches 0x20,000 address 68 to 0x29,999 address 71. use.
프로세스 A가 공유메모리 공간 중 사용자자료블록1(80)을 할당하여 그곳에 메시지 파라미터를 세팅하여 프로세스 B에게 전달하고자 할 경우, 그 사용자제어블록1(80)의 프로세스A 상에서의 절대주소 값인 0x11,000번지(65)는 프로세스 B에서는 의미가 없는 값이 되어버린다. 본 발명에서는 오프셋라는 상대주소 공간을 도입하여 이를 보정한다.When process A allocates user data block 1 (80) in the shared memory space and sets a message parameter to it and delivers it to process B, 0x11,000, which is the absolute address value on process A of the user control block 1 (80). The address 65 becomes meaningless in Process B. In the present invention, a relative address space called an offset is introduced and corrected.
오프셋주소공간은 각 프로세스의 공유메모리 절대주소 공간의 시작값을 0으로 놓고, 그 지점부터의 절대 주소의 증가치를 표현한 상대주소 값으로 구성되어 있다. 그러므로, 시작 주소는 0이 되고, 끝 주소는 공유메모리 사이즈에서 1을 감한 값이 된다. 이러한 오프셋주소 공간은 프로세스마다 각각 운영된다. 도 1에서 프로세스 A의 오프셋주소공간(50)은 프로세스 A의 절대주소공간(51)과 대응되어 운영되고, 프로세스 B의 오프셋주소공간(54)은 프로세스 B의 절대주소공간(53)과 대응되어 운영된다. 프로세스 A의 오프셋주소공간(50)의 시작 주소와 끝 주소는 프로세스 A의 주소공간(51)의 시작 주소와 끝 주소인 0x10,000번지(64)와 0x19,999번지(67)와 대응되어, 0(60)과 9,999(63)로 각각 운영되며, 프로세스 B의 오프셋주소공간(54)의 시작 주소와 끝 주소는 프로세스 B의 주소공간(53)의 시작 주소와 끝 주소인 0x20,000번지(68)와 0x29,999번지(71)와 대응되어 0(72)와 9,999(75)로, 각각 운영된다. 따라서, 두 프로세스의 오프셋주소공간(50, 54)의 주소값(60, 63, 72, 75)은 서로 일치하게 되므로, 프로세스간 상호 교환될 공유메모리 주소 정보로 활용될 수 있는 것이다.The offset address space consists of a relative address value representing the increment of the absolute address from that point by setting the starting value of the shared memory absolute address space of each process to zero. Therefore, the start address is 0 and the end address is 1 minus the shared memory size. This offset address space is operated for each process. In FIG. 1, the offset address space 50 of process A is operated in correspondence with the absolute address space 51 of process A, and the offset address space 54 of process B corresponds to the absolute address space 53 of process B. Operate. The start address and the end address of the offset address space 50 of the process A correspond to the 0x10,000 address 64 and 0x19,999 address 67 which are the start address and the end address of the address space 51 of the process A, It is operated as 0 (60) and 9,999 (63), respectively, and the start address and end address of the offset address space 54 of process B are 0x20,000, which is the start address and end address of the address space 53 of process B ( 68 and 0x29,999 address 71, 0 (72) and 9,999 (75), respectively. Therefore, since the address values 60, 63, 72, and 75 of the offset address spaces 50 and 54 of the two processes coincide with each other, they can be utilized as shared memory address information to be exchanged between processes.
이를 프로세스간 사용자자료블록1(80)의 전송의 경우를 예를 들어 설명하자면, 프로세스 A는 사용자자료블록1(81)에 메시지 파라미터의 세팅을 마친 후, 이의 주소정보로 절대주소인 0x11,000번지(65)를 보내는 것이 아니라, 이에 대응된 오프셋주소인 1,000(61)을 보낸다. 이를 수신한 프로세스 B는 오프셋주소인 1,000(73)과 대응된 프로세스 B의 절대주소인 0x21,000번지를 알게 되고, 그 주소로부터 프로세스 A가 전송한 메시지 파라미터를 엑세스하게 된다.To explain this in the case of the transfer of the inter-process user data block 1 (80), for example, after completing the setting of the message parameter in the user data block 1 (81), the address information of the absolute address 0x11,000 Instead of sending the address 65, the address 1000 corresponding to the address 65 is transmitted. The process B receives the address 1000 (73) and the address 0x21,000, which is the absolute address of the process B, and accesses the message parameter transmitted by the process A from the address.
오프셋주소공간을 운영함에 있어서 절대주소 값과 오프셋주소간의 변환작업은 각 프로세스마다 주소변환 함수(55, 56)를 각각 운영 함으로써 해결한다. 주소변환 함수에 대한 내용은 도 4에서 자세히 기술한다.In the operation of the offset address space, the conversion between the absolute address value and the offset address is solved by operating the address conversion functions 55 and 56 for each process. Details of the address translation function are described in detail with reference to FIG. 4.
도 4는 프로세스에서 절대주소 값과 오프셋주소 값 간의 변환을 행하는 주소변환 함수의 절차를 가상코드(Pseudo Code) 형태로 기술한 것이다.FIG. 4 illustrates a procedure of an address translation function that converts between an absolute address value and an offset address value in a process in the form of pseudo code.
UDBini()(90)는 공유메모리 생성 및 초기화를 수행하고, UDBreal()(91)과 UDBoffset(92)은 오프셋주소를 절대주소로 변환하거나 절대주소를 오프셋주소로 변환하는 기능을 각각 수행한다. 공유 메모리를 사용하려는 프로세스는 초기에 UDBini()(90)를 한번은 사용하여야 한다. 발신지 프로세스는 사용자자료블록에 자료를 세팅한 후, 사용자자료블록의 절대 주소를 UDBoffset()(92)를 통하여 오프셋 주소로 변환하여 그 주소 값을 착신지 프로세스에게 보낸다. 이후, 착신지 프로세스는 수신한 오프셋 주소값을 UDBreal()(91)을 통하여 자신의 절대 어드레스 값으로 변환한 후 사용자 자료블록을 접근 하게 된다.UDBini () 90 performs shared memory creation and initialization, and UDBreal () 91 and UDBoffset 92 convert the offset address into an absolute address or the absolute address into an offset address, respectively. Processes that want to use shared memory should initially use UDBini () (90) once. After setting the data in the user data block, the source process converts the absolute address of the user data block into an offset address through UDBoffset () 92 and sends the address value to the destination process. After that, the destination process converts the received offset address value into its absolute address value through UDBreal () 91 and then accesses the user data block.
절차를 자세히 살펴보자면, UDBini()(90)에서는 우선 공유메모리를 생성한 후(100) 이를 자신의 주소공간에 부착하게 되는데, 이때 공유메모리의 시작주소 값을 프로세스내 정적 변수(Static Address)인 ShmStartAddr에 저장해 두어야 한다(101). UDBreal()(91)에서는 오프셋주소값을 입력 파라미터로 받는데, 오프셋 주소값 0은 절대주소 공간의 시작값인 ShmStartAddr과 대응되므로, 입력 파라미터인 오프셋주소와 ShmStartAddr를 더한 값은 오프셋 주소에 대응되는 공유 메모리내의 절대주소 값이 되므로 이를 반환하게 된다(103). 반대로, UDBoffset()(92)은 절대주소를 입력 파라미터로 받는데, 이것에서 ShmStartAddr를 감한 값은 공유 메모리내의 절대주소 값에 대응되는 오프셋주소 값이 되므로 이를 반환하게 된다(104).In detail, the UDBini () (90) first creates a shared memory (100) and attaches it to its own address space. The starting address of the shared memory is a static address in the process. Must be stored in ShmStartAddr (101). In UDBreal () (91), an offset address value is received as an input parameter.The offset address value 0 corresponds to ShmStartAddr, which is the start value of the absolute address space. Since it becomes an absolute address value in memory, it is returned (103). On the contrary, UDBoffset () 92 receives an absolute address as an input parameter, and a value obtained by subtracting ShmStartAddr becomes an offset address value corresponding to an absolute address value in shared memory, thereby returning it (104).
이상에서 설명한 본 발명은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 한정되는 것이 아니다.The present invention described above is capable of various substitutions, modifications, and changes without departing from the spirit of the present invention for those skilled in the art to which the present invention pertains. It is not limited.
상술한 바와 같이, 본 발명에 따른 메시지 큐와 공유메모리를 결합 이용한 프로세스간 통신방법은 메시지큐의 프로세스 동기화, 메시지 대기기능과 공유메모리의 커널/사용자간의 자료이동을 요하지 않는 자료 접근등의 장점만을 살려 결합 이용함으로써, 프로세스간 통신을 행하는데 있어서 불필요한 오버해드를 줄여 프로세스간 통신기능을 필수적으로 빈번히 이용하는 통신 프로토콜 같은 응용의 전체적인 성능 향상을 가져온다는 장점이 있다.As described above, the interprocess communication method using the message queue and the shared memory in accordance with the present invention has only the advantages of process synchronization of the message queue, message waiting function, and data access that does not require data movement between kernel / user of the shared memory. By utilizing the combined use, there is an advantage that the overall overhead of the application, such as a communication protocol that frequently uses the inter-process communication function is frequently reduced by reducing unnecessary overhead in performing inter-process communication.
Claims (5)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019990029074A KR100356919B1 (en) | 1999-07-19 | 1999-07-19 | An interprocess communication method utilizing message queue combined with shared memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019990029074A KR100356919B1 (en) | 1999-07-19 | 1999-07-19 | An interprocess communication method utilizing message queue combined with shared memory |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20010010275A true KR20010010275A (en) | 2001-02-05 |
KR100356919B1 KR100356919B1 (en) | 2002-10-19 |
Family
ID=19602613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019990029074A KR100356919B1 (en) | 1999-07-19 | 1999-07-19 | An interprocess communication method utilizing message queue combined with shared memory |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100356919B1 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100871587B1 (en) * | 2007-04-20 | 2008-12-02 | (주)엔텔스 | Method and apparatus for controlling the inter-process variable length packet data flow using the shared memory paging techniques |
KR100932038B1 (en) * | 2007-05-10 | 2009-12-15 | 엔비디아 코포레이션 | Message Queuing System for Parallel Integrated Circuit Architecture and Its Operation Method |
WO2016195271A1 (en) * | 2015-06-05 | 2016-12-08 | 이훈성 | Game playing method using activity count |
CN113608883A (en) * | 2021-06-21 | 2021-11-05 | 天津津航计算技术研究所 | Packaging method based on VxWorks real-time operating system |
CN113778706A (en) * | 2021-08-18 | 2021-12-10 | 北京自动化控制设备研究所 | Inter-core communication method of operating system based on AMP architecture |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101592916B1 (en) | 2014-04-03 | 2016-02-18 | 오픈스택 주식회사 | Method of transferring data to multiple destinations in network with minimizing context switching and data copying between user space and kernel space |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1031616A (en) * | 1996-07-17 | 1998-02-03 | Nec Corp | Inter-process communication system |
-
1999
- 1999-07-19 KR KR1019990029074A patent/KR100356919B1/en not_active IP Right Cessation
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100871587B1 (en) * | 2007-04-20 | 2008-12-02 | (주)엔텔스 | Method and apparatus for controlling the inter-process variable length packet data flow using the shared memory paging techniques |
KR100932038B1 (en) * | 2007-05-10 | 2009-12-15 | 엔비디아 코포레이션 | Message Queuing System for Parallel Integrated Circuit Architecture and Its Operation Method |
WO2016195271A1 (en) * | 2015-06-05 | 2016-12-08 | 이훈성 | Game playing method using activity count |
CN113608883A (en) * | 2021-06-21 | 2021-11-05 | 天津津航计算技术研究所 | Packaging method based on VxWorks real-time operating system |
CN113608883B (en) * | 2021-06-21 | 2024-02-13 | 天津津航计算技术研究所 | Encapsulation method based on VxWorks real-time operating system |
CN113778706A (en) * | 2021-08-18 | 2021-12-10 | 北京自动化控制设备研究所 | Inter-core communication method of operating system based on AMP architecture |
CN113778706B (en) * | 2021-08-18 | 2023-08-15 | 北京自动化控制设备研究所 | Inter-core communication method of operation system based on AMP architecture |
Also Published As
Publication number | Publication date |
---|---|
KR100356919B1 (en) | 2002-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1358562B1 (en) | Method and apparatus for controlling flow of data between data processing systems via a memory | |
US7409468B2 (en) | Controlling flow of data between data processing systems via a memory | |
US5983274A (en) | Creation and use of control information associated with packetized network data by protocol drivers and device drivers | |
JPH04227562A (en) | Operation execution device and method for data processing system | |
JPS58501065A (en) | Processing equipment for packet voice integrated exchange | |
JP2002505466A (en) | Remote method invocation method and apparatus | |
JPS63201860A (en) | Network managing system | |
US20040054822A1 (en) | Transferring interrupts from a peripheral device to a host computer system | |
JPH1069391A (en) | General communication mechanism for application that operate in multitask environment | |
KR100356919B1 (en) | An interprocess communication method utilizing message queue combined with shared memory | |
KR20030083572A (en) | Microcomputer system having upper bus and lower bus and controlling data access in network | |
JPH06301655A (en) | Distributed processing system | |
US6272524B1 (en) | Distributed processing systems incorporating a plurality of cells which process information in response to single events | |
KR100641095B1 (en) | Resource adapter in sdr system | |
US20240176640A1 (en) | Method and apparatus for managing memory | |
EP0321544A1 (en) | Intercomputer communication control apparatus and method. | |
JP3006187B2 (en) | Distributed processing system | |
JP2898985B2 (en) | Image processing method | |
JPH01214960A (en) | System for exchanging message between multi-processor | |
KR100304412B1 (en) | Method and apparatus for alloting address used in inter processor communication | |
JP2003530609A (en) | A distributed processing system incorporating multiple cells that process information in response to a single event | |
JP2971119B2 (en) | High-speed data transfer method in multiple processor system | |
JP3014112B2 (en) | Message communication method in multiprocessor system | |
JPH04274524A (en) | System for controlling inter-process communication | |
CN118409803A (en) | Communication method and server |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20101001 Year of fee payment: 9 |
|
LAPS | Lapse due to unpaid annual fee |