KR20130118593A - 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치 및 방법 - Google Patents

데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20130118593A
KR20130118593A KR1020120041577A KR20120041577A KR20130118593A KR 20130118593 A KR20130118593 A KR 20130118593A KR 1020120041577 A KR1020120041577 A KR 1020120041577A KR 20120041577 A KR20120041577 A KR 20120041577A KR 20130118593 A KR20130118593 A KR 20130118593A
Authority
KR
South Korea
Prior art keywords
thread
data
network
socket
writer
Prior art date
Application number
KR1020120041577A
Other languages
English (en)
Inventor
전형국
이수형
김재혁
김경태
김원태
Original Assignee
한국전자통신연구원
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020120041577A priority Critical patent/KR20130118593A/ko
Priority to US13/655,950 priority patent/US20130282853A1/en
Publication of KR20130118593A publication Critical patent/KR20130118593A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 데이터 분산 서비스를 위한 미들웨어에서 네트워크 쓰레드, 라이터/리더 쓰레드 및 애플리케이션의 구동을 위해 사용되는 메모리 자원을 관리함으로써 데이터를 처리하기 위한 DDS 미들웨어의 전체적인 성능을 최적화할 수 있는 장치 및 방법에 관한 것이다. 이를 위해 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치는, 데이터 분산 서비스를 위한 미들웨어의 데이터 전송 계층인 RTPS 계층에서 네트워크와 데이터를 송수신하는 소켓을 갖는 네트워크 쓰레드에 대해 쓰레드 풀을 이용하여 관리하는 네트워크 쓰레드 관리 모듈; 로크프리 기능을 갖고 네트워크 쓰레드와 데이터를 송수신하는 로크프리 큐를 관리하는 로크프리 큐 관리 모듈; 라이터 쓰레드 또는 리더 쓰레드가 로크프리 큐와 데이터를 송수신하고 상기 RTPS 계층에서의 행위(behavior)를 수행하도록 관리하는 라이터/리더 쓰레드 관리 모듈을 포함한다.

Description

