KR101227885B1 - 공유 메모리 채널 다중화 방법 및 그 장치 - Google Patents
공유 메모리 채널 다중화 방법 및 그 장치 Download PDFInfo
- Publication number
- KR101227885B1 KR101227885B1 KR1020100129493A KR20100129493A KR101227885B1 KR 101227885 B1 KR101227885 B1 KR 101227885B1 KR 1020100129493 A KR1020100129493 A KR 1020100129493A KR 20100129493 A KR20100129493 A KR 20100129493A KR 101227885 B1 KR101227885 B1 KR 101227885B1
- Authority
- KR
- South Korea
- Prior art keywords
- processes
- channel
- sub
- shared memory
- data
- Prior art date
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/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
Abstract
공유 메모리 채널 다중화 장치 및 방법이 개시된다. 본 발명의 공유 메모리 채널 다중화 장치는 복수의 프로세스들; 상기 프로세스들에 의해 접근 가능한 저장수단; 및 상기 저장수단을 상기 프로세스들의 개수와 동일한 수의 채널로 구분하고, 그 채널들 각각을 상기 프로세스들 각각에 할당한 후 그 할당 정보를 해당 프로세스들과 공유하는 채널 관리부를 포함하고, 본 발명의 공유 메모리 채널 다중화 방법은 단일 프로세스와 복수의 부 프로세스(thread)들을 포함하는 멀티 프로세스간 데이터 통신을 위해, 상기 부 프로세스(thread)의 개수를 결정하는 단계; 공유 메모리를 상기 부 프로세스(thread)들의 개수와 동일한 수의 채널 영역으로 구분하는 단계; 상기 채널들 각각을 상기 부 프로세스(thread)들 각각에 할당하는 단계; 상기 단일 프로세스와 부 프로세스(thread)들 각각을 연결하는 단계; 상기 부 프로세스(thread)들이 해당 채널 정보를 포함하는 메시지를 상기 단일 프로세스에게 전달하는 단계; 및 상기 단일 프로세스가 상기 수신된 메시지 및 해당 채널 정보를 저장하는 단계를 포함한다. 따라서 본 발명은 복수의 프로세스가 공유 메모리를 동시에 사용할 수 있다.
Description
본 발명은 공유 메모리에 관한 것으로서, 특히 공유 메모리의 채널 다중화 방법 및 그 장치에 관한 것이다.
일반적으로 프로세스가 사용하는 메모리의 용도 및 종류에 따라 독점 메모리와 공유 메모리가 있다. 독점 메모리는 하나의 프로세스가 전용으로 억세스하는 메모리이고, 공유 메모리(shared memory)는 두 개 이상의 프로세스가 공유하여 양쪽에서 제어가 가능한 메모리이다. 따라서, 복수의 프로세스가 데이터를 공유하거나, 프로세스간 통신을 위해 공유 메모리가 사용된다.
복수의 프로세스가 데이터를 공유하거나, 프로세스간 통신을 위해, 종래에는 잠금(lock) 기능을 사용하여 복수의 어플리케이션(application)이 동시에 공유 메모리에 접근하는 것을 통제하였다. 다시 말해, 종래의 경우 복수의 프로세스가 모두 공유 메모리에 접속하여 데이터를 억세스(access)할 수 있는 권한이 있기는 하지만, 어느 하나의 프로세스가 공유 메모리를 이용하고 있는 동안에는 잠금 기능을 실행하여, 그 잠금 기능이 해제될 때까지 다른 프로세스들이 해당 공유 메모리에 접속할 수 없었다. 예를 들어, 제1 프로세스가 공유 메모리에 접속하여 데이터를 억세스하고 있으면, 이 때, 제2 프로세스는 공유 메모리에 접속하지 못하고, 제1 프로세스가 데이터 억세스 동작을 모두 마칠 때까지 기다려야만 했다. 즉, 종래의 공유 메모리 사용 방법은 복수의 프로세스가 하나의 공유 메모리를 이용한다는 것일 뿐 각각의 프로세스가 동시에 공유 메모리를 사용할 수는 없었다.
따라서 종래의 공유 메모리 사용 방법을 이용하게 되면, 복수의 프로세스가 공유 메모리를 동시에 사용할 수 없으므로 실시간 데이터 처리에 장애가 되고, 복수의 프로세스가 동시에 공유 메모리에 접속할 경우 부하가 걸려 데이터 로스가 발생하는 문제점이 있었다.
본 발명은 상기 문제점을 해결하기 위한 것으로서, 잠금(lock) 기능에 의해 특정 시간 동안 특정 프로세스가 공유 메모리를 독점함으로써 발생하는 문제를 해결할 수 있는 방법 및 장치를 제공하고자 한다.
또한, 본 발명은 공유 메모리의 채널을 다중화함으로써, 복수의 프로세스들이 동시에 공유 메모리에 접속하여 데이터를 억세스할 수 있도록 하는 방법 및 장치를 제공하고자 한다.
또한 상기 공유 메모리를 적용하는 시스템에서 실시간 데이터 처리가 용이하도록 함으로써, 시스템 전체의 처리 성능을 높일 수 있는 방법 및 장치를 제공하고자 한다.
상기 기술적 과제를 달성하기 위해 본 발명에서 제공하는 공유 메모리 채널 다중화 장치는 복수의 프로세스들; 상기 프로세스들에 의해 접근 가능한 저장수단; 및 상기 저장수단을 상기 프로세스들의 개수와 동일한 수의 채널로 구분하고, 그 채널들 각각을 상기 프로세스들 각각에 할당한 후 그 할당 정보를 해당 프로세스들과 공유하는 채널 관리부를 포함한다.
바람직하게, 저장수단은 상기 채널 관리부에서 할당한 프로세스들간 데이터 흐름을 지원하는 적어도 하나의 채널 영역들을 포함하고, 상기 채널 영역들 각각은 상기 할당된 프로세스들에 의해 동시 접근 가능하다.
또한 상기 복수의 프로세스들 중 하나는 복수의 부 프로세스(thread)들을 포함하는 멀티 쓰레드 프로그램이고, 상기 복수의 프로세스들 중 다른 하나는 상기 멀티 쓰레드 프로그램로부터 수신된 메시지와 채널 정보를 저장하는 트랜잭션 테이블을 포함하는 것이 바람직하다.
또한 상기 채널 관리부는 상기 저장수단을 상기 부 프로세스(thread)들의 개수와 동일한 수의 채널로 구분하고, 그 채널들 각각을 상기 부 프로세스(thread)들 각각에 할당한 후 그 할당 정보를 해당 부 프로세스(thread)들과 공유하는 것이 바람직하다.
한편 상기 기술적 과제를 달성하기 위해 본 발명에서 제공하는 공유 메모리 채널 다중화 방법은 단일 프로세스와 복수의 부 프로세스(thread)들을 포함하는 멀티 쓰레드 프로그램간 데이터 통신을 위해, 상기 부 프로세스(thread)의 개수를 결정하는 단계; 공유 메모리를 상기 부 프로세스(thread)들의 개수와 동일한 수의 채널 영역으로 구분하는 단계; 상기 채널들 각각을 상기 부 프로세스(thread)들 각각에 할당하는 단계; 상기 단일 프로세스와 부 프로세스(thread))들 각각을 연결하는 단계; 상기 부 프로세스(thread)들이 해당 채널 정보를 포함하는 메시지를 상기 단일 프로세스에게 전달하는 단계; 및 상기 단일 프로세스가 상기 수신된 메시지 및 해당 채널 정보를 저장하는 단계를 포함한다.
바람직하게, 상기 연결단계는 상기 단일 프로세스와 부 프로세스(thread)들 각각을 유닉스 도메인 소켓(unix domain socket)으로 연결한다.
또한, 상기 방법은 상기 부 프로세스(thread)들 중 하나인 제1 부 프로세스(thread)가 상기 공유 메모리의 채널영역들 중 상기 제1 부 프로세스(thread)에게 할당된 제1 채널 영역에 데이터를 저장하는 제1 저장 단계; 상기 단일 프로세스가 상기 제1 채널 영역으로부터 해당 데이터를 읽은 후 응답 메시지를 상기 제1 채널 영역에 저장하는 단계; 상기 부 프로세스(thread)들 중 하나인 제2 부 프로세스(thread)가 상기 공유 메모리의 채널 영역들 중 상기 제2 부 프로세스(thread)에게 할당된 제2 채널 영역에 데이터를 저장하는 제2 저장 단계; 및 상기 단일 프로세스가 상기 제2 채널 영역으로부터 해당 데이터를 읽은 후 응답 메시지를 상기 제2 채널 영역에 저장하는 단계를 더 포함하고, 상기 제1 및 제2 저장 단계는 동시에 처리하는 것이 바람직하다.
본 발명의 실시예에 따른 공유 메모리 채널 다중화 방법은 컴퓨터로 읽을 수 있는 기록 매체에 저장된 상기 공유 메모리 채널 다중화 방법을 실행하기 위한 컴퓨터 프로그램을 실행함으로써 구현될 수 있다.
상술한 바와 같이, 본 발명은 공유 메모리의 채널을 다중화함으로써, 잠금(lock) 기능에 의해 특정 시간 동안 특정 프로세스가 공유 메모리를 독점함으로써 발생하는 문제를 해결할 수 있다. 본 발명에 의하면, 복수의 프로세스들이 공유 메모리에 동시 접속하여 데이터를 억세스할 수 있다. 따라서, 상기 공유 메모리를 적용하는 시스템에서 실시간 데이터 처리가 용이하고, 그 시스템 전체의 처리 성능을 높일 수 있는 장점이 있다.
또한, 본 발명은 공유 메모리의 채널을 다중화함으로써, 특정 프로세스가 공유 메모리에 접속하여 데이터를 억세스하는 동안에 다른 프로세스가 동시에 공유 메모리에 접속하여 데이터를 억세스할 수 있도록 한다. 즉, 잠금 기능을 사용하지 않음으로써, 복수의 프로세스들이 동시에 공유 메모리에 접속할 있다.
또한 상기 공유 메모리를 적용하는 시스템에서 실시간 데이터 처리가 용이하도록 함으로써, 시스템 전체의 처리 성능을 높일 수 있다.
도 1은 본 발명의 일실시 예에 따른 공유 메모리 장치에 대한 개략적인 블록도이다.
도 2는 도 1에 예시된 공유 메모리 장치에 접근하는 하나의 프로세스의 처리 과정에 대한 일 예를 도시한 순서도이다.
도 3은 도 1에 예시된 공유 메모리 장치에 접근하는 다른 하나의 프로세스의 처리 과정에 대한 일 예를 도시한 순서도이다.
도 4a 및 도 4b는 도 1에 예시된 공유 메모리 장치를 이용한 데이터 통신에 대한 제1 및 제2 예를 도시한 도면들이다.
도 2는 도 1에 예시된 공유 메모리 장치에 접근하는 하나의 프로세스의 처리 과정에 대한 일 예를 도시한 순서도이다.
도 3은 도 1에 예시된 공유 메모리 장치에 접근하는 다른 하나의 프로세스의 처리 과정에 대한 일 예를 도시한 순서도이다.
도 4a 및 도 4b는 도 1에 예시된 공유 메모리 장치를 이용한 데이터 통신에 대한 제1 및 제2 예를 도시한 도면들이다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시 예에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 실시 예를 예시하는 첨부도면 및 첨부도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일실시 예에 따른 공유 메모리 장치에 대한 개략적인 블록도이다. 도 1을 참조하면, 본 발명의 일실시 예에 따른 공유 메모리 장치(100)는 제1 및 제2 제어부(110, 120), 메모리(130), 채널 관리부(140) 및 트랜잭션 테이블(115)을 포함한다.
제1 및 제2 제어부(110, 120)는 메모리(130)를 공유하는 프로세스들이다. 이 때, 제1 제어부(110)는 단일 프로세스고, 제2 제어부(120)는 복수의 부 프로세스(thread)들을 포함하는 멀티 쓰레드 프로그램일 수 있다.
메모리(130)는 복수의 프로세스들에 의해 접근 가능한 저장 수단이다. 도 1의 예에서는 제1 및 제2 제어부(110, 120)가 접근할 수 있다. 또한 메모리(130)는 채널 관리부(140)에서 할당한 프로세스들간 데이터 흐름을 지원하는 적어도 하나의 채널 영역들(131, 132, 133)을 포함하고, 채널 영역들(131, 132, 133) 각각은 할당된 프로세스들에 의해 동시 접근 가능하다. 채널 관리부(140)는 메모리(130)를 동작 중인 프로세스들의 개수와 동일한 수의 채널 영역으로 구분하고, 그 채널들 각각을 상기 프로세스들 각각에 할당한 후 그 할당 정보를 해당 프로세스들과 공유한다. 도 1의 예에서와 같이 메모리(130)에 접근 가능한 제어부가 복수의 부 프로세스(thread)들을 포함하는 멀티 프로세스인 제2 제어부(120)를 포함하는 경우, 메모리(130)를 상기 부 프로세스(thread)들의 개수와 동일한 수의 채널 영역으로 구분하고, 그 채널 영역들 각각을 상기 부 프로세스(thread)들 각각에 할당한 후 그 할당 정보를 해당 부 프로세스(thread)들과 공유하는 것이 바람직하다.
트랜잭션 테이블(115)은 제1 제어부(110)가 멀티 쓰레드 프로그램인 제2 제어부(120)로부터 수신된 메시지와 채널 정보를 저장한다. 도 2는 도 1에 예시된 공유 메모리 장치에 접근하는 하나의 프로세스의 처리 과정에 대한 일 예를 도시한 순서도이다. 특히 도 2는 도 1의 제1 제어부(110)가 메모리(130)를 통해 제2 제어부(120)와 데이터를 주고받기 위해 수행하는 처리 과정에 대한 일 예를 도시하고 있다.
제1 제어부(110) 및 제2 제어부(120)가 서로 데이터를 주고받기 위해 서로 공유하는 메모리(130)를 이용하는데, 이를 위해 채널 관리부(140)는 도면에 도시되지 않은 사전 처리 과정을 수행한다.
이를 설명하기 위해 먼저 도 1을 참조하면, 채널 관리부(140)는 제2 제어부(120)에 포함된 부 프로세스(thread)들의 개수를 결정한 후, 메모리(130)를 상기 부 프로세스(thread)들의 개수와 동일한 수의 채널 영역들(131, 132, 133)로 구분한다. 그리고 그 채널 영역들(131, 132, 133) 각각을 상기 부 프로세스(thread)들 각각에 할당한다. 예를 들어, 제2 제어부(120)가 n개의 부 프로세스(thread)들을 포함하는 경우, 제1 채널 영역(131)은 제1 부 프로세스(thread)에게 할당하고, 제2 채널 영역(132)는 제2 부 프로세스(thread)에게 할당하고, 제n 채널 영역(133)은 제n 부 프로세스(thread)에게 할당한다.
이어, 도 1 및 도 2를 참조하면, 제1 제어부(110)는 제2 제어부(120)에 포함된 복수의 부 프로세스(thread)들과 소켓을 연결한다(S210). 이 때, 제1 제어부(110)와 제2 제어부(120)는 유닉스 도메인 소켓(unix domain socket)을 이용하여 연결할 수 있다. 제1 제어부(110)는 상기 소켓 연결 결과 정상 기동중인 부 프로세스(thread)를 결정한다(S220). 즉, 상기 소켓 연결이 정상이면 해당 부 프로세스(thread)가 정상적으로 기동중인 것으로 판단하고, 상기 소켓 연결이 종료되면 해당 부 프로세스(thread)가 비정상적인 것으로 판단한다. 예를 들어, 제1 제어부(110)의 프로세스를 ‘A’라 하고, 제2 제어부(120)의 제1 부 프로세스(thread)를 ‘B1’이라 하고, 제2 제어부(120)의 제2 부 프로세스(thread)를 ‘B2’라 할 경우, A-B1: socket connect 상태, A-B2 : socket disconnect 상태라면, B1 만 정상 기동 상태라고 판단한다.
제1 제어부(110)가 제2 제어부(120)의 정상 기동중인 부 프로세스(thread)들로부터 해당 채널 정보를 포함하는 메시지를 수신하면(S230), 제1 제어부(110)는 상기 수신된 메시지 및 해당 채널 정보를 저장한다(S240). 이 때, 제1 제어부(110)는 상기 수신된 메시지 및 해당 채널 정보를 트랜잭션 테이블(115)에 저장한다.
상기 메시지를 수신한 제1 제어부(110)는 그 메시지에 대한 응답 메시지를 생성한 후(S250), 상기 응답 메시지를 상기 과정(S240)에서 기 저장된 채널로 전달한다(S260). 즉, 해당 채널에 해당되는 메모리(130)의 채널 영역에 해당 데이터를 저장한다. 그러면, 제2 제어부(120)의 해당 부 프로세스(thread)가 그 채널 영역의 데이터를 읽어 감으로써 데이터가 전달되는 것이다.
제1 제어부(110)는 해당 프로세스가 종료될 때까지(S270) 상기 과정들(S230 내지 S260)을 반복 수행한다.
도 3은 도 1에 예시된 공유 메모리 장치에 접근하는 다른 하나의 프로세스의 처리 과정에 대한 일 예를 도시한 순서도이다. 특히 도 3은 도 1의 제2 제어부(120)의 처리 과정에 대한 일 예를 도시하고 있다.
제2 제어부(120)의 경우도, 메모리(130)를 이용하여 제1 제어부(110)와 데이터를 주고 받기 위해 앞서 언급한 사전 처리 과정을 수행한다. 그 처리 과정은 도 2를 참조한 설명 서두에 언급되었으므로 생략한다.
도 1 내지 도 3을 참조하면, 상기 과정(S210)에서 제1 제어부(110)와 소켓 연결된 제2 제어부(120)의 각 부 프로세스(thread)들은 제1 제어부(110)에게 정상 기동 여부를 알린다(S310). 이 때 제2 제어부(120)의 각 부 프로세스(thread)들에 대한 정상 기동 여부 결정 방법에 대한 구체적인 처리 방법은 도 2의 처리 과정(S220)에서 설명한 바와 같으므로 생략한다.
그리고, 제2 제어부(120)의 각 부 프로세스(thread)들이 정상 기동 중인 경우(S320), 상기 각 부 프로세스(thread)들은 제1 제어부(110)와 공유 메모리 통신을 수행한다(S330). 즉, 상기 각 부 프로세스(thread)들은 메모리(130)를 이용하여 제1 제어부(110)와 데이터를 송수신한다. 이를 위해, 상기 부 프로세스(thread)들은 메모리(130)의 채널 영역들 중 자신에게 할당된 채널 영역에 데이터를 저장하고, 제1 제어부(110)는 그 데이터를 읽어간 후 해당 데이터의 채널 정보를 확인한다. 예를 들어, 제2 제어부(120)의 부 프로세스(thread)들 중 하나인 제1 부 프로세스(thread)가 메모리(130)의 채널영역들 중 상기 제1 부 프로세스(thread)에게 할당된 제1 채널 영역에 데이터를 저장하면 제1 제어부(110)는 상기 제1 채널 영역으로부터 해당 데이터를 읽은 후 응답 메시지를 상기 제1 채널 영역에 저장하고, 제2 제어부(120)의 부 프로세스(thread)들 중 하나인 제2 부 프로세스(thread)가 메모리(130)의 채널 영역들 중 상기 제2 부 프로세스(thread)에게 할당된 제2 채널 영역에 데이터를 저장하면 제1 제어부(110)는 상기 제2 채널 영역으로부터 해당 데이터를 읽은 후 응답 메시지를 상기 제2 채널 영역에 저장한다.
이 때, 상기 제1 및 제2 채널 영역들은 서로 독립된 저장 공간이고, 제1 및 제2 부 프로세스(thread)들 역시 서로 독립적으로 동작한다. 따라서, 상기 제1 채널 영역과 제2 채널 영역은 상기 제1 및 제2 부 프로세스(thread)들 각각에 의해 동시에 접근 가능하다.
도 4a 및 도 4b는 도 1에 예시된 공유 메모리 장치를 이용한 데이터 통신에 대한 제1 및 제2 예를 도시한 도면들이다.
도 4a는 단일 프로세스로 구성된 서로 다른 어플리케이션들(App. A(10) 및 App. B(20))간의 데이터 흐름을 지원하기 위한 공유 메모리(200)의 채널 형태를 나타내고, 도 4b는 단일 프로세스로 구성된 어플리케이션(App. A(10)) 및 복수의 프로세스로 구성된 어플리케이션(App. B1(21) 및 App. B2(22))간의 데이터 흐름을 지원하기 위한 공유 메모리(300)의 채널 형태를 나타낸다.
도 4a를 참조하면, 단일 프로세스로 구성된 서로 다른 어플리케이션들(App. A(10) 및 App. B(20))간의 데이터 흐름을 지원하기 위해, 공유 메모리(200)는 송/수신을 수행하는 하나의 채널로 구분된다. 이 경우 App. A(10)는 상기 채널의 수신영역(Rx)을 통해 App. B(20)의 요청 메시지(Req.)를 수신하고, 상기 채널의 전송영역(Tx)을 통해 App. B(20)에게 응답 메시지(Ans.)를 전송한다.
도 4a의 실시예에서는, App. B(20)가 App. A(10)로 요청 메시지(Req.)를 전송하고, 이에 응답하여 App. A(10)가 App. B(20)에게 응답 메시지(Ans.)를 전송하나, 그 역으로 App. A(10)가 App. B(20)로 요청 메시지(Req.)를 전송하고, 이에 응답하여 App. B(20)가 App. A(10)에게 응답 메시지(Ans.)를 전송하는 실시예도 가능하다.
한편, 도 4b를 참조하면, 단일 프로세스로 구성된 어플리케이션(App. A(10)) 및 복수의 프로세스로 구성된 어플리케이션(App. B1(21) 및 App. B2(22))간의 데이터 흐름을 지원하기 위해, 공유 메모리(300)는 송/수신을 수행하는 2개의 채널로 구분된다. 이 경우 App. A(10)는 제1 채널(channel 1)의 수신영역(ch1.Rx)을 통해 App. B1(21)의 요청 메시지(Req.1)를 수신하고, 제1 채널(channel 1)의 전송영역(ch1.Tx)을 통해 App. B1(21)에게 응답 메시지(Ans.1)를 전송한다. 또한 App. A(10)는 제2 채널(channel 2)의 수신영역(ch2.Rx)을 통해 App. B2(22)의 요청 메시지(Req.2)를 수신하고, 제2 채널(channel 2)의 전송영역(ch2.Tx)을 통해 App. B2(22)에게 응답 메시지(Ans.2)를 전송한다.도 4b의 실시예에서도, App. B1(21) 및 App. B2(22)가 App. A(10)로 요청 메시지(Req.)를 전송하고, 이에 응답하여 App. A(10)가 응답 메시지(Ans.)를 전송하나, 그 역으로 App. A(10)가 App. B1(21) 및 App. B2(22)로 요청 메시지(Req.)를 전송하고, 이에 응답하여 App. B1(21) 및 App. B2(22)가 App. A(10)에게 응답 메시지(Ans.)를 전송하는 실시예도 가능하다.
이 경우, App. A(10)는 트랜잭션 테이블(115)을 통해, 현재 정상 기동중인 App.B의 쓰레드를 알 수 있기 때문에, App.A(10)가 사용 가능한 채널을 선택하여 응답해 줄 수 있는 App.B의 쓰레드로 요청 메시지(Req.)를 보낼 수 있다.
이와 같이 본 발명은 필요에 따라 공유 메모리의 채널을 다중화 함으로써, 복수의 프로세스들이 공유 메모리에 동시 접속하여 데이터를 억세스할 수 있다. 이로 인해 그 공유 메모리를 적용하는 시스템에서 실시간 데이터 처리가 용이하고, 그 시스템 전체의 처리 성능을 높일 수 있다. 예를 들어, Cpu 코어(core)가 복수개인 시스템에서 어플리케이션 A와 B가 공유 메모리를 통한 통신을 할 때, 시스템 전체의 처리 성능을 높이기 위해, cpu 점유율이 높고 처리 시간이 오래 걸리는 어플리케이션 B를 동일한 작업을 하는 멀티 쓰레드(multi thread) 또는 멀티 프로세스(multi process)로 구성한 후, 공유 메모리 채널을 본 발명과 같이 다중화함으로써, 시스템 전체의 처리 성능을 높일 수 있는 장점이 있는 것이다.
본 발명의 실시예는 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 결합에 의하여 구현 가능하다.
또한 본 발명의 실시예에 따른 공유 메모리 채널 다중화 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있다. 본 발명의 실시예에 따른 공유 메모리 채널 다중화 방법은 컴퓨터로 읽을 수 있는 기록 매체에 저장된 상기 공유 메모리 채널 다중화 방법을 실행하기 위한 컴퓨터 프로그램을 실행함으로써 구현될 수 있다.
컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 예컨대, 컴퓨터가 읽을 수 있는 기록매체에는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명의 실시예에 따른 공유 메모리 채널 다중화 방법을 구현하기 위한 기능적인 (functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 공유 메모리 장치
110, 120: 제1 및 제2 제어부
115: 트랜잭션 테이블
130: 메모리
140: 채널 관리부
10, 20, 21, 22: 어플리케이션들
110, 120: 제1 및 제2 제어부
115: 트랜잭션 테이블
130: 메모리
140: 채널 관리부
10, 20, 21, 22: 어플리케이션들
Claims (10)
- 복수의 프로세스들;
상기 프로세스들에 의해 접근 가능한 저장수단; 및
상기 저장수단을 상기 프로세스들의 개수와 동일한 수의 채널 영역으로 구분하고, 그 채널들 각각을 상기 프로세스들 각각에 할당한 후 그 할당 정보를 해당 프로세스들과 공유하는 채널 관리부를 포함하며,
상기 저장수단은
상기 채널 관리부에서 할당한 프로세스들간 데이터 흐름을 지원하는 적어도 하나의 채널 영역들을 포함하고,
상기 채널 영역들 각각은 상기 할당된 프로세스들에 의해 동시 접근 가능한 공유 메모리 채널 다중화 장치. - 삭제
- 제1항에 있어서, 상기 복수의 프로세스들 중 하나는
복수의 부 프로세스(thread)들을 포함하는 멀티 쓰레드 프로그램인 공유 메모리 채널 다중화 장치. - 제3항에 있어서, 상기 채널 관리부는
상기 저장수단을 상기 부 프로세스(thread)들의 개수와 동일한 수의 채널 영역으로 구분하고, 그 채널 영역들 각각을 상기 부 프로세스(thread)들 각각에 할당한 후 그 할당 정보를 해당 부 프로세스(thread)들과 공유하는 공유 메모리 채널 다중화 장치. - 제3항에 있어서, 상기 복수의 프로세스들 중 다른 하나는
상기 멀티쓰레드 프로그램으로부터 수신된 메시지와 채널 정보를 저장하는 트랜잭션 테이블을 포함하는 채널 다중화 장치. - 단일 프로세스와 복수의 부 프로세스(thread)들을 포함하는 멀티 프로세스간 데이터 통신을 위해, 상기 부 프로세스(thread)의 개수를 결정하는 단계;
공유 메모리를 상기 부 프로세스(thread)들의 개수와 동일한 수의 채널 영역으로 구분하는 단계;
상기 채널들 각각을 상기 부 프로세스(thread)들 각각에 할당하는 단계;
상기 단일 프로세스와 부 프로세스(thread)들 각각을 유닉스 도메인 소켓(unix domain socket)으로 연결하는 단계;
상기 부 프로세스(thread)들이 해당 채널 정보를 포함하는 메시지를 상기 단일 프로세스에게 전달하는 단계; 및
상기 단일 프로세스가 상기 수신된 메시지 및 해당 채널 정보를 저장하는 단계를 포함하는 공유 메모리 채널 다중화 방법. - 삭제
- 제6항에 있어서,
상기 부 프로세스(thread)들 중 하나인 제1 부 프로세스(thread)가 상기 공유 메모리의 채널영역들 중 상기 제1 부 프로세스(thread)에게 할당된 제1 채널 영역에 데이터를 저장하는 제1 저장 단계;
상기 단일 프로세스가 상기 제1 채널 영역으로부터 해당 데이터를 읽은 후 응답 메시지를 상기 제1 채널 영역에 저장하는 단계;
상기 부 프로세스(thread)들 중 하나인 제2 부 프로세스(thread)가 상기 공유 메모리의 채널 영역들 중 상기 제2 부 프로세스(thread)에게 할당된 제2 채널 영역에 데이터를 저장하는 제2 저장 단계; 및
상기 단일 프로세스가 상기 제2 채널 영역으로부터 해당 데이터를 읽은 후 응답 메시지를 상기 제2 채널 영역에 저장하는 단계를 더 포함하는 공유 메모리 채널 다중화 방법. - 제8항에 있어서, 상기 제1 및 제2 저장 단계는
동시에 처리 가능한 공유 메모리 채널 다중화 방법. - 제6항, 제8항 및 제9항 중 어느 한 항에 기재된 방법을 실행하기 위한 컴퓨터로 읽을 수 있는 프로그램을 기록한 기록 매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100129493A KR101227885B1 (ko) | 2010-12-16 | 2010-12-16 | 공유 메모리 채널 다중화 방법 및 그 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100129493A KR101227885B1 (ko) | 2010-12-16 | 2010-12-16 | 공유 메모리 채널 다중화 방법 및 그 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120067865A KR20120067865A (ko) | 2012-06-26 |
KR101227885B1 true KR101227885B1 (ko) | 2013-01-30 |
Family
ID=46686773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100129493A KR101227885B1 (ko) | 2010-12-16 | 2010-12-16 | 공유 메모리 채널 다중화 방법 및 그 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101227885B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11726701B2 (en) | 2020-10-29 | 2023-08-15 | Samsung Electronics Co., Ltd. | Memory expander, heterogeneous computing device using memory expander, and operation method of heterogenous computing |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102115759B1 (ko) | 2014-01-07 | 2020-05-27 | 한국전자통신연구원 | 공유 메모리 기반 통신 장치 및 그 방법 |
KR102517344B1 (ko) | 2017-12-20 | 2023-04-03 | 삼성전자주식회사 | 병렬 처리 시스템 및 그 동작 방법 |
CN113485832B (zh) * | 2021-07-09 | 2024-07-02 | 支付宝(杭州)信息技术有限公司 | 用于对物理内存池进行分配管理的方法及装置、物理内存池 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6360303B1 (en) * | 1997-09-30 | 2002-03-19 | Compaq Computer Corporation | Partitioning memory shared by multiple processors of a distributed processing system |
-
2010
- 2010-12-16 KR KR1020100129493A patent/KR101227885B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6360303B1 (en) * | 1997-09-30 | 2002-03-19 | Compaq Computer Corporation | Partitioning memory shared by multiple processors of a distributed processing system |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11726701B2 (en) | 2020-10-29 | 2023-08-15 | Samsung Electronics Co., Ltd. | Memory expander, heterogeneous computing device using memory expander, and operation method of heterogenous computing |
Also Published As
Publication number | Publication date |
---|---|
KR20120067865A (ko) | 2012-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9411646B2 (en) | Booting secondary processors in multicore system using kernel images stored in private memory segments | |
CN107018091B (zh) | 资源请求的调度方法和装置 | |
US8463908B2 (en) | Method and apparatus for hierarchical management of system resources | |
EP2548336B1 (en) | Method and apparatus for managing reallocation of system resources | |
EP2388699A1 (en) | Information processing device and information processing method | |
US5553073A (en) | Token ring network | |
DE102006019839A1 (de) | Zeitbewusste Systeme | |
US8213461B2 (en) | Method of designating slots in a transmission frame for controlling transmission of data over an interconnect coupling a plurality of master units with a plurality of slave units | |
KR101227885B1 (ko) | 공유 메모리 채널 다중화 방법 및 그 장치 | |
CN109788325B (zh) | 视频任务分配方法及服务器 | |
US20140068165A1 (en) | Splitting a real-time thread between the user and kernel space | |
CN101908004A (zh) | 促进请求执行的装置和方法 | |
JP3664021B2 (ja) | サービスレベルによる資源割当方式 | |
KR20050076702A (ko) | 멀티프로세서 시스템에서의 데이터 전송 방법과, 그방법을 수행하는 멀티프로세서 및 프로세서 | |
US20140289725A1 (en) | Threads in operating systems without kernel thread support | |
US20120060007A1 (en) | Traffic control method and apparatus of multiprocessor system | |
WO2000028418A1 (en) | Scheduling resource requests in a computer system | |
CN116382861A (zh) | Numa架构的服务器网络进程自适应调度方法、系统及介质 | |
EP1730620A1 (en) | System and method for licensing and distribution of i/o in partitioned computer systems | |
US8689230B2 (en) | Determination of running status of logical processor | |
US20130247065A1 (en) | Apparatus and method for executing multi-operating systems | |
US20230063893A1 (en) | Simultaneous-multi-threading (smt) aware processor allocation for cloud real-time workloads | |
CN114090249A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN113590306A (zh) | 一种实现域控制器双系统之间可靠通讯的方法 | |
CN107678866B (zh) | 一种基于嵌入式操作系统的分区通信方法及装置 |
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: 20161207 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20171122 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20190109 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20200128 Year of fee payment: 8 |