데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치 및 방법{Apparatus and method for processing data in middleware for data distribution service}
본 발명은 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치 및 방법에 관한 것으로, 더욱 상세하게는 데이터 분산 서비스를 위한 미들웨어에서 네트워크 쓰레드, 라이터/리더 쓰레드 및 애플리케이션의 구동을 위해 사용되는 메모리 자원을 관리함으로써 데이터를 처리하기 위한 DDS 미들웨어의 전체적인 성능을 최적화할 수 있는 장치 및 방법에 관한 것이다.
데이터 통신 미들웨어(middleware)는 애플리케이션(application)에서 제공했던 데이터 교환 기능을 대행하는 역할을 수행한다. 또한, 데이터 통신 미들웨어는 다양한 디바이스들이 존재하는 유비쿼터스 환경에서 동적으로 네트워크 망을 구성하여 통신 네트워크 도메인을 형성하는 역할을 수행한다. 현재 데이터 교환을 위한 데이터 통신 미들웨어는 Web Service, CORBA, JMS 등 다양한 데이터 통신 미들웨어 들이 개발되었다. 이러한 데이터 통신 미들웨어는 각각의 특징을 가지고 다양한 응용 도메인에서 사용되고 있지만, 대부분 중앙 집중식 방법으로 중앙에 서버를 통한 데이터 관리 구조를 가지게 된다. 현재의 유비쿼터스 환경과 같이 다수의 디바이스들이 동적으로 망을 구성하고 분산된 형태로 빈번한 데이터를 제공하는 구조에서는 중앙 집중식 데이터 관리 구조는 효율적이지 못하게 된다. 따라서, 이러한 분산된 환경에서 데이터 도메인을 구성하고 효율적인 데이터 전송을 위해, 국제 소프트웨어 표준화 기구인 OMG(Object Management Group)에서 데이터 분산 서비스(Data Distribution Service; DDS)의 미들웨어 표준을 제안하였다. OMG에서 제안한 DDS는 동적으로 네트워크 데이터 도메인을 형성하고 각각의 임베디드 기기나 모바일 기기들이 네트워크 데이터 도메인에 자유로운 참여나 탈퇴가 가능한 네트워크 통신 환경을 제공한다. 이를 위해, DDS는 사용자에게 발간(publish), 구독(subscribe) 환경을 제공하여 자신이 원하는 데이터에 대한 추가적인 작업 없이 데이터를 생산, 수집, 소비할 수 있는 기능을 제공해 준다.
DDS의 발간/구독 모델은 분산 애플리케이션에서의 복잡한 네트워크 프로그래밍을 가상적으로 제거하며, 기본적인 발간/구독 모델 이상의 메커니즘을 지원한다. 통신으로 DDS를 이용하는 애플리케이션이 갖는 주요한 이득은 상호간의 응답을 다루기 위해서 아주 적은 설계 시간이 소요되며, 특히, 애플리케이션들은 위치나 존재를 포함한 참가하는 다른 애플리케이션들에 대한 정보를 필요로 하지 않는다. DDS는 사용자 애플리케이션들로부터의 어떤 간섭 요구 없이 '메시지를 누가 받을 것인가', '구독자가 어디에 위치해 있는가', '메시지를 전달할 수 없는 경우에는 어떻게 되는가' 등을 포함한 모든 메시지 전송에 대한 것을 자동적으로 다룬다.
또한, DDS는 사용자가 Quality of Service(QoS) 파라미터를 설정하는 것을 허용하고 자동 발견 메커니즘을 포함한 메시지를 보내거나 받을 때 사용되는 방법들을 설명하고 있다. DDS는 완전한 익명으로 메시지를 교환함으로써 분산된 애플리케이션 설계를 단순화하고 모듈러 형태의 잘 구조화된 프로그램을 구현할 수 있는 기반을 제공해 준다.
OMG에서 제안하는 DDS의 기본 구조는 DCPS(Data Centric Publish-Subscribe) 계층 및 RTPS(Real Time Publish-Subscribe) 계층으로 구분될 수 있는데, 이 중 DCPS 계층은 애플리케이션에 제공되는 데이터 발간/구독 기능 인터페이스로써, 이 계층을 통해 애플리케이션은 데이터를 교환할 상대에 대한 인지 없이 원하는 데이터의 발간/구독만을 수행하게 된다. 한편, RTPS 계층은 OMG에 의해 표준화된 데이터 중심 배포 서비스를 위한 데이터 전송 프로토콜로써 데이터 발간/구독 통신 모델을 지원하며, UDP/IP와 같이 신뢰성이 없는 전송 계층 상에서도 동작 가능하도록 설계되었다. 이러한 RTPS 계층을 구성하는 기본 모듈은 데이터 교환 시 통신에 참여하게 되는 개체들을 정의하는 구조 모듈(structure module), 라이터(writer)와 리더(reader) 간에 정보 교환을 위해 사용될 메시지에 대해 정의 하는 메시지 모듈(message module), 라이터와 리더들 간의 상태적, 시간적 조건에 따라 수행되어야 할 메시지의 전송 절차에 대해 정의하는 행위 모듈(behavior module), 도메인 상에 존재하는 데이터 배포 관련 개체에 대한 정보를 탐색하는 기능을 수행하는 탐색 모듈(discovery module)로 나타난다. 이때, 탐색 모듈은 서로 다른 네트워크 상에서의 참여자(participant) 탐색을 위해 정의된 프로토콜인 PDP(Participant Discovery Protocol)와 라이터 또는 리더와 같이 서로 다른 종단점 간의 탐색 정보 교환에 사용되는 프로토콜인 EPD(Endpoint Discovery Protocol)를 사용한다.
DDS의 미들웨어는 다른 통신 미들웨어와는 달리 데이터 중심의 통신 미들웨어로써 많은 수의 데이터 통신 개체들이 작은 크기의 데이터를 실시간성에 기반하여 전송하게 되므로, 통신 개체의 데이터 송수신과 관련된 효율적인 구현을 필요로 한다. 또한, DCPS 계층과 RTPS 계층의 2개의 계층의 존재로 인하여, 두 계층의 효율적인 구현과 상호 데이터 전달이 되지 않는 경우에는 DDS의 미들웨어 시스템의 전체적인 성능에 영향을 미치게 되므로, DDS 미들웨어의 데이터 중심적인 특성을 위배하지 않으면서, 전체적인 DDS 미들웨어의 성능을 최적화할 수 있는 기술이 요구되는 실정이다.
본 발명은 DDS 미들웨어에서 네트워크 쓰레드, 라이터/리더 쓰레드 및 애플리케이션의 구동을 위해 사용되는 메모리 자원을 관리함으로써, DDS 미들웨어의 병렬성을 보장하고, 메모리와 쓰레드를 최적화할 수 있는 기술을 제공하는 것을 목적으로 한다.
또한, 본 발명은 DDS 미들웨어를 구현하는데 있어서 보다 효율적으로 데이터를 송수신할 수 있게 하는 기술을 제공하는 것을 목적으로 한다.
상기한 목적을 달성하기 위하여 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치는, 데이터 분산 서비스(Data Distribution Service)를 위한 미들웨어의 데이터 전송 계층인 RTPS(Real Time Publish-Subscribe) 계층에서 네트워크와 데이터를 송수신하는 소켓을 갖는 네트워크 쓰레드(network thread)에 대해 쓰레드 풀(thread pool)을 이용하여 관리하는 네트워크 쓰레드 관리 모듈; 로크프리(lock-free) 기능을 갖고 상기 네트워크 쓰레드와 상기 데이터를 송수신하는 로크프리 큐(queue)를 관리하는 로크프리 큐 관리 모듈; 라이터 쓰레드(writer thread) 또는 리더 쓰레드(reader thread)가 상기 로크프리 큐와 상기 데이터를 송수신하고 상기 RTPS 계층에서의 행위(behavior)를 수행하도록 관리하는 라이터/리더 쓰레드 관리 모듈을 포함하는 것을 특징으로 한다.
이때, 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치는, 상기 미들웨어가 요청하는 메모리 자원을 상기 데이터 분산 서비스를 이용하는 시스템으로부터 미리 할당받아 제공하는 메모리 관리 모듈을 더 포함할 수 있다.
이때, 상기 메모리 관리 모듈은, 상기 데이터 분산 서비스를 이용하는 시스템으로부터 일정한 메모리 자원을 미리 할당받아 관리하는 메모리 관리부; 상기 미들웨어가 특정한 데이터 타입의 메모리 자원을 요청하면, 상기 메모리 관리부로부터 메모리 자원을 할당받아 상기 미들웨어가 요청하는 특정한 데이터 타입으로 변환하여 제공하는 캐쉬(cache); 및 상기 미들웨어가 요청하는 데이터 타입들을 구조화하여 관리하는 구조 관리부를 포함할 수 있다.
이때, 상기 구조 관리부는 상기 미들웨어가 요청하는 데이터 타입들을 트리(tree), 힙(heap) 또는 버퍼(buffer) 중 적어도 어느 하나 이상의 관리 구조를 이용하여 관리할 수 있다.
이때, 상기 소켓은 PDP(Participant Discovery Protocol) 소켓, EPD(Endpoint Discovery Protocol) 소켓 또는 데이터 소켓 중 적어도 어느 하나 이상의 소켓일 수 있다.
이때, 상기 네트워크 쓰레드는 상기 소켓을 관리하는 소켓 관리자를 포함하고, 상기 소켓 관리자는 상기 쓰레드 풀 간에 공유될 수 있다.
이때, 상기 소켓 관리자는 select, poll, epoll, kqueue 중 적어도 어느 하나 이상의 시스템 호출 방식에 따른 구조체를 이용할 수 있다.
이때, 상기 네트워크 쓰레드는 네트워크로부터 새로운 데이터가 도착하는 경우, 상기 라이터 쓰레드 또는 리더 쓰레드로 할당되는 작업(job)을 생성할 수 있다.
이때, 상기 라이터/리더 쓰레드 관리 모듈은, 상기 네트워크 쓰레드에 의해 생성된 작업(job)을 상기 라이터 쓰레드 또는 리더 쓰레드로 할당하는 작업 큐를 포함할 수 있다.
이때, 상기 작업은 엔터티 포인터(entity pointer), 패킷 데이터(packet data), 행위 상태(behavior status) 및 작업 시간 스케쥴(job time schedule)을 포함하는 필드로 구성될 수 있다.
이때, 상기 로크프리 큐는 CAS 명령어(Compare And Swap instruction)에 의해 구현될 수 있다.
또한, 상기한 목적을 달성하기 위하여 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 방법은, 데이터 분산 서비스를 위한 미들웨어의 데이터 전송 계층인 RTPS 계층에서 네트워크와 데이터를 송수신하는 소켓을 갖고 쓰레드 풀을 지원하는 네트워크 쓰레드를 구성하는 단계; 상기 네트워크 쓰레드가 상기 네트워크로부터 수신한 데이터를 로크프리 기능을 갖는 로크프리 큐로 전송하는 단계; 및 라이터 쓰레드 또는 리더 쓰레드가 상기 로크프리 큐에서 상기 데이터를 읽어 상기 RTPS 계층에서의 행위를 수행하는 단계를 포함하는 것을 특징으로 한다.
이때, 상기 네트워크 쓰레드를 구성하는 단계는, 모든 네트워크 쓰레드들을 단일의 네트워크 쓰레드로 통합하는 단계; 상기 단일의 네트워크 쓰레드를 기반으로 소켓을 생성하는 단계; 상기 소켓을 관리하는 소켓 관리자를 생성하는 단계; 상기 단일의 네트워크 쓰레드를 복수의 네트워크 쓰레드로 다중화하여 쓰레드 풀을 생성하는 단계; 상기 소켓 관리자와 상기 소켓을 연결하는 단계; 및 상기 쓰레드 풀이 상기 소켓 관리자를 공유하도록 상기 소켓 관리자와 상기 쓰레드 풀을 연결하는 단계를 포함할 수 있다.
이때, 상기 소켓은 PDP 소켓, EPD 소켓 또는 데이터 소켓 중 적어도 어느 하나 이상의 소켓일 수 있다.
이때, 상기 라이터 쓰레드 또는 리더 쓰레드가 RTPS 계층에서의 행위를 수행하는 단계는, 작업 큐가 상기 네트워크 쓰레드에 의해 생성된 작업을 시간 기준으로 정렬하는 단계; 및 상기 라이터 쓰레드 또는 리더 쓰레드가 상기 작업 큐의 최상위에 위치하는 작업을 읽어 RTPS 계층에서의 행위를 수행하는 단계를 포함할 수 있다.
이때, 상기 라이터 쓰레드 또는 리더 쓰레드가 RTPS 계층에서의 행위를 수행하는 단계는, 상기 라이터 쓰레드 또는 리더 쓰레드에 의해 수행되어야 하는 주기적인 추가 행위가 필요한 경우에 상기 주기적인 추가 행위를 위한 새로운 작업을 생성하는 단계; 및 상기 주기적인 추가 행위가 수행되어야 하는 시간을 표시하여 상기 생성된 새로운 작업을 상기 작업 큐에 삽입하는 단계를 더 포함할 수 있다.
이때, 상기 작업은 엔터티 포인터, 패킷 데이터, 행위 상태 및 작업 시간 스케쥴을 포함하는 필드로 구성될 수 있다.
이때, 상기 로크프리 큐는 CAS 명령어에 의해 구현될 수 있다.
본 발명에 따르면, 쓰레드 및 메모리 자원의 관리를 통해 DDS 미들웨어의 데이터 중심적인 특성을 위배하지 않으면서 DDS 미들웨어의 전체적인 성능을 향상시킬 수 있는 효과가 있다.
또한, 본 발명에 따르면, 종래의 DDS 미들웨어에서 사용되는 FIFO 큐를 로크프리 FIFO 큐로 대체함으로써, 리드(read) 연산에 비하여 라이트(write) 연산이 빈번한 상황에서 DDS 미들웨어의 전체적인 성능 향상을 이끌어 낼 수 있는 효과가 있다.
또한, DDS 미들웨어에서 라이터/리더 엔터티에 대응되는 라이터/리더 쓰레드들을 1개의 라이터/리더 쓰레드로 동작시킴으로써 시스템의 효율성을 높이고, 주기적인 이벤트의 처리나 반복되는 데이터의 처리를 위해서 타임 오더링된 라이터/리더 작업 큐를 통해 라이터/리더 쓰레드에 할당되는 작업을 관리함으로써 반복적인 데이터의 처리가 보다 효율적으로 수행될 수 있도록 하는 효과가 있다.
도 1은 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치의 구성을 나타내는 블록도이다.
도 2는 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치에 의해 관리되는 DDS 미들웨어의 구조를 개략적으로 나타내는 도면이다.
도 3은 도 1에 도시된 네트워크 쓰레드 관리 모듈에 의해 관리되는 네트워크 쓰레드의 구성과 동작을 설명하기 위한 도면이다.
도 4는 도 1에 도시된 로크프리 큐 관리 모듈에 의해 관리되는 로크프리 큐를 구현하는 방식을 설명하기 위한 도면이다.
도 5는 도 1에 도시된 라이터/리더 쓰레드 관리 모듈에 의해 관리되는 라이터 쓰레드와 라이터 작업 큐의 실행 구조를 설명하기 위한 도면이다.
도 6은 도 1에 도시된 라이터/리더 쓰레드 관리 모듈에 의해 관리되는 리더 쓰레드와 리더 작업 큐의 실행 구조를 설명하기 위한 도면이다.
도 7은 도 1에 도시된 메모리 관리 모듈의 구성을 나타내는 블록도이다.
도 8 내지 도 10은 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 방법을 설명하기 위한 흐름도이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
이하에서는 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치의 구성 및 그 동작에 대하여 설명하도록 한다.
도 1은 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치의 구성을 나타내는 블록도이다.
도 1을 참조하면, 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치는, DDS 미들웨어에서 쓰레드 풀(thread pool)을 지원하는 네트워크 쓰레드(network thread, 100)를 관리하기 위한 네트워크 쓰레드 관리 모듈(10), 네트워크 쓰레드(100)로부터 데이터를 전달받으며 로크프리(lock-free) 기능을 제공하는 라이터 로크프리 큐(200a) 및 리더 로크프리 큐(200b)로 이루어지는 로크프리 큐(lock-free queue, 200)를 관리하는 로크프리 큐 관리 모듈(20), 라이터 로크프리 큐(200a) 및 리더 로크프리 큐(200b)로부터 각각 데이터를 전달받으며 DDS 미들웨어의 RTPS 행위(behavior) 기능을 제공하는 라이터 쓰레드(writer thread, 300a) 및 리더 쓰레드(reader thread, 300b)와, 상기 라이터 쓰레드(300a) 및 리더 쓰레드(300b)에 각각 작업(job)를 할당하는 라이터 작업 큐(400a) 및 리더 작업 큐(400b)로 구성되는 작업 큐(job queue, 400)를 관리하는 라이터/리더 쓰레드 관리 모듈(30), 그리고 미리 할당된 메모리의 재사용성 및 시스템의 메모리 관리 효율을 높이기 위한 메모리 관리 모듈(40)로 구성된다.
네트워크 쓰레드 관리 모듈(10)은, DDS 미들웨어의 데이터 전송 계층인 RTPS 계층에서 네트워크와 데이터를 송수신하는 소켓을 갖는 네트워크 쓰레드에 대하여 쓰레드 풀의 개념을 이용하여 관리한다.
로크프리 큐 관리 모듈(20)은, 로크프리 기능을 갖는 선입선출(first-in first-out; FIFO) 큐인 로크프리 큐(200)에 대하여 상기 네트워크 쓰레드 관리 모듈(10)에 의해 쓰레드 풀로 관리되는 네트워크 쓰레드(100)와 데이터를 송수신하도록 관리한다.
라이터/리더 쓰레드 관리 모듈(30)은, 라이터 쓰레드(300a) 또는 리더 쓰레드(300b)가 상기 로크프리 큐와 데이터를 송수신하고 RTPS 계층의 특정한 행위(behavior)를 수행하도록 상기 라이터 쓰레드(300a)와 리더 쓰레드(300b)를 관리한다. 또한, 라이터/리더 쓰레드 관리 모듈(30)은 라이터 작업 큐(400a)가 라이터 쓰레드(300a)로 RTPS 계층의 특정한 행위를 수행하도록 하는 작업을 할당하거나, 리더 작업 큐(400b)가 리더 쓰레드(300b)로 RTPS 계층의 특정한 행위를 수행하도록 하는 작업을 할당하도록 라이터 작업 큐(400a)와 리더 작업 큐(400b)를 관리한다.
메모리 관리 모듈(40)은, DDS를 이용하는 시스템으로부터 일정한 메모리 자원을 미리 할당받고, DDS 미들웨어가 특정한 타입의 메모리 자원을 요청하면 미리 할당받은 메모리 자원을 요청된 데이터의 타입으로 변환하여 상기 DDS 미들웨어로 제공한다.
도 2는 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치에 의해 관리되는 DDS 미들웨어의 구조를 개략적으로 나타내는 도면이다.
도 2을 참조하면, 도 1에 도시된 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치에 의해, 본 발명에 따른 DDS 미들웨어 시스템은 네트워크 쓰레드(100), 라이터 로크프리 큐(200a) 및 리더 로크프리 큐(200b), 라이터 쓰레드(300a) 및 리더 쓰레드(300b), 라이터 작업 큐(400a) 및 리더 작업 큐(400b)로 구성되는 구조를 갖는다.
보다 구체적으로, 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치에 의해 관리되는 DDS 미들웨어 시스템은 다중 소켓(120)들과 상기 다중 소켓(120)들을 관리하는 소켓 관리자(140)를 포함하고 쓰레드 풀을 지원하는 네트워크 쓰레드(100), 상기 네트워크 쓰레드(100)로부터 데이터를 수신하여 라이터 쓰레드(300a) 또는 리더 쓰레드(300b)로 각각 전달하고 로크프리 기능을 제공하는 라이터 로크프리 큐(200a)와 리더 로크프리 큐(200b), 상기 라이터 로크프리 큐(200a) 또는 리더 로크프리 큐(200b)로부터 데이터를 전달받으며 DDS 미들웨어의 RTPS 계층에서의 행위(behavior)를 수행하고 쓰레드 풀 기능을 제공할 수 있는 라이터 쓰레드(300a)와 리더 쓰레드(300b), 상기 라이터 쓰레드(300a) 또는 리더 쓰레드(300b)에 DDS 미들웨어의 RTPS 계층에서의 행위(behavior)를 수행하도록 하는 작업을 각각 할당하는 라이터 작업 큐(400a)와 리더 작업 큐(400b), 그리고 DDS 미들웨어 시스템의 전체적인 메모리 자원을 미리 할당받아 각 쓰레드들에 필요한 메모리 자원을 제공하는 메모리 관리 모듈(40)로 구성되는 구조를 갖게 된다.
도 3은 도 1에 도시된 네트워크 쓰레드 관리 모듈(10)에 의해 관리되는 네트워크 쓰레드(100)의 구성과 동작을 설명하기 위한 도면이다.
도 3을 참조하면, 네트워크 쓰레드 관리 모듈(10)에 의해 관리되는 네트워크 쓰레드(100)는 소켓과 소켓 관리자(140)로 구성된다. 소켓은 DDS 미들웨어 시스템에서 사용되는 소켓들로써 네트워크(50)를 통해 PDP 메시지(122a)를 송수신하기 위한 PDP 소켓(120a), EPD 메시지(122b)를 송수신하기 위한 PDP 소켓(120b) 및 토픽 메시지(122c)를 송수신하기 위한 데이터 소켓(120c)으로 구성된다. 또한, 소켓 관리자(140)는 소켓의 효율적인 데이터 전달을 위해 쓰레드 풀을 사용한다. 이때, 상기 소켓 관리자(140)는 select, poll, epoll, kqueue 중 적어도 어느 하나 이상의 시스템 호출 방식에 따른 구조체를 이용하여 소켓과 통신할 수 있다. 쓰레드 풀은 동일한 기능을 수행하는 복수의 네트워크 쓰레드들(100a, 100b, 100c)로 구성되어 소켓 관리자(140)를 공유하며, 소켓에 데이터의 도착과 같은 이벤트가 발생하게 되면, 실제 소켓을 웨이크 업(wake-up)시켜 데이터의 송수신에 이용한다.
보다 구체적으로, 네트워크 쓰레드(100)는 복수의 네트워크 쓰레드들(100a, 100b, 100c)로의 다중화 과정을 통해 생성된 쓰레드 풀로 구성되는데, 이를 위해 먼저 다수의 네트워크 쓰레드들을 단일의 네트워크 쓰레드로 통합한다. 상기 통합된 단일의 네트워크 쓰레드를 기반으로 PDP, EDP, 데이터를 위한 소켓(120a, 120b, 120c)을 라이터와 리더 각각에 대하여 3개씩 생성한다. 그 다음으로, 각 소켓을 관리할 소켓 관리자를 생성하고, 쓰레드 풀의 개념을 이용하여 통합된 단일의 네트워크 쓰레드를 DDS 미들웨어 시스템의 성능에 적합하게 생성시킨 복수의 네트워크 쓰레드들(100a, 100b, 100c)로 다중화시킨다. 이때, 상기 쓰레드 풀에서의 다중화된 네트워크 쓰레드들의 개수는 기본적으로 DDS 시스템의 CPU 개수의 2배를 사용하는 것이 바람직하나, 반드시 이에 한정되는 것은 아니다. 쓰레드 풀은 DDS 미들웨어 시스템이 임의의 소켓(120)으로 데이터가 수신되는 경우에 수신된 데이터를 select나 poll의 다중화 방법을 이용하여 소켓 관리자(140)가 직접 데이터 수신 이벤트를 처리하여 네트워크 쓰레드를 다중화 할 수 있는 방법을 우선으로 제공하도록 동작한다. 마지막으로, 소켓 관리자(140)와 소켓(120)을 연결한 후에 소켓 관리자(140)와 네트워크 쓰레드(100)의 쓰레드 풀을 연결한다.
도 4는 도 1에 도시된 로크프리 큐 관리 모듈(20)에 의해 관리되는 로크프리 큐(200)를 구현하는 방식을 설명하기 위한 도면이다.
도 4를 참조하면, 애플리케이션(220)은 로크프리 큐 라이브러리(lock-free queue library, 240)를 이용하여 라이터 로크프리 큐(200a)와 리더 로크프리 큐(200b)로 이루어지는 로크프리 큐(200)를 구현한다. 이때, 상기 로크프리 큐(200)는 운영체제(OS, 220)에서 제공하지 아니하는 디바이스(device, 280)의 CAS 명령어(Compare And Swap instruction)을 이용하여 로크프리 큐(200)를 구현할 수 있다.
대부분의 소프트웨어에서의 데이터의 접근은 라이트(write) 연산에 비하여 리드(read) 연산이 매우 빈번하다. 이러한 리드 연산 대부분인 데이터 구조에서는, 주로 리더 연산만 일어나고 라이터 연산의 비중은 매우 작은 객체에 주로 쓰이는 RCU(Read Copy Update)와 같은 동기화 기법이 리더에게 확장성있는 성능을 보장한다. 상기 RCU와 같은 동기화 기법은 리더 연산이 Wait-free이며 그 오버헤드가 극도로 작으나, 그 대신 라이터 연산의 오버헤드가 크므로, 리드 연산에 비하여 라이트 연산이 빈번한 데이터 구조에서는 오히려 성능이 저하된다는 문제가 있다. 이에, 본 발명에서는 종래의 DDS 미들웨어에서 적용되고 있던 FIFO 큐를 로크프리 FIFO 큐로 대체함으로써 DDS 미들웨어의 전체적인 성능 향상을 이끌어 낼 수 있다.
도 5는 도 1에 도시된 라이터/리더 쓰레드 관리 모듈(30)에 의해 관리되는 라이터 쓰레드(300a)와 라이터 작업 큐(400a)의 실행 구조를 설명하기 위한 도면이다.
도 5를 참조하면, 네트워크 쓰레드(100)는 네트워크로부터 라이터 쓰레드(300a)로 처리해야 하는 새로운 데이터가 도착하는 이벤트가 발생하는 경우, 하나의 작업(500a)을 만들어서 라이터 작업 큐(400a)에 삽입한다. 라이터 쓰레드(300a)는 라이터 작업 큐(400a)에서 상기 작업(500a)을 읽어와서 RTPS 계층에서의 행위(behavior)를 수행한다. 이때, 라이터 쓰레드(300a)가 수행하는 행위(behavior)는 고신뢰성을 위한 QoS 레벨로써 'stateless'와 'stateful'의 레벨로 구분될 수 있는데, 이를 분류하는 기준은 리더의 상태를 기록하는가의 여부에 따르고, 상태를 기록하면 'stateful'이 되고 그렇지 않으면 'stateless'이 된다. 라이터 쓰레드(300a)가 수행하는 행위(behavior)는 'best effort stateful' 등으로써 공지된 다른 DDS 미들웨어 시스템을 통해 널리 알려져 있으므로, 본 명세서에서는 보다 상세한 설명을 생략하도록 한다.
라이터 작업 큐(400a)에 삽입되는 작업(500a)은 총 4개의 필드로 구성될 수 있는데, 이는 라이터 데이터 구조(writer data structure)를 가리키고 있는 엔터티 포인터(entity pointer, 520a), 실제 네트워크로부터 전달된 패킷 데이터(packet data, 540a), 라이터 쓰레드(300a)에 의해 수행될 행위 상태(behavior status, 560a) 및, 작업(500a)이 생성된 시간인 작업 시간 스케쥴(job time schedule, 580a)이다.
DDS 미들웨어 시스템은 행위(behavior)를 수행하는 하나의 쓰레드로 DDS 미들웨어 시스템에 필요한 다수 개의 라이터 엔터티들을 모두 수행하는 구조를 가지려 한다. 이러한 경우, 불필요한 쓰레드를 다수 개 생성시키는 것 보다 시스템의 실행 효율성을 높일 수가 있게 된다. 여기서, 라이터 작업 큐(400a)는 타임 오더링(time-ordering)된 속성을 갖는 큐로써, 네트워크 쓰레드(100)에 의해 생성된 작업(500a)을 시간 기준으로 정렬하여 라이터 쓰레드(300a)가 작업(500a)을 시간 순서에 맞게 처리할 수 있도록 한다. 즉, 라이터 엔터티에 대응되는 라이터 쓰레드들을 1개의 라이터 쓰레드로 동작시킴으로써 시스템의 효율성을 높이고, 주기적인 이벤트의 처리나 반복되는 데이터의 처리를 위해서 타임 오더링된 라이터 작업 큐(400a)를 통해 라이터 쓰레드(300a)에 할당되는 작업(500a)을 관리함으로써 반복적인 데이터의 처리가 보다 효율적으로 수행될 수 있도록 한다. 여기서, 라이터 쓰레드(300a)는 시스템의 성능에 따라 라이터/리더 쓰레드 관리 모듈(30)에 의해 쓰레드 풀로 관리될 수 있다.
라이터 쓰레드(300a)와 라이터 작업 큐(400a) 간의 동작에 대하여 설명하면, 먼저 라이터 쓰레드(300a)의 네트워크 쓰레드(100)로 데이터의 도착과 같은 이벤트가 발생하는 경우, 이벤트가 발생한 RTPS 엔터티 구조체, 데이터, 행위 상태, 및 시간 정보가 라이터 작업 큐(400a)에 삽입된다. 라이터 쓰레드(300a)는 라이터 작업 큐(400a)의 최상위에 위치하는 작업을 읽어 RTPS 계층에서의 행위(behavior)를 수행한다. 만약, 라이터 쓰레드(300a)에 의한 주기적인 추가 행위(behavior)가 요구되는 경우, 상기 주기적인 추가 행위(behavior)에 대한 RTPS 엔터티 구조체, 데이터, 행위 상태, 및 시간 정보가 라이터 작업 큐(400a)에 삽입된다. 이때, 라이터 작업 큐(400a)에는 다음에 추가된 작업이 수행되어야 하는 시간이 표시된다.
라이터 작업 큐(400a)는 기본적으로 네트워크로부터 데이터 도착과 같은 새로운 이벤트가 발생한 시간과 이전에 이벤트가 발생한 시간으로부터 작업 큐의 시간을 계산하고 타임 오더링을 수행한다. 라이터 작업 큐(400a)에 대한 시간을 체크할 루틴(routine)은 select 함수 또는 condwaittimed 함수를 이용할 수 있다. 보다 구체적으로 라이터 작업 큐(400a)에 대한 시간을 체크하는 방법을 설명하면, 먼저 네트워크로부터 데이터 도착과 같은 새로운 이벤트가 발생한 경우 새로운 이벤트 처리 시 작업 큐의 시간을 계산한다. 그리고, 라이터 작업 큐(400a)에 이벤트 발생 시간보다 이전의 시간을 갖는 작업이 존재하면 그 작업을 먼저 처리하고, 라이터 작업 큐(400a)에 다른 새로운 작업의 추가가 없다면 상기 새로운 이벤트가 발생함에 따른 작업을 수행한다. 만약, 상기 새로운 이벤트가 발생함에 따른 작업이 처리되는 과정에서 라이터 쓰레드(300a)에 의한 주기적인 추가 행위(behavior)가 필요한 경우, 그에 대한 새로운 작업을 생성하고 시간을 기록하여 라이터 작업 큐(400a)에 추가한다. 라이터 작업 큐(400a)는 매 이벤트마다 작업 큐에 삽입된 작업들의 시간을 계산하고, 계산된 시간에 따라 삽입된 작업들에 대한 타임 오더링을 수행하여 라이터 쓰레드(300a)로 하여금 시간 순서에 맞게 작업 처리를 수행할 수 있도록 한다. 이때, 라이트 쓰레드(300a)는 라이트 쓰레드(300a) 내부의 select 함수나 condwaittime 함수를 이용해서 라이트 작업 큐(400a)의 리스트의 처음 작업의 최소 시간만큼 슬립(sleep)한 후 라이트 작업 큐(400a)의 이벤트를 처리한다.
도 6은 도 1에 도시된 라이터/리더 쓰레드 관리 모듈(30)에 의해 관리되는 리더 쓰레드(300b)와 리더 작업 큐(400b)의 실행 구조를 설명하기 위한 도면이다.
도 6을 참조하면, 네트워크 쓰레드(100)는 네트워크로부터 리더 쓰레드(300b)로 처리해야 하는 새로운 데이터가 도착하는 이벤트가 발생하는 경우, 하나의 작업(500b)을 만들어서 리더 작업 큐(400b)에 삽입한다. 리더 쓰레드(300b)는 리더 작업 큐(400b)에서 상기 작업(500b)을 읽어와서 RTPS 계층에서의 'best effort stateful' 등과 같은 행위(behavior)를 수행한다. 이때, 리더 작업 큐(400b)에 삽입되는 작업(500b)은 총 4개의 필드로 구성될 수 있는데, 이는 리더 데이터 구조(reader data structure)를 가리키고 있는 엔터티 포인터(520b), 실제 네트워크로부터 전달된 패킷 데이터(540b), 리더 쓰레드(300b)에 의해 수행될 행위 상태(560b) 및, 작업(500b)이 생성된 시간인 작업 시간 스케쥴(580b)이다.
리더 작업 큐(400b)는 타임 오더링된 속성을 갖는 큐로써, 네트워크 쓰레드(100)에 의해 생성된 작업(500b)을 시간 기준으로 정렬하여 리더 쓰레드(300b)가 작업(500b)을 시간 순서에 맞게 처리할 수 있도록 한다. 즉, 리더 엔터티에 대응되는 리더 쓰레드들을 1개의 리더 쓰레드로 동작시킴으로써 시스템의 효율성을 높이고, 주기적인 이벤트의 처리나 반복되는 데이터의 처리를 위해서 타임 오더링된 리더 작업 큐(400b)를 통해 리더 쓰레드(300b)에 할당되는 작업(500b)을 관리함으로써 반복적인 데이터의 처리가 보다 효율적으로 수행될 수 있도록 한다. 여기서, 리더 쓰레드(300b)는 시스템의 성능에 따라 라이터/리더 쓰레드 관리 모듈(30)에 의해 쓰레드 풀로 관리될 수 있다.
리더 쓰레드(300b)와 리더 작업 큐(400b) 간의 동작에 대하여 설명하면, 먼저 리더 쓰레드(300b)의 네트워크 쓰레드(100)로 데이터의 도착과 같은 이벤트가 발생하는 경우, 이벤트가 발생한 RTPS 엔터티 구조체, 데이터, 행위 상태, 및 시간 정보가 리더 작업 큐(400b)에 삽입된다. 리더 쓰레드(300b)는 리더 작업 큐(400b)의 최상위에 위치하는 작업을 읽어 RTPS 계층에서의 행위(behavior)를 수행한다. 만약, 리더 쓰레드(300b)에 의한 주기적인 추가 행위(behavior)가 요구되는 경우, 상기 주기적인 추가 행위(behavior)에 대한 RTPS 엔터티 구조체, 데이터, 행위 상태, 및 시간 정보가 리더 작업 큐(400b)에 삽입된다. 이때, 리더 작업 큐(400b)에는 다음에 추가된 작업이 수행되어야 하는 시간이 표시된다.
리더 작업 큐(400b)는 기본적으로 네트워크로부터 데이터 도착과 같은 새로운 이벤트가 발생한 시간과 이전에 이벤트가 발생한 시간으로부터 작업 큐의 시간을 계산하고 타임 오더링을 수행한다. 리더 작업 큐(400b)에 대한 시간을 체크할 루틴은 select 함수 또는 condwaittimed 함수를 이용할 수 있다. 보다 구체적으로 리더 작업 큐(400b)에 대한 시간을 체크하는 방법을 설명하면, 먼저 네트워크로부터 데이터 도착과 같은 새로운 이벤트가 발생한 경우 새로운 이벤트 처리 시 작업 큐의 시간을 계산한다. 그리고, 리더 작업 큐(400b)에 이벤트 발생 시간보다 이전의 시간을 갖는 작업이 존재하면 그 작업을 먼저 처리하고, 리더 작업 큐(400b)에 다른 새로운 작업의 추가가 없다면 상기 새로운 이벤트가 발생함에 따른 작업을 수행한다. 만약, 상기 새로운 이벤트가 발생함에 따른 작업이 처리되는 과정에서 리더 쓰레드(300b)에 의한 주기적인 추가 행위(behavior)가 필요한 경우, 그에 대한 새로운 작업을 생성하고 시간을 기록하여 리더 작업 큐(400b)에 추가한다. 리더 작업 큐(400b)는 매 이벤트마다 작업 큐에 삽입된 작업들의 시간을 계산하고, 계산된 시간에 따라 삽입된 작업들에 대한 타임 오더링을 수행하여 리더 쓰레드(300b)로 하여금 시간 순서에 맞게 작업 처리를 수행할 수 있도록 한다. 이때, 리드 쓰레드(300b)는 리드 쓰레드(300b) 내부의 select 함수나 condwaittime 함수를 이용해서 리드 작업 큐(400b)의 리스트의 처음 작업의 최소 시간만큼 슬립(sleep)한 후 리드 작업 큐(400b)의 이벤트를 처리한다.
도 7은 도 1에 도시된 메모리 관리 모듈(40)의 구성을 나타내는 블록도이다.
도 7을 참조하면, 메모리 관리 모듈(40)은 DDS 애플리케이션의 구동 시에 상기 DDS 애플리케이션이 사용할 메모리를 DDS 시스템으로부터 미리 할당받아 사용하는 사용자 레벨의 메모리 자원(memory resource)을 관리하는 모듈로써, 메모리 관리부(420), 캐쉬(cache, 440) 및 구조 관리부(460)로 구성된다. 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치에서 메모리 관리 모듈(40)은 DDS 시스템의 configuration 정보를 이용하여 DDS 미들웨어에서 요청하는 메모리 자원을 미리 할당받으며, 사용자는 시스템 함수인 malloc 및 free 함수 대신에 본 발명에 따른 메모리 자원 접근 관리 인터페이스를 이용하여 사용자 레벨의 메모리 자원에 접근한다.
메모리 관리부(420)는 DDS 시스템의 메모리로부터 일정한 메모리 자원을 미리 할당받아 이를 관리한다. 메모리 관리부(420)는 DDS 시스템으로부터 미리 할당받은 메모리 자원에 대하여 메모리 자원 풀로써 관리하여 DDS 애플리케이션의 구동에 필요한 메모리 자원을 제공한다.
캐쉬(440)는 DDS 미들웨어가 애플리케이션의 구동에 필요한 특정한 데이터 타입의 메모리 자원을 요청하면, 메모리 관리부(420)로부터 메모리 자원을 할당받고 DDS 미들웨어가 요청하는 특정한 데이터 타입으로 변환하여 DDS 미들웨어에 제공한다. 즉, 캐쉬(440)는 DDS 미들웨어의 요청에 따라 메모리 관리자(420)에게 메모리 자원을 요구하고, 메모리 관리자(420)로부터 할당받은 메모리 자원을 DDS 애플리케이션의 타입에 맞게 변환함으로써, 각 데이터 타입 별로 메모리 자원을 관리할 수 있는 구조를 갖는다.
구조 관리부(460)는 DDS 미들웨어가 요청하는 데이터 타입들을 구조화하여 관리한다. 이를 위해, 구조 관리부(460)는 각 데이터 타입 별 메모리 자원을 DDS의 구조에 맞게 삽입, 제거, 접근 및 관리하기 위한 데이터 관리 구조를 갖는다. 이때, 구조 관리부(460)는 데이터 타입들을 트리(tree), 힙(heap) 또는 버퍼(buffer) 중 적어도 어느 하나 이상의 관리 구조를 이용하여 관리할 수 있다.
DDS 시스템에서의 메모리 자원에 대한 사용을 관리하기 위해 메모리 관리 모듈(40)에서의 메모리 자원을 관리하는 동작을 설명하면, DDS 미들웨어가 애플리케이션의 구동을 위한 특정 타입의 메모리 자원을 캐쉬(440)에 요청하면, 캐쉬(440)는 DDS 미들웨어가 요청하는 메모리 자원을 메모리 관리부(420)에 요청하여 해당 메모리 자원을 할당받는다. 메모리 관리부(420)로부터 캐쉬(440)로 할당된 메모리 자원은 캐쉬(440)에 의해 DDS 미들웨어에서 요청한 특정 타입의 데이터 타입으로 변환되어 DDS 미들웨어로 제공된다. 이렇게 제공된 특정한 데이터 타입의 메모리 자원은 애플리케이션의 구동을 위해 DDS 시스템에 의해 사용된다. 이러한 과정에서, DDS 시스템이 캐쉬(440)로부터 제공되는 특정한 데이터 타입을 효율적으로 검색할 수 있도록 하기 위해, 구조 관리부(460)는 데이터 타입들을 구조화하여 관리한다.
이하에서는 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 방법에 대하여 설명하도록 한다. 앞서, 도 1 내지 도 7을 참조한 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치의 동작에 대한 설명과 일부 중복되는 부분은 생략하여 설명하기로 한다.
도 8은 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 방법을 설명하기 위한 흐름도이다.
도 8을 참조하면, 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 방법은, 먼저 DDS 미들웨어의 데이터 전송 계층인 RTPS 계층에서 네트워크와 데이터를 송수신하는 소켓을 갖고 쓰레드 풀을 지원하는 네트워크 쓰레드를 구성한다(S100).
그 다음으로, 네트워크 쓰레드가 네트워크로부터 수신한 데이터를 로크프리 기능을 갖는 로크프리 큐로 전송한다(S200). 이때, 네트워크로부터 수신한 데이터가 라이터 쓰레드에 의해 처리되어야 하는 데이터인 경우에는 이를 라이터 로크프리 큐로 전송하고, 리더 쓰레드에 의해 처리되어야 하는 데이터인 경우에는 이를 리더 로크프리 큐로 전송한다.
그리고, 라이터 쓰레드 또는 리더 쓰레드가 각각 라이터 로크프리 큐 또는 리더 로크프리 큐에서 데이터를 읽어 상기 RTPS 계층에서의 행위(behavior)를 수행한다(S300).
도 9는 도 8에 도시된 흐름도에서 네트워크 쓰레드를 구성하는 S100 단계를 보다 구체적으로 설명하기 위한 흐름도이다.
도 9를 참조하면, S100 단계는 먼저 모든 네트워크 쓰레드들을 단일의 네트워크 쓰레드로 통합한다(S110).
그 다음으로, 상기 S110 단계에서 통합된 단일의 네트워크 쓰레드를 기반으로 소켓을 생성하고(S120), 생성된 소켓을 관리하는 소켓 관리자를 생성한다(S130). 상기 S120 단계에서는 DDS 미들웨어 시스템에서 사용되는 소켓들로써 네트워크를 통해 PDP 메시지를 송수신하기 위한 PDP 소켓, EPD 메시지를 송수신하기 위한 PDP 소켓 및 토픽 메시지를 송수신하기 위한 데이터 소켓 중 어느 하나 이상의 소켓을 생성한다. 또한, 상기 S120 단계에서는 상기 S110 단계에서 통합된 단일의 네트워크 쓰레드를 기반으로 PDP, EDP, 데이터를 위한 소켓을 라이터와 리더 각각에 대하여 3개씩 생성할 수 있다.
그리고, 통합된 단일의 네트워크 쓰레드를 복수의 네트워크 쓰레드로 다중화하여 쓰레드 풀을 생성하고(S140), 상기 S130 단계에서 생성된 소켓 관리자를 상기 S120 단계에서 생성된 소켓과 연결한다(S150). 상기 S140 단계에서 쓰레드 풀을 생성하기 위해 다중화되는 네트워크 쓰레드들의 개수는 DDS 시스템의 CPU 개수의 2배로 구성할 수 있다.
마지막으로, 쓰레드 풀이 소켓 관리자를 공유하도록 소켓 관리자와 쓰레드 풀을 연결한다(S160).
도 10은 도 8에 도시된 흐름도에서 라이터 쓰레드 또는 리더 쓰레드가 RTPS 계층에서의 행위(behavior)를 수행하는 S300 단계를 보다 구체적으로 설명하기 위한 흐름도이다.
도 10을 참조하면, S300 단계는 먼저 라이터 작업 큐 또는 리드 작업 큐가 네트워크 쓰레드에 의해 생성된 작업을 시간 기준으로 정렬한다(S310). 이때, 상기 S310 단계에서 네트워크 쓰레드에 의해 생성된 작업은 엔터티 포인터, 패킷 데이터, 행위 상태 및 작업 시간 스케쥴을 포함하는 필드로 구성될 수 있다.
그 다음으로, 라이터 쓰레드 또는 리드 쓰레드가 라이터 작업 큐 또는 리드 작업 큐의 최상위에 위치하는 작업을 읽어 RTPS 계층에서의 행위(behavior)를 수행한다(S320)
만약, 라이터 쓰레드 또는 리드 쓰레드에 의해 수행되어야 하는 주기적인 추가 행위(behavior)가 필요한 경우(S330), 네트워크 스레드에 의해 라이터 쓰레드 또는 리드 쓰레드가 주기적인 추가 행위를 수행하기 위한 새로운 작업을 생성한다(S340). 이때, 상기 S340 단계에서 네트워크 스레드에 의해 생성된 새로운 작업에 주가적인 추가 행위(behavior)가 수행되어야 하는 시간을 표시한다(S350).
상기 S350 단계에서 시간이 표시된 새로운 작업이 라이터 작업 큐 또는 리드 작업 큐에 삽입되고(S360), 상기 S310 단계를 재수행한다.
이상에서 상술한 본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치의 동작과 그 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 프로세서와 메모리를 구비하는 컴퓨터로 판독 가능한 기록 매체에 기록될 수 있다. 이 때, 컴퓨터로 판독 가능한 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 한편, 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터로 판독 가능한 기록매체에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM, DVD와 같은 광기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광매체(Magneto-Optical Media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 한편, 이러한 기록매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다.
본 발명에 따른 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치 및 방법이 도면과 명세서에서 최적의 실시예가 개시되었다. 여기서, 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10; 네트워크 쓰레드 관리 모듈
20; 로크프리 큐 관리 모듈
30; 라이터/리더 쓰레드 관리 모듈
40; 메모리 관리 모듈
100; 네트워크 쓰레드
120: 소켓
140; 소켓 관리자
200a; 라이터 로크프리 큐
200b; 리더 로크프리 큐
300a; 라이터 쓰레드
300b; 리더 쓰레드
400a; 라이터 작업 큐
400b; 리더 작업 큐
420; 메모리 관리부
440; 캐쉬
460; 구조 관리부

Claims (18)

  1. 데이터 분산 서비스(Data Distribution Service)를 위한 미들웨어의 데이터 전송 계층인 RTPS(Real Time Publish-Subscribe) 계층에서 네트워크와 데이터를 송수신하는 소켓을 갖는 네트워크 쓰레드(network thread)에 대해 쓰레드 풀(thread pool)을 이용하여 관리하는 네트워크 쓰레드 관리 모듈;
    로크프리(lock-free) 기능을 갖고 상기 네트워크 쓰레드와 상기 데이터를 송수신하는 로크프리 큐(queue)를 관리하는 로크프리 큐 관리 모듈; 및
    라이터 쓰레드(writer thread) 또는 리더 쓰레드(reader thread)가 상기 로크프리 큐와 상기 데이터를 송수신하고 상기 RTPS 계층에서의 행위(behavior)를 수행하도록 관리하는 라이터/리더 쓰레드 관리 모듈을 포함하는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치.
  2. 청구항 1에 있어서,
    상기 미들웨어가 요청하는 메모리 자원을 상기 데이터 분산 서비스를 이용하는 시스템으로부터 미리 할당받아 제공하는 메모리 관리 모듈을 더 포함하는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치.
  3. 청구항 2에 있어서,
    상기 메모리 관리 모듈은,
    상기 데이터 분산 서비스를 이용하는 시스템으로부터 일정한 메모리 자원을 미리 할당받아 관리하는 메모리 관리부;
    상기 미들웨어가 특정한 데이터 타입의 메모리 자원을 요청하면, 상기 메모리 관리부로부터 메모리 자원을 할당받아 상기 미들웨어가 요청하는 특정한 데이터 타입으로 변환하여 제공하는 캐쉬(cache); 및
    상기 미들웨어가 요청하는 데이터 타입들을 구조화하여 관리하는 구조 관리부를 포함하는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치.
  4. 청구항 3에 있어서,
    상기 구조 관리부는 상기 미들웨어가 요청하는 데이터 타입들을 트리(tree), 힙(heap) 또는 버퍼(buffer) 중 적어도 어느 하나 이상의 관리 구조를 이용하여 관리하는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치.
  5. 청구항 1에 있어서,
    상기 소켓은 PDP(Participant Discovery Protocol) 소켓, EPD(Endpoint Discovery Protocol) 소켓 또는 데이터 소켓 중 적어도 어느 하나 이상의 소켓인 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치.
  6. 청구항 1에 있어서,
    상기 네트워크 쓰레드는 상기 소켓을 관리하는 소켓 관리자를 포함하고, 상기 소켓 관리자는 상기 쓰레드 풀 간에 공유되는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치.
  7. 청구항 6에 있어서,
    상기 소켓 관리자는 select, poll, epoll, kqueue 중 적어도 어느 하나 이상의 시스템 호출 방식에 따른 구조체를 이용하는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치.
  8. 청구항 1에 있어서,
    상기 네트워크 쓰레드는 네트워크로부터 새로운 데이터가 도착하는 경우, 상기 라이터 쓰레드 또는 리더 쓰레드로 할당되는 작업(job)을 생성하는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치.
  9. 청구항 8에 있어서,
    상기 라이터/리더 쓰레드 관리 모듈은,
    상기 네트워크 쓰레드에 의해 생성된 작업(job)을 상기 라이터 쓰레드 또는 리더 쓰레드로 할당하는 작업 큐를 포함하는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치.
  10. 청구항 9에 있어서,
    상기 작업은 엔터티 포인터(entity pointer), 패킷 데이터(packet data), 행위 상태(behavior status) 및 작업 시간 스케쥴(job time schedule)을 포함하는 필드로 구성되는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치.
  11. 청구항 1에 있어서,
    상기 로크프리 큐는 CAS 명령어(Compare And Swap instruction)에 의해 구현되는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치.
  12. 데이터 분산 서비스를 위한 미들웨어의 데이터 전송 계층인 RTPS 계층에서 네트워크와 데이터를 송수신하는 소켓을 갖고 쓰레드 풀을 지원하는 네트워크 쓰레드를 구성하는 단계;
    상기 네트워크 쓰레드가 상기 네트워크로부터 수신한 데이터를 로크프리 기능을 갖는 로크프리 큐로 전송하는 단계; 및
    라이터 쓰레드 또는 리더 쓰레드가 상기 로크프리 큐에서 상기 데이터를 읽어 상기 RTPS 계층에서의 행위를 수행하는 단계를 포함하는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 방법.
  13. 청구항 12에 있어서,
    상기 네트워크 쓰레드를 구성하는 단계는,
    모든 네트워크 쓰레드들을 단일의 네트워크 쓰레드로 통합하는 단계;
    상기 단일의 네트워크 쓰레드를 기반으로 소켓을 생성하는 단계;
    상기 소켓을 관리하는 소켓 관리자를 생성하는 단계;
    상기 단일의 네트워크 쓰레드를 복수의 네트워크 쓰레드로 다중화하여 쓰레드 풀을 생성하는 단계;
    상기 소켓 관리자와 상기 소켓을 연결하는 단계; 및
    상기 쓰레드 풀이 상기 소켓 관리자를 공유하도록 상기 소켓 관리자와 상기 쓰레드 풀을 연결하는 단계를 포함하는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 방법.
  14. 청구항 12에 있어서,
    상기 소켓은 PDP 소켓, EPD 소켓 또는 데이터 소켓 중 적어도 어느 하나 이상의 소켓인 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 방법.
  15. 청구항 12에 있어서,
    상기 라이터 쓰레드 또는 리더 쓰레드가 RTPS 계층에서의 행위를 수행하는 단계는,
    작업 큐가 상기 네트워크 쓰레드에 의해 생성된 작업을 시간 기준으로 정렬하는 단계; 및
    상기 라이터 쓰레드 또는 리더 쓰레드가 상기 작업 큐의 최상위에 위치하는 작업을 읽어 RTPS 계층에서의 행위를 수행하는 단계를 포함하는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 방법.
  16. 청구항 15에 있어서,
    상기 라이터 쓰레드 또는 리더 쓰레드가 RTPS 계층에서의 행위를 수행하는 단계는,
    상기 라이터 쓰레드 또는 리더 쓰레드에 의해 수행되어야 하는 주기적인 추가 행위가 필요한 경우에 상기 주기적인 추가 행위를 위한 새로운 작업을 생성하는 단계; 및
    상기 주기적인 추가 행위가 수행되어야 하는 시간을 표시하여 상기 생성된 새로운 작업을 상기 작업 큐에 삽입하는 단계를 더 포함하는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 방법.
  17. 청구항 15에 있어서,
    상기 작업은 엔터티 포인터, 패킷 데이터, 행위 상태 및 작업 시간 스케쥴을 포함하는 필드로 구성되는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 방법.
  18. 청구항 12에 있어서,
    상기 로크프리 큐는 CAS 명령어에 의해 구현되는 것을 특징으로 하는, 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치.
KR1020120041577A 2012-04-20 2012-04-20 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치 및 방법 KR20130118593A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120041577A KR20130118593A (ko) 2012-04-20 2012-04-20 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치 및 방법
US13/655,950 US20130282853A1 (en) 2012-04-20 2012-10-19 Apparatus and method for processing data in middleware for data distribution service

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120041577A KR20130118593A (ko) 2012-04-20 2012-04-20 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20130118593A true KR20130118593A (ko) 2013-10-30

Family

ID=49381171

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120041577A KR20130118593A (ko) 2012-04-20 2012-04-20 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치 및 방법

Country Status (2)

Country Link
US (1) US20130282853A1 (ko)
KR (1) KR20130118593A (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150077256A (ko) * 2013-12-26 2015-07-07 한국전자통신연구원 다중 네트워크 도메인에서 데이터 분산 서비스(dds) 통신을 위한 가상 객체 생성 장치 및 방법
KR20150109511A (ko) 2014-03-19 2015-10-02 동아대학교 산학협력단 효율적인 데이터 수집을 위한 미들웨어 장치 그리고 미들웨어 장치의 효율적인 데이터 수집 방법
KR101637121B1 (ko) * 2015-04-07 2016-07-08 충남대학교산학협력단 쓰레드 풀을 이용한 양방향 리스너 구조의 데이터 처리장치
KR20190057984A (ko) * 2017-11-21 2019-05-29 두산중공업 주식회사 배전망 및 그리드망에서의 노드관리 게이트웨이 장치 및 그 방법
KR102211005B1 (ko) * 2019-12-10 2021-02-01 (주)구름네트웍스 효율적 메시지 처리를 제공하는 dds 미들웨어 장치

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2840539A1 (en) * 2013-08-23 2015-02-25 Thomson Licensing Communications device utilizing a central discovery mechanism, and respective method
US9389925B2 (en) * 2013-12-03 2016-07-12 International Business Machines Corporation Achieving low grace period latencies despite energy efficiency
CN105554089B (zh) * 2015-12-10 2019-04-26 中国航空工业集团公司西安航空计算技术研究所 一种基于dds标准的“请求-响应”式数据通信方法
KR101705797B1 (ko) * 2016-01-14 2017-02-10 충남대학교산학협력단 데이터 분산 서비스 기반의 통신단말 검색 시스템 및 방법
CN108694083B (zh) * 2017-04-07 2022-07-29 腾讯科技(深圳)有限公司 一种服务器的数据处理方法和装置
CN107368362B (zh) * 2017-06-29 2020-10-30 上海阅文信息技术有限公司 一种对于磁盘读写数据的多线程/多进程无锁处理方法及***
US11711411B2 (en) * 2019-03-25 2023-07-25 Real-Time Innovations, Inc. Method for transparent zero-copy distribution of data to DDS applications
CN110909079B (zh) * 2019-11-20 2020-09-01 南方电网数字电网研究院有限公司 数据交换同步方法、***、装置、服务器和存储介质
CN111031260B (zh) * 2019-12-25 2024-05-28 普世(南京)智能科技有限公司 一种基于环形无锁队列的高速影像单向传输***方法及***
US11822826B2 (en) * 2020-02-20 2023-11-21 Raytheon Company Sensor storage system
CN111859082A (zh) * 2020-05-27 2020-10-30 伏羲科技(菏泽)有限公司 标识解析方法及装置
US11687376B2 (en) * 2020-06-12 2023-06-27 Baidu Usa Llc Method for data protection in a data processing cluster with dynamic partition
CN112667387B (zh) * 2021-03-15 2021-06-18 奥特酷智能科技(南京)有限公司 一种基于dds的持久型数据对象同步的设计模型
CN113193985A (zh) * 2021-03-29 2021-07-30 清华大学 一种通信***仿真平台
CN113312184A (zh) * 2021-06-07 2021-08-27 平安证券股份有限公司 一种业务数据的处理方法及相关设备
CN115941550B (zh) * 2022-10-14 2023-06-23 华能信息技术有限公司 一种中间件集群管理方法及***

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6581088B1 (en) * 1998-11-05 2003-06-17 Beas Systems, Inc. Smart stub or enterprise javaTM bean in a distributed processing system
US6697849B1 (en) * 1999-08-13 2004-02-24 Sun Microsystems, Inc. System and method for caching JavaServer Pages™ responses
US7493398B2 (en) * 2003-04-16 2009-02-17 Microsoft Corporation Shared socket connections for efficient data transmission
US7730491B2 (en) * 2005-08-30 2010-06-01 Intel Corporation Fair scalable reader-writer mutual exclusion
US20070088871A1 (en) * 2005-09-30 2007-04-19 Kwong Man K Implementation of shared and persistent job queues
US7783853B1 (en) * 2006-04-24 2010-08-24 Real-Time Innovations, Inc. Memory usage techniques in middleware of a real-time data distribution system
US7827559B1 (en) * 2006-04-24 2010-11-02 Real-Time Innovations, Inc. Framework for executing multiple threads and sharing resources in a multithreaded computer programming environment
US7930706B1 (en) * 2006-09-26 2011-04-19 Qurio Holdings, Inc. Managing cache reader and writer threads in a proxy server
GB0802126D0 (en) * 2008-02-05 2008-03-12 Level 5 Networks Inc Scalable sockets
US8229968B2 (en) * 2008-03-26 2012-07-24 Microsoft Corporation Data caching for distributed execution computing
US8543743B2 (en) * 2009-01-27 2013-09-24 Microsoft Corporation Lock free queue
US8493598B2 (en) * 2010-09-07 2013-07-23 Xerox Corporation System and method for automated handling of document processing workload
JP5672199B2 (ja) * 2011-09-01 2015-02-18 富士通株式会社 情報処理装置、情報処理方法及び情報処理プログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150077256A (ko) * 2013-12-26 2015-07-07 한국전자통신연구원 다중 네트워크 도메인에서 데이터 분산 서비스(dds) 통신을 위한 가상 객체 생성 장치 및 방법
KR20150109511A (ko) 2014-03-19 2015-10-02 동아대학교 산학협력단 효율적인 데이터 수집을 위한 미들웨어 장치 그리고 미들웨어 장치의 효율적인 데이터 수집 방법
KR101637121B1 (ko) * 2015-04-07 2016-07-08 충남대학교산학협력단 쓰레드 풀을 이용한 양방향 리스너 구조의 데이터 처리장치
KR20190057984A (ko) * 2017-11-21 2019-05-29 두산중공업 주식회사 배전망 및 그리드망에서의 노드관리 게이트웨이 장치 및 그 방법
US10862710B2 (en) 2017-11-21 2020-12-08 DOOSAN Heavy Industries Construction Co., LTD Node management gateway device in distribution network and grid network and method thereof
KR102211005B1 (ko) * 2019-12-10 2021-02-01 (주)구름네트웍스 효율적 메시지 처리를 제공하는 dds 미들웨어 장치

Also Published As

Publication number Publication date
US20130282853A1 (en) 2013-10-24

Similar Documents

Publication Publication Date Title
KR20130118593A (ko) 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치 및 방법
CN100407152C (zh) 多策略资源调度的方法和***
US9092266B2 (en) Scalable scheduling for distributed data processing
RU2324970C2 (ru) Распределенные вычисления на основе идентичности для ресурсов устройств
US8443373B2 (en) Efficient utilization of idle resources in a resource manager
CN101652750B (zh) 数据处理装置、分散处理***、数据处理方法
JP2018531465A (ja) メッセージデータを格納するためのシステム及び方法
JP2018531465A6 (ja) メッセージデータを格納するためのシステム及び方法
US20130080824A1 (en) Distributed job scheduling in a multi-nodal environment
US8903981B2 (en) Method and system for achieving better efficiency in a client grid using node resource usage and tracking
JP2019535072A (ja) 複数の購読者にメッセージを提供するためのシステム及び方法
US20130232164A1 (en) Methods and Apparatus for Job State Tracking in Cluster Computing
US20130219397A1 (en) Methods and Apparatus for State Objects in Cluster Computing
CN109992373B (zh) 资源调度方法、信息管理方法和装置及任务部署***
WO2006061262A1 (en) An on demand message based financial network integration middleware
CN111930525A (zh) Gpu资源使用方法、电子设备及计算机可读介质
CN110769018A (zh) 一种消息推送方法及装置
US20110131288A1 (en) Load-Balancing In Replication Engine of Directory Server
KR20160110585A (ko) 사물 인터넷에서 dds 기반 사물 품질의 설정 방법
CN113515361B (zh) 一种面向服务的轻量级异构计算集群***
CN115865874A (zh) 一种会议消息推送方法、会议服务端及电子设备
Garces-Erice Building an enterprise service bus for real-time SOA: A messaging middleware stack
CN104750545A (zh) 一种调度进程的方法及装置
Tusa et al. Microservices and serverless functions—lifecycle, performance, and resource utilisation of edge based real-time IoT analytics
JP2007102332A (ja) 負荷分散システム及び負荷分散方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid