KR102160014B1 - Method for task communication on heterogeneous network and system using thereof - Google Patents

Method for task communication on heterogeneous network and system using thereof Download PDF

Info

Publication number
KR102160014B1
KR102160014B1 KR1020190025263A KR20190025263A KR102160014B1 KR 102160014 B1 KR102160014 B1 KR 102160014B1 KR 1020190025263 A KR1020190025263 A KR 1020190025263A KR 20190025263 A KR20190025263 A KR 20190025263A KR 102160014 B1 KR102160014 B1 KR 102160014B1
Authority
KR
South Korea
Prior art keywords
communication
task
unit
processing unit
connection
Prior art date
Application number
KR1020190025263A
Other languages
Korean (ko)
Other versions
KR20200106704A (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 KR1020190025263A priority Critical patent/KR102160014B1/en
Publication of KR20200106704A publication Critical patent/KR20200106704A/en
Application granted granted Critical
Publication of KR102160014B1 publication Critical patent/KR102160014B1/en

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
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • H04L67/2809
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/562Brokering proxy services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote

Abstract

태스크 간 통신 시스템은 태스크(task) 및 태스크 간 통신을 수행하는 프로세스(process)를 수행하는 프로세싱부를 포함하고, 상기 프로세싱부는, 태스크를 수행하는 하나 이상의 태스크부, 상기 태스크의 통신과 관련된 정보를 포함하는 인터페이스 정보를 생성하는 인터페이스 정보 생성부 및 상기 인터페이스 정보에 따라서 가변적인 가상 통신 모듈을 생성하고 이를 이용하여 통신을 수행하며, 통신을 위한 범용 통신 API를 포함하는 범용 태스크 통신 API부, 통신을 하는 태스크 간의 데이터 송수신을 중개하며 가상 메모리 함수 집합을 이용하여 태스크의 쓰기 동작 및 태스크의 읽기 동작을 수행하는 통신 중개부, 통신 서비스를 시작하기 위한 서비스 실행부 및 송수신하는 태스크들의 통신 방식을 하나의 통신 방식으로 가상화하는 가상 통신부를 포함하는 인터페이스 라이브러리부를 포함한다.The inter-task communication system includes a processing unit that performs a task and a process that performs inter-task communication, and the processing unit includes at least one task unit that performs a task, and information related to communication of the task. An interface information generation unit that generates interface information and a variable virtual communication module according to the interface information and performs communication using the interface information, and a general task communication API unit including a general communication API for communication, A communication intermediary unit that mediates data transmission and reception between tasks and performs a task write operation and a task read operation using a set of virtual memory functions, a service execution unit to start a communication service, and a communication method of the sending and receiving tasks in one communication. It includes an interface library unit including a virtual communication unit virtualized in a manner.

Description

혼합 네트워크상에서의 태스크 간 통신 방법 및 시스템{METHOD FOR TASK COMMUNICATION ON HETEROGENEOUS NETWORK AND SYSTEM USING THEREOF}Communication method and system between tasks in mixed network {METHOD FOR TASK COMMUNICATION ON HETEROGENEOUS NETWORK AND SYSTEM USING THEREOF}

본 발명은 혼합 네트워크상에서의 태스크 간 통신 방법 및 혼합 네트워크상에서의 태스크 간 통신 시스템에 관한 것이다. 보다 상세하게는 고성능 네트워크와 저성능 네트워크가 혼재된 혼합 네트워크상에서 하나 이상의 기기들이 수행하는 복수개의 태스크들이 통신할 수 있는 혼합 네트워크상에서의 태스크 간 통신 방법 및 혼합 네트워크상에서의 태스크 간 통신 시스템에 관한 것이다.The present invention relates to an inter-task communication method on a mixed network and an inter-task communication system on a mixed network. More specifically, it relates to a communication method between tasks on a mixed network in which a plurality of tasks performed by one or more devices can communicate on a mixed network in which a high performance network and a low performance network are mixed, and a communication system between tasks on a mixed network. .

프로그램이란 정보처리장치에서 특정 목적을 달성하기 위하여 데이터의 처리나 계산, 출력 및 입력 장치의 동작 순서를 정하여 차례로 실행할 수 있도록 명령어로 나타낸 것을 의미한다. 프로세스(process)란 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램으로, 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리상에서 실행되는 작업 단위를 지칭한다. 예를 들어, 하나의 프로그램을 여러 번 구동할 경우 여러 개의 프로세스가 메모리 상에서 실행될 수 있다. 태스크란 컴퓨터로 처리되는 일의 최소 단위를 의미하며, 각 프로그램은 태스크를 경유하여 시스템 자원을 할당 할 수 있으며, 이를 러닝(run)할 수 있다. 최근에는 복수 개의 태스크로 구성되는 프로그램이 보편화 됨에 따라서 하나의 프로그램에 속하는 태스크들은 하나의 장치에만 귀속되는 것이 아닌 복수개의 장치에서 동작하고 있으며, 이로 인해 태스크 간의 통신 또한 단순히 하나의 프로세스 안에서 또는 하나의 장치 안에서 수행되지 않고 복수개의 장치에서 이루어 질 수 있다. 또한, 네트워크와 인터넷이 발달함에 따라 여러 개의 시스템이나 장치가 통신하게 되며, 이는 고속 인터넷 통신뿐만 아니라 저속의 무선 센서 네트워크 상에서도 장치 간에 통신하는 시스템도 만들어지기에 태스크 간의 통신은 동종 장치가 아닌 이종의 장치에서도 수행될 수 있다. A program refers to an information processing device expressed as a command so that data can be processed or calculated, output, and an operation sequence of an input device are determined and executed sequentially in order to achieve a specific purpose. A process is a computer program that is continuously executed in a computer, and refers to a unit of work in which the program itself and its state are executed in memory by running the program. For example, if you run a program multiple times, multiple processes can run in memory. A task is the smallest unit of work processed by a computer, and each program can allocate system resources through a task, and can run it. Recently, as programs composed of a plurality of tasks are becoming more common, tasks belonging to one program are operated in a plurality of devices rather than belonging to only one device. As a result, communication between tasks is also simple within one process or It is not performed in the device, but can be done in multiple devices. In addition, as the network and the Internet develop, several systems or devices communicate. This creates a system that communicates between devices not only on high-speed Internet communication, but also on a low-speed wireless sensor network. It can also be done on the device.

이렇게 태스크 간 통신의 구성이 다양화 됨에 따라서 태스크 간의 통신 방법 또한 다양화 되어 이종 및 혼합 네트워크 상에서도 혼잡도가 높지 않고 자원을 효율적으로 사용할 수 있는 태스크 간 통신 방법 및 시스템이 절실히 요구되고 있다.As the composition of communication between tasks is diversified, the communication method between tasks is also diversified, and thus there is an urgent need for a communication method and system between tasks that can use resources efficiently without high congestion even on heterogeneous and mixed networks.

한국공개특허공보 제10-2017-0030578호(2017.03.17)Korean Laid-Open Patent Publication No. 10-2017-0030578 (2017.03.17)

이에 본 발명의 기술적 과제는 이러한 점에서 착안된 것으로, 본 발명의 목적은 고성능 네트워크와 저성능 네트워크가 혼재된 환경에서 동작하는 기기들의 통신 구성을 편리하게 하는 혼합 네트워크 상에서의 태스크 간 통신 시스템을 제공하는 것이다.Accordingly, the technical problem of the present invention was conceived in this respect, and an object of the present invention is to provide a communication system between tasks on a mixed network that facilitates communication configuration of devices operating in an environment where a high-performance network and a low-performance network are mixed. Is to do.

또한 본 발명의 다른 목적은 고성능 네트워크와 저성능 네트워크가 혼재된 환경에서 동작하는 기기들의 통신 구성을 편리하게 하는 혼합 네트워크상에서의 태스크 간 통신 방법을 제공하는 것이다.Another object of the present invention is to provide a communication method between tasks on a mixed network that facilitates communication configuration of devices operating in an environment where a high-performance network and a low-performance network are mixed.

상기한 본 발명의 목적을 실현하기 위한 태스크 간 통신 시스템은 태스크(task) 및 태스크 간 통신을 수행하는 프로세스(process)를 수행하는 프로세싱부를 포함하고, 상기 프로세싱부는, 태스크를 수행하는 하나 이상의 태스크부, 상기 태스크의 통신과 관련된 정보를 포함하는 인터페이스 정보를 생성하는 인터페이스 정보 생성부 및 상기 인터페이스 정보에 따라서 가변적인 가상 통신 모듈을 생성하고 이를 이용하여 통신을 수행하며, 통신을 위한 범용 통신 API를 포함하는 범용 태스크 통신 API부, 통신을 하는 태스크 간의 데이터 송수신을 중개하며 가상 메모리 함수 집합을 이용하여 태스크의 쓰기 동작 및 태스크의 읽기 동작을 수행하는 통신 중개부, 통신 서비스를 시작하기 위한 서비스 실행부 및 송수신하는 태스크들의 통신 방식을 하나의 통신 방식으로 가상화하는 가상 통신부를 포함하는 인터페이스 라이브러리부를 포함한다.The inter-task communication system for realizing the object of the present invention includes a processing unit for performing a task and a process for performing inter-task communication, and the processing unit includes at least one task unit for performing a task. , An interface information generation unit that generates interface information including information related to communication of the task, and a variable virtual communication module according to the interface information, and performs communication using the interface information, and includes a universal communication API for communication. A general purpose task communication API unit that mediates data transmission/reception between communicating tasks, and a communication mediation unit that performs a task write operation and a task read operation using a set of virtual memory functions, a service execution unit to start a communication service, and It includes an interface library unit including a virtual communication unit that virtualizes a communication method of tasks to be transmitted and received in one communication method.

본 발명의 일 실시예에 있어서, 상기 인터페이스 정보 생성부는 태스크 매핑을 이용하여 상기 프로세스 별로 인터페이스 정보를 생성할 수 있다.In an embodiment of the present invention, the interface information generation unit may generate interface information for each process by using task mapping.

본 발명의 일 실시예에 있어서, 상기 인터페이스 정보는, 채널의 식별자, 데이터를 송신하는 저자(Writer) 태스크의 정보, 데이터를 수신하는 독자(Reader) 태스크의 정보 및 해당 채널이 상기 프로세스 내에서 사용하게 될 가상 메모리 함수 집합에 관한 정보를 포함하는 채널 정보를 포함하고, 원격 통신인 경우 통신별로 사용하는 통신 종류, 통신 역할 분류, 연결 방식, 통신 세부 정보 및 해당 통신의 가상 통신부의 API 집합 정보를 포함하며 채널별로 원격 통신을 사용하는 경우 사용할 원격 통신에 관한 정보를 더 포함하는 통신 정보를 포함할 수 있다.In one embodiment of the present invention, the interface information includes an identifier of a channel, information of a writer task that transmits data, information of a reader task that receives data, and the corresponding channel is used in the process. It includes channel information including information on the set of virtual memory functions to be performed, and in the case of remote communication, the communication type, communication role classification, connection method, communication detail information, and API set information of the virtual communication unit of the communication are displayed. It includes, and may include communication information that further includes information on remote communication to be used when remote communication is used for each channel.

제1항에 본 발명의 일 실시예에 있어서, 상기 범용 통신 API는 통신 채널의 식별자 값, 통신 송수신에 사용될 데이터의 버퍼 정보 및 통신 송수신에 사용될 데이터의 길이 정보를 포함할 수 있다.According to one embodiment of the present invention, the universal communication API may include an identifier value of a communication channel, buffer information of data to be used for communication transmission and reception, and length information of data to be used for communication transmission and reception.

본 발명의 일 실시예에 있어서, 상기 통신 중개부는, 서로 상이한 프로세스에 속한 태스크들 간의 데이터 송수신을 중개하는 원격 통신부 및 통신을 하는 태스크에서 메모리를 참조할 경우에 통신을 위한 데이터 복사를 수행하는 가상 메모리 접근부를 포함할 수 있다.In one embodiment of the present invention, the communication intermediary unit includes a remote communication unit that mediates data transmission/reception between tasks belonging to different processes, and a virtual data copy for communication when a memory is referred to in a communication task. It may include a memory access unit.

본 발명의 일 실시예에 있어서, 상기 가상 메모리 함수 집합은, 동일한 프로세싱부에 속한 태스크들 간의 통신을 위한 제1 가상 메모리 함수 집합, 동일한 종류의 서로 다른 프로세싱부에 속한 태스크들 간의 통신을 위한 제2 가상 메모리 함수 집합 및 서로 상이한 종류의 서로 다른 프로세싱부에 속한 태스크들 간의 통신을 위한 제3 가상 메모리 함수 집합을 포함할 수 있다.In an embodiment of the present invention, the virtual memory function set is a first set of virtual memory functions for communication between tasks belonging to the same processing unit, and a first set of virtual memory functions for communication between tasks belonging to different processing units of the same type. It may include a second set of virtual memory functions and a third set of virtual memory functions for communication between tasks belonging to different processing units of different types.

본 발명의 일 실시예에 있어서, 상기 원격 통신부는, 원격 통신시에 데이터의 송수신을 수행하는 송수신부, 상대 원격 프로세스와의 초기 통신 연결을 수행하는 연결부, 저자 버퍼를 포함하는 저자(Writer) 태스크로 수신되는 데이터를 처리하는 수신 처리부 및 개별 연결일 경우 송수신하는 태스크들의 통신 방식을 하나의 통신 방식으로 가상화하는 가상 통신부를 포함할 수 있다.In an embodiment of the present invention, the remote communication unit includes a transmission/reception unit that transmits and receives data during remote communication, a connection unit that performs initial communication connection with a counterpart remote process, and a writer task including an author buffer. In the case of an individual connection, a reception processing unit that processes data received by the user may include a virtual communication unit that virtualizes a communication method of tasks to be transmitted/received as a single communication method.

본 발명의 일 실시예에 있어서, 상기 송수신부는, 하나의 연결로 복수개의 태스크 간의 통신을 모두 공유하는 통신 집합 연결 방법으로 데이터를 송수신하는 통신 집합 송수신부 및 각 태스크 간에 개별적으로 연결하는 개별 연결 방법으로 데이터를 송수신하는 직접 송수신부를 포함할 수 있다.In an embodiment of the present invention, the transmission/reception unit includes a communication set transmission/reception unit for transmitting and receiving data in a communication set connection method for sharing all communication between a plurality of tasks through a single connection, and an individual connection method for individually connecting each task. It may include a direct transmission and reception unit for transmitting and receiving data.

본 발명의 일 실시예에 있어서, 상기 가상 통신부는 상기 태스크 또는 상기 프로세스의 통신 방식에 따라서 통신 생성(create), 통신 소멸(destroy), 연결(connect), 연결 해제(disconnect), 수락(accept), 송신(send), 수신(receive) 및 연결 대기(listen) 함수로부터 상기 통신 방식에 필요한 가상 함수를 생성하고, 이로부터 각 태스크 간의 연결 별 또는 같은 방식으로 통신하는 태스크들의 집합 연결별로 가상 소켓을 생성할 수 있다. In one embodiment of the present invention, the virtual communication unit creates, destroys, connects, disconnects, and accepts communication according to the communication method of the task or the process. , Create a virtual function required for the communication method from the send, receive, and wait for connection functions, and create a virtual socket for each connection between each task or a set of tasks communicating in the same manner. Can be generated.

본 발명의 일 실시예에 있어서, 상기 서비스 실행부는, 집합 연결로 통신을 하는 경우 통신을 직접 연결하는 집합 연결 처리부 및 개별 연결로 통신을 하는 경우 개별 연결을 위한 서버를 시작하고 원격 프로세스의 개별 연결 요청을 처리하는 개별 연결 처리부를 포함할 수 있다.In an embodiment of the present invention, the service execution unit starts a server for individual connection when communicating through a collective connection and a collective connection processor that directly connects the communication when communicating through a collective connection, and individual connection of the remote process. It may include a separate connection processor to process the request.

본 발명의 일 실시예에 있어서, 상기 프로세싱부는 송수신하는 태스크들의 통신 방식을 하나의 통신 방식으로 가상화하며 통신 서비스의 집합 연결을 수행하거나 다수의 개별 연결을 동시에 수행시 송신 데이터를 원격 프로세스로 송신하고, 수신한 데이터를 접합한 채널에 전송하는 통신 집합부를 포함할 수 있다.In one embodiment of the present invention, the processing unit virtualizes the communication method of the tasks to be transmitted/received as one communication method, and transmits transmission data to a remote process when performing collective connection of communication services or performing multiple individual connections simultaneously. , It may include a communication aggregation unit for transmitting the received data to the junction channel.

상기한 본 발명의 목적을 실현하기 위한 태스크 간 통신 방법은 프로세싱부가 태스크 간 통신을 수행하는 프로세스를 수행하는 단계를 포함하고, 상기 프로세스를 수행하는 단계는, 인터페이스 정보 생성부가 태스크의 통신과 관련된 정보를 포함하는 인터페이스 정보를 생성하는 단계 및 인터페이스 라이브러리부가 상기 인터페이스 정보에 따라서 가변적인 가상 통신 모듈을 생성하고 통신을 수행하는 단계를 포함하고, 상기 통신을 수행하는 단계는, 서비스 실행부가 통신 서비스를 시작하기 위한 단계, 태스크부가 범용 태스크 통신 API를 이용하여 채널에 데이터 쓰기 요청을 하는 단계 및 통신 중개부가 가상 메모리 함수 집합을 이용하여 채널의 버퍼로 쓰기 요청한 데이터를 복사하는 단계를 포함하는 태스크의 쓰기 동작을 수행하는 단계 및 태스크부가 범용 태스크 통신 API를 이용하여 데이터 읽기 요청을 하는 단계 및 통신 중개부가 가상 메모리 함수 집합을 이용하여 태스크의 버퍼로 읽기 요청한 데이터를 복사하는 단계를 포함하는 태스크의 읽기 동작을 수행하는 단계를 포함한다.The inter-task communication method for realizing the object of the present invention includes the step of performing a process by the processing unit to perform inter-task communication, and the step of performing the process includes: the interface information generation unit, information related to the communication of the task. Generating interface information including, and the interface library unit generating a variable virtual communication module according to the interface information and performing communication, the step of performing the communication, the service execution unit starts a communication service A write operation of a task, including: the task unit making a request to write data to the channel using a general-purpose task communication API, and the communication intermediary unit copying the data requested to be written to the channel buffer using a set of virtual memory functions A read operation of a task including performing a data read request by the task unit using a general-purpose task communication API, and copying the read-requested data to a buffer of the task using a virtual memory function set by the communication intermediary unit. It includes performing steps.

본 발명의 일 실시예에 있어서, 상기 인터페이스 정보를 생성하는 단계에서는 태스크 매핑을 이용하여 상기 프로세스 별로 인터페이스 정보를 생성할 수 있다.In an embodiment of the present invention, in the step of generating the interface information, interface information for each process may be generated using task mapping.

본 발명의 일 실시예에 있어서, 상기 인터페이스 정보는, 채널의 식별자, 데이터를 송신하는 저자(Writer) 태스크의 정보, 데이터를 수신하는 독자(Reader) 태스크의 정보 및 해당 채널이 상기 프로세스 내에서 사용하게 될 가상 메모리 함수 집합에 관한 정보를 포함하는 채널 정보를 포함하고, 원격 통신인 경우 통신별로 사용하는 통신 종류, 통신 역할 분류, 연결 방식, 통신 세부 정보 및 해당 통신의 가상 통신부의 API 집합 정보를 포함하며 채널별로 원격 통신을 사용하는 경우 사용할 원격 통신에 관한 정보를 더 포함하는 통신 정보를 포함할 수 있다.In one embodiment of the present invention, the interface information includes an identifier of a channel, information of a writer task that transmits data, information of a reader task that receives data, and the corresponding channel is used in the process. It includes channel information including information on the set of virtual memory functions to be performed, and in the case of remote communication, the communication type, communication role classification, connection method, communication detail information, and API set information of the virtual communication unit of the communication are displayed. It includes, and may include communication information that further includes information on remote communication to be used when remote communication is used for each channel.

본 발명의 일 실시예에 있어서, 상기 통신을 수행하는 단계는 통신 집합부가 송수신하는 태스크들의 통신 방식을 하나의 통신 방식으로 가상화하여 송신 데이터를 원격 프로세스로 송신하고, 수신한 데이터를 적합한 채널에 전송하는 단계를 포함할 수 있다.In one embodiment of the present invention, in the performing of the communication, the communication method of the tasks transmitted and received by the communication aggregation unit is virtualized into one communication method, and the transmission data is transmitted to a remote process, and the received data is transmitted to an appropriate channel. It may include the step of.

본 발명의 일 실시예에 있어서, 상기 통신 서비스를 시작하기 위한 단계는 상기 태스크 간 통신이 집합 연결이며 서비스 사용자의 역할인 경우, 서비스 실행부가 통신 정보를 생성(create)하는 단계, 서비스 실행부가 연결 함수로 원격 서비스 제공자와 연결하는 단계 및 서비스 실행부가 가상 소켓을 생성하는 단계 및 서비스 실행부가 상기 가상 소켓을 통신 집합부에 전송하는 단계를 더 포함할 수 있다.In one embodiment of the present invention, in the step of starting the communication service, when the communication between tasks is a collective connection and the role of a service user, the service execution unit creates communication information, and the service execution unit connects The function may further include connecting to a remote service provider, generating a virtual socket by the service execution unit, and transmitting the virtual socket to the communication aggregation unit by the service execution unit.

본 발명의 일 실시예에 있어서, 상기 통신 서비스를 시작하기 위한 단계는 상기 태스크 간 통신이 서비스 제공자인 경우, 서비스 실행부가 서비스 제공자의 통신 정보를 생성(create)하는 단계, 서비스 실행부가 연결 대기(listen)하는 단계 및 서비스 실행부가 통신이 집합 연결인지 판단하는 단계를 포함하고, 상기 집합 연결인지 판단하는 단계에서 통신이 집합 연결로 판단된 경우, 서비스 실행부가 집합 연결을 수락(accept)하는 단계 및 서비스 실행부가 집합 연결이 수락(accept)된 경우 가상 소켓을 생성하고 이를 통신 집합부에 전송하는 단계를 포함하고, 상기 집합 연결인지 판단하는 단계에서 통신이 집합 연결이 아닌 것으로 판단된 경우,서비스 실행부가 연결을 수락(accept)하는 단계, 서비스 실행부가 연결이 수락(accept)된 경우 가상 소켓을 생성하고 이를 해당하는 채널의 통신 중개부에 전송하는 단계 및 서비스 실행부가 모든 채널에 소켓이 전달될 때까지 상기 연결을 수락(accept)하는 단계 및 상기 채널의 통신 중개부에 전송하는 단계를 반복하는 단계를 포함할 수 있다.In one embodiment of the present invention, the step of starting the communication service includes: when the communication between tasks is a service provider, the service execution unit creates communication information of the service provider, and the service execution unit waits for connection ( listen) and the service execution unit determining whether the communication is an aggregate connection, and when the communication is determined to be an aggregate connection in the determining whether the communication is an aggregate connection, the service execution unit accepts the aggregate connection, and When the service execution unit generates a virtual socket when the collective connection is accepted and transmits it to the communication aggregation unit, and when it is determined that communication is not a collective connection in the step of determining whether the connection is the collective connection, service execution The step of accepting an additional connection, the step of creating a virtual socket when the service execution unit accepts the connection and transmitting it to the communication intermediary of the corresponding channel, and when the service execution unit delivers the socket to all channels It may include repeating the step of accepting the connection until and the step of transmitting to the communication intermediary unit of the channel.

본 발명의 일 실시예에 있어서, 상기 태스크 간 통신을 하는 프로세싱부 및 태스크는 복수개이며 상기 태스크들은, 제1 프로세싱부에 위치하는 제1 태스크 및 원격 프로세싱부에 위치하는 제2 태스크를 포함하고, 상기 태스크 간 통신이 집합 연결인 경우 상기 태스크의 읽기 동작을 수행하는 단계는, 제1 태스크가 범용 태스크 통신 API를 이용하여 제1 프로세싱부의 송수신부에 데이터 읽기 요청을 전송하는 단계, 제1 프로세싱부의 송수신부가 상기 읽기 요청을 수신하여 제1 프로세싱부의 통신 집합부로 전송하는 단계, 제1 프로세싱부의 통신 집합부가 원격 프로세싱부의 통신 집합부로 읽기 요청을 전송하는 단계, 원격 프로세싱부의 통신 집합부가 상기 읽기 요청을 수신하여 해당하는 채널의 원격 프로세싱부의 수신 처리부에 전송하는 단계, 해당 채널의 원격 프로세싱부의 가상 메모리 접근부가 읽기 요청한 데이터를 임시 버퍼로 복사하는 단계, 원격 프로세싱부의 송수신부가 상기 임시 버퍼로부터 원격 프로세싱부의 통신 집합부에 상기 읽기 요청한 데이터를 전송하는 단계, 원격 프로세싱부의 통신 집합부가 제1 프로세싱부의 통신 집합부에 상기 읽기 요청한 데이터를 송신하는 단계, 제1 프로세싱부의 통신 집합부가 상기 읽기 요청한 데이터를 수신하여 해당하는 채널의 제1 프로세싱부의 통신 집합 송수신부로 전송하는 단계, 수신한 상기 읽기 요청한 데이터를 제1 프로세싱부의 가상 메모리 접근부가 제1 태스크의 버퍼로 복사하는 단계일 수 있다.In an embodiment of the present invention, a plurality of processing units and tasks performing inter-task communication are provided, and the tasks include a first task located in a first processing unit and a second task located in a remote processing unit, When the inter-task communication is a collective connection, the performing of the read operation of the task includes: transmitting a data read request to the transmitting/receiving unit of the first processing unit by the first task using a universal task communication API, and the first processing unit Transmitting the read request by the transceiver unit to the communication aggregation unit of the first processing unit, transmitting the read request to the communication aggregation unit of the remote processing unit by the communication aggregation unit of the first processing unit, and the communication aggregation unit of the remote processing unit to receive the read request And transmitting the data to the receiving processing unit of the remote processing unit of the corresponding channel, copying the data requested to be read by the virtual memory access unit of the remote processing unit of the corresponding channel to a temporary buffer, and the communication set of the remote processing unit from the temporary buffer Transmitting the read-requested data to a unit, transmitting the read-requested data by a communication aggregation unit of a remote processing unit to a communication aggregation unit of a first processing unit, and receiving the read-requested data by a communication aggregation unit of a first processing unit It may be a step of transmitting to a communication set transmission/reception unit of a first processing unit of a channel, and a step of copying the received read-requested data to a buffer of the first task by a virtual memory access unit of the first processing unit.

본 발명의 일 실시예에 있어서, 동일한 프로세스에 속한 태스크들 간의 통신인 경우, 상기 데이터 읽기 요청을 하는 단계는 태스크가 범용 태스크 통신 API를 이용하여 채널에 데이터 읽기 요청을 하는 단계이고, 상기 태스크의 버퍼로 데이터를 복사하는 단계는 가상 메모리 접근부가 가상 메모리 함수 집합을 이용하여 읽기 요청한 데이터를 채널에서 태스크의 버퍼로 복사하는 단계일 수 있다. In one embodiment of the present invention, in the case of communication between tasks belonging to the same process, the step of requesting to read data is a step of requesting a data read from a channel by the task using a general task communication API. The step of copying data to the buffer may be a step in which the virtual memory access unit copies the read-requested data from the channel to the buffer of the task using the virtual memory function set.

본 발명의 일 실시예에 있어서, 상기 태스크 간 통신을 하는 프로세싱부 및 태스크는 복수개이며 상기 태스크들은, 제1 프로세싱부에 위치하는 제1 태스크 및 원격 프로세싱부에 위치하는 제2 태스크를 포함하고, 상기 태스크 간 통신이 개별 연결인 경우 상기 태스크의 읽기 동작을 수행하는 단계는, 제1 태스크가 범용 태스크 통신 API를 이용하여 제1 프로세싱부의 송수신부에 데이터 읽기 요청을 송신하는 단계, 제1 프로세싱부의 송수신부가 원격 프로세싱부의 수신 처리부로 읽기 요청을 전송하는 단계, 원격 프로세싱부의 수신 처리부가 상기 읽기 요청을 수신하는 단계, 원격 프로세싱부의 가상 메모리 접근부가 채널 데이터를 임시 버퍼로 복사하는 단계, 원격 프로세싱부의 송수신부가 읽기 요청한 데이터를 제1 프로세싱부의 송수신부에 전송하는 단계, 제1 프로세싱부의 송수신부가 상기 읽기 요청한 데이터를 수신하는 단계 및 제1 프로세싱부의 가상 메모리 접근부가 상기 수신한 읽기 요청한 데이터를 제1 태스크의 버퍼로 복사하는 단계일 수 있다. In an embodiment of the present invention, a plurality of processing units and tasks performing inter-task communication are provided, and the tasks include a first task located in a first processing unit and a second task located in a remote processing unit, When the inter-task communication is an individual connection, the performing of the task read operation may include: transmitting a data read request to the transmitting/receiving unit of the first processing unit by the first task using a general-purpose task communication API, and the first processing unit Transmitting a read request by the transmitting/receiving unit to the receiving processing unit of the remote processing unit, receiving the read request by the receiving processing unit of the remote processing unit, copying the channel data to the temporary buffer by the virtual memory access unit of the remote processing unit, and transmitting and receiving the remote processing unit Transmitting the additional read-requested data to the transmitting and receiving unit of the first processing unit, receiving the read-requested data by the transmitting and receiving unit of the first processing unit, and the virtual memory access unit of the first processing unit to transfer the received read-requested data to the first task. It may be a step of copying to a buffer.

본 발명의 실시예들에 따르면, 혼합 네트워크상에서의 태스크 간 통신 방법 및 혼합 네트워크상에서의 태스크 간 통신 시스템은 태스크부, 인터페이스 정보 생성부 및 인터페이스 라이브러리부를 포함한다. 따라서, 태스크가 어느 기기에 있는지와 기기 간의 통신 방법을 결정함에 따라서 필요한 인터페이스 라이브러리 코드를 자동으로 연결할 수 있다.According to embodiments of the present invention, a communication method between tasks on a hybrid network and a system for communication between tasks on a hybrid network include a task unit, an interface information generation unit, and an interface library unit. Therefore, it is possible to automatically connect the necessary interface library code according to which device the task is on and the communication method between devices is determined.

또한, 인터페이스 라이브러리부는 새로운 통신 방법이 추가되어 기기 간의 통신이 바뀌더라도 인터페이스 라이브러리를 가상화하여 새로운 통신 방식을 확장할 수 있다.In addition, even if communication between devices is changed due to the addition of a new communication method, the interface library unit can expand a new communication method by virtualizing the interface library.

또한, 집합 연결 및 개별 연결을 포함하여 고성능 네트워크와 저성능 네트워크가 혼재된 혼합 네트워크상에서도 하나 이상의 기기들이 수행하는 복수개의 태스크들을 통신하도록 할 수 있다.In addition, it is possible to communicate a plurality of tasks performed by one or more devices on a mixed network in which a high-performance network and a low-performance network are mixed, including collective connection and individual connection.

도 1은 본 발명의 일 실시예에 따른 태스크 간 통신 시스템의 프로세싱부를 나타내는 구성도이다.
도 2는 본 발명의 일 실시예에 따른 태스크 간 통신 시스템의 인터페이스 라이브러리부를 나타내는 구성도이다.
도 3은 본 발명의 일 실시예에 따른 태스크 간 통신 시스템의 통신 중개부를 나타내는 구성도이다.
도 4는 본 발명의 일 실시예에 따른 태스크 간 통신 시스템의 원격 통신부를 나타내는 구성도이다.
도 5는 본 발명의 일 실시예에 따른 태스크 간 통신 시스템의 송수신부를 나타내는 구성도이다.
도 6은 본 발명의 일 실시예에 따른 태스크 간 통신 시스템의 서비스 실행부를 나타내는 구성도이다.
도 7은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 프로세스를 수행하는 단계를 나타내는 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 인터페이스 정보를 생성하는 단계를 나타내는 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 통신을 수행하는 단계를 나타내는 흐름도이다.
도 10은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 태스크의 쓰기 동작을 수행하는 단계를 나타내는 흐름도이다.
도 11은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 태스크의 읽기 동작을 수행하는 단계를 나타내는 흐름도이다.
도 12는 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 태스크의 읽기 동작을 수행하는 단계를 나타내는 흐름도이다.
도 13은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 태스크의 읽기 동작을 수행하는 단계를 나타내는 흐름도이다.
도 14는 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 통신을 수행하는 단계를 나타내는 흐름도이다.
도 15는 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 통신 서비스를 시작하기 위한 단계를 나타내는 흐름도이다.
도 16은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 통신 서비스를 시작하기 위한 단계를 나타내는 흐름도이다.
도 17은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 태스크의 읽기 동작을 수행하는 단계를 나타내는 흐름도이다.
도 18은 본 발명의 일 실시예에 따른 태스크 간 통신 방법 및 시스템의 프로세스의 구현예를 나타내는 도면이다.
도 19는 본 발명의 일 실시예에 따른 태스크 간 통신 방법 및 시스템의 인터페이스 정보의 구현예를 나타내는 도면이다.
도 20은 본 발명의 일 실시예에 따른 태스크 간 통신 방법 및 시스템의 인터페이스 정보의 구현예를 나타내는 도면이다.
도 21은 본 발명의 일 실시예에 따른 태스크 간 통신 방법 및 시스템의 범용 태스크 통신 API의 구현예를 나타내는 도면이다.
도 22는 본 발명의 일 실시예에 따른 태스크 간 통신 방법 및 시스템의 가상 함수의 구현예를 나타내는 도면이다.
도 23은 본 발명의 일 실시예에 따른 태스크 간 통신 방법 및 시스템의 가상 메모리 함수 집합의 구현예를 나타내는 도면이다.
도 24는 본 발명의 일 실시예에 따른 태스크 간 통신 방법 및 시스템의 개별 연결 및 집합 연결의 구현예를 나타내는 도면이다.
도 25는 본 발명의 일 실시예에 따른 태스크 간 통신 방법 및 시스템의 통신 초기화의 구현예를 나타내는 도면이다.
도 26은 본 발명의 일 실시예에 따른 태스크 간 통신 방법 및 시스템의 데이터 읽기 요청을 처리하는 순서의 구현예를 나타내는 도면이다.
도 27은 본 발명의 일 실시예에 따른 태스크 간 통신 방법 및 시스템의 데이터 읽기 요청을 처리하는 순서의 구현예를 나타내는 도면이다.
1 is a block diagram illustrating a processing unit of an inter-task communication system according to an embodiment of the present invention.
2 is a block diagram illustrating an interface library unit of a communication system between tasks according to an embodiment of the present invention.
3 is a block diagram illustrating a communication intermediary of a communication system between tasks according to an embodiment of the present invention.
4 is a block diagram illustrating a remote communication unit of a communication system between tasks according to an embodiment of the present invention.
5 is a block diagram illustrating a transmission/reception unit of a communication system between tasks according to an embodiment of the present invention.
6 is a block diagram illustrating a service execution unit of a communication system between tasks according to an embodiment of the present invention.
7 is a flowchart illustrating steps of performing a process of a method for communication between tasks according to an embodiment of the present invention.
8 is a flowchart illustrating a step of generating interface information of a method for communication between tasks according to an embodiment of the present invention.
9 is a flowchart illustrating a step of performing communication in a communication method between tasks according to an embodiment of the present invention.
10 is a flowchart illustrating an operation of performing a write operation of a task in an inter-task communication method according to an embodiment of the present invention.
11 is a flowchart illustrating a step of performing a task read operation in a method of communication between tasks according to an embodiment of the present invention.
12 is a flowchart illustrating a step of performing a task read operation in a method for communication between tasks according to an embodiment of the present invention.
13 is a flowchart illustrating a step of performing a task read operation in a method for communication between tasks according to an embodiment of the present invention.
14 is a flowchart illustrating a step of performing communication in a communication method between tasks according to an embodiment of the present invention.
15 is a flowchart illustrating steps for starting a communication service in a method for communication between tasks according to an embodiment of the present invention.
16 is a flowchart illustrating steps for starting a communication service in a method for communication between tasks according to an embodiment of the present invention.
17 is a flowchart illustrating a step of performing a task read operation in a method for communication between tasks according to an embodiment of the present invention.
18 is a diagram illustrating an implementation example of a process of a method and a system for communication between tasks according to an embodiment of the present invention.
19 is a diagram illustrating an implementation example of interface information of a system and a communication method between tasks according to an embodiment of the present invention.
20 is a diagram illustrating an implementation example of interface information of a system and a communication method between tasks according to an embodiment of the present invention.
21 is a diagram illustrating an implementation example of a general-purpose task communication API of a method and system for inter-task communication according to an embodiment of the present invention.
22 is a diagram illustrating an implementation example of a virtual function of a system and a communication method between tasks according to an embodiment of the present invention.
23 is a diagram illustrating an implementation example of a virtual memory function set of a system and a communication method between tasks according to an embodiment of the present invention.
24 is a diagram illustrating an implementation example of individual connection and collective connection of a communication method and system between tasks according to an embodiment of the present invention.
25 is a diagram illustrating an implementation example of communication initialization of a system and a communication method between tasks according to an embodiment of the present invention.
26 is a diagram illustrating an implementation example of an inter-task communication method and an order of processing a data read request from a system according to an embodiment of the present invention.
27 is a diagram illustrating an implementation example of an inter-task communication method and an order of processing a data read request from a system according to an embodiment of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 실시예들을 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다.The present invention will be described in detail in the text, since various modifications can be made and various forms can be obtained. However, this is not intended to limit the present invention to a specific form of disclosure, it is to be understood as including all changes, equivalents, or substitutes included in the spirit and scope of the present invention. In describing each drawing, similar reference numerals have been used for similar elements. Terms such as first and second may be used to describe various components, but the components should not be limited by the terms.

상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.These terms are used only for the purpose of distinguishing one component from another component. The terms used in the present application are only used to describe specific embodiments, and are not intended to limit the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise.

본 출원에서, "포함하다" 또는 "이루어진다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.In the present application, terms such as "comprise" or "consist of" are intended to designate the presence of features, numbers, steps, actions, elements, parts, or a combination thereof described in the specification, but one or more other features. It is to be understood that the presence or addition of elements or numbers, steps, actions, components, parts, or combinations thereof, does not preclude in advance the possibility of being added.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which the present invention belongs. Terms as defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning in the context of the related technology, and should not be interpreted as an ideal or excessively formal meaning unless explicitly defined in this application. Does not.

이하, 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.Hereinafter, preferred embodiments of the present invention will be described in more detail with reference to the drawings.

도 1은 본 발명의 일 실시예에 따른 태스크 간 통신 시스템의 프로세싱부를 나타내는 구성도이다. 도 2는 본 발명의 일 실시예에 따른 태스크 간 통신 시스템의 인터페이스 라이브러리부를 나타내는 구성도이다. 도 3은 본 발명의 일 실시예에 따른 태스크 간 통신 시스템의 통신 중개부를 나타내는 구성도이다. 도 4는 본 발명의 일 실시예에 따른 태스크 간 통신 시스템의 원격 통신부를 나타내는 구성도이다. 도 5는 본 발명의 일 실시예에 따른 태스크 간 통신 시스템의 송수신부를 나타내는 구성도이다. 도 6은 본 발명의 일 실시예에 따른 태스크 간 통신 시스템의 서비스 실행부를 나타내는 구성도이다.1 is a block diagram illustrating a processing unit of an inter-task communication system according to an embodiment of the present invention. 2 is a block diagram illustrating an interface library unit of a communication system between tasks according to an embodiment of the present invention. 3 is a block diagram illustrating a communication intermediary of a communication system between tasks according to an embodiment of the present invention. 4 is a block diagram illustrating a remote communication unit of a communication system between tasks according to an embodiment of the present invention. 5 is a block diagram illustrating a transmission/reception unit of a communication system between tasks according to an embodiment of the present invention. 6 is a block diagram illustrating a service execution unit of a communication system between tasks according to an embodiment of the present invention.

도 1 내지 도 6를 참조하면, 본 발명의 일 실시예에 따른 태스크 간 통신 시스템은 프로세싱부(10)를 포함할 수 있다.1 to 6, the inter-task communication system according to an embodiment of the present invention may include a processing unit 10.

상기 프로세싱부(10)는 태스크(task) 및 태스크 간 통신을 수행하는 프로세스(process)를 수행할 수 있다. 프로세스(process)란 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램으로, 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리상에서 실행되는 작업 단위를 지칭할 수 있다. 상기 프로세스는 복수개일 수 있다. 상기 프로세싱부(10)는 복수개일 수 있다. 예를 들면, 상기 프로세싱부(10)는 멀티 코어 프로세서, 같은 종류의 복수개의 프로세서 또는 다른 종류의 복수개의 프로세서일 수 있다. 예를 들면, 상기 프로세싱부(10)는 프로세서, 마이크로프로세서(MPU: Microprocessing Unit), 중앙처리장치(CPU: Central Processing Unit), 그래픽처리장치(GPU: Graphic Processing Unit), 시스템온칩(SoC: System On Chip), MCU(Micro Control Unit) 또는 센서용 저전력 프로세싱 유닛일 수 있으나 본 발명은 그 종류를 한정하는 것은 아니며 프로세스를 실행할 수 있는 다양한 종류의 프로세싱부(10)가 사용될 수 있다.The processing unit 10 may perform a task and a process of performing communication between tasks. A process is a computer program continuously executed in a computer, and may refer to a unit of work in which a program itself and a state of a program are executed in a memory by driving a program. There may be a plurality of the processes. There may be a plurality of processing units 10. For example, the processing unit 10 may be a multi-core processor, a plurality of processors of the same type, or a plurality of processors of different types. For example, the processing unit 10 includes a processor, a microprocessor (MPU: Microprocessing Unit), a central processing unit (CPU: Central Processing Unit), a graphic processing unit (GPU: Graphic Processing Unit), and a system-on-chip (SoC: System). On Chip), a microcontrol unit (MCU), or a low-power processing unit for a sensor, but the present invention does not limit the type, and various types of processing units 10 capable of executing processes may be used.

상기 프로세스는 태스크를 포함할 수 있다. 상기 태스크 간 통신은 상기 프로세싱부(10)에 속한 복수개의 태스크 간의 통신일 수 있다. 또는, 상기 태스크 간 통신은 동일 종류의 상이한 프로세싱부(10)에 속한 태스크 간의 통신일 수 있다. 또는, 상기 태스크 간 통신은 서로 다른 종류의 상이한 프로세싱부(10)에 속한 태스크 간의 통신일 수 있다. 상기 태스크는 복수개일 수 있다. 상기 프로세스는 복수개일 수 있다. 예를 들면, 각 프로세스는 복수개의 태스크, 각 태스크의 인터페이스 정보 및 각 태스크의 인터페이스 라이브러리를 포함할 수 있다.The process may include a task. The inter-task communication may be communication between a plurality of tasks belonging to the processing unit 10. Alternatively, the communication between tasks may be communication between tasks belonging to different processing units 10 of the same type. Alternatively, the inter-task communication may be communication between different types of tasks belonging to different processing units 10. There may be a plurality of the tasks. There may be a plurality of the processes. For example, each process may include a plurality of tasks, interface information of each task, and interface library of each task.

예를 들면, 도 18과 같이 기기 별로 프로세스는 하나 혹은 여러 개 존재할 수 있으며, 프로세스 내에서는 여러 개의 태스크가 존재할 수 있으며, 태스크 간의 통신은 프로세스 내, 같은 기기 내의 프로세스 간, 서로 다른 기기의 프로세스 간에 이루어질 수 있고, 태스크 간의 통신은 단방향 화살표 및 선으로 표시하며 이 선은 채널을 의미할 수 있고, 다른 기기 간의 통신은 다양한 통신 방식을 이용할 수 있으며, 고성능의 TCP/IP 기반 네트워크와 저성능 저전력 센서 네트워크가 혼합된 네트워크 환경에서 사용될 수 있으며, 동일한 형태의 네트워크 뿐 아니라 성능이나 표준이 다르고 제한된 환경에서 동작하는 네트워크도 포함할 수 있다. 또한 태스크 수행에 참여하는 기기의 성능 또한 다양할 수 있으며, 데스크톱이나 서버 수준의 성능을 보이는 기기부터 이동식정보처리장치, 스마트폰이나 내장형 운영체제가 동작하는 저전력 시스템도 포함될 수 있다.For example, as shown in FIG. 18, one or several processes may exist for each device, and there may be several tasks within a process, and communication between tasks is performed within a process, between processes within the same device, and between processes of different devices. Communication between tasks is indicated by one-way arrows and lines, and this line can mean a channel, communication between different devices can use various communication methods, high-performance TCP/IP-based networks and low-performance low-power sensors It can be used in a network environment in which networks are mixed, and not only networks of the same type, but also networks that have different performance or standards and operate in a limited environment may be included. In addition, the performance of devices participating in task performance may also vary, and from devices that exhibit desktop or server-level performance to portable information processing devices, smartphones, and low-power systems running an embedded operating system may also be included.

상기 프로세싱부(10)는 태스크부(100), 인터페이스 정보 생성부(200), 인터페이스 라이브러리부(300) 및 가상 통신부(400)를 포함할 수 있다.The processing unit 10 may include a task unit 100, an interface information generation unit 200, an interface library unit 300, and a virtual communication unit 400.

상기 태스크부(100)는 하나 이상의 태스크를 수행할 수 있다. 태스크란 컴퓨터로 처리되는 일의 최소 단위를 의미하며, 각 프로그램은 태스크를 경유하여 시스템 자원을 할당 할 수 있으며, 이를 런(run)할 수 있다. 상기 태스크는 태스크 간 통신이 필요한 경우 범용 태스크 통신 API를 이용하여 태스크 간 통신을 수행할 수 있다. 상기 태스크는 통신을 수행하는 태스크 및 계산을 수행하는 태스크로 분리될 수 있다. The task unit 100 may perform one or more tasks. A task means the smallest unit of work processed by a computer, and each program can allocate system resources through a task, and can run it. The task may perform inter-task communication using a general task communication API when inter-task communication is required. The task may be divided into a task for performing communication and a task for performing calculation.

상기 인터페이스 정보 생성부(200)는 상기 태스크의 통신과 관련된 정보를 포함하는 인터페이스 정보를 생성할 수 있다. 상기 인터페이스 정보는 태스크 간에 연결되어 있는 채널 정보 및 각 채널의 통신 방법, 프로세스 간의 통신 연결 정보, 각 통신 연결에 대한 집합 연결 여부 등을 포함할 수 있다. 상기 인터페이스 정보는 채널의 식별자, 데이터를 송신하는 저자(Writer) 태스크의 정보, 데이터를 수신하는 독자(Reader) 태스크의 정보 및 해당 채널이 상기 프로세스 내에서 사용하게 될 가상 메모리 함수 집합에 관한 정보를 포함하는 채널 정보를 포함할 수 있다. 상기 인터페이스 정보는 원격 통신인 경우 통신별로 사용하는 통신 종류, 통신 역할 분류, 연결 방식, 통신 세부 정보 및 해당 통신의 가상 통신부(400)의 함수 집합 정보를 포함하며 채널별로 원격 통신을 사용하는 경우 사용할 원격 통신에 관한 정보를 더 포함하는 통신 정보를 포함할 수 있다.The interface information generation unit 200 may generate interface information including information related to communication of the task. The interface information may include channel information connected between tasks, a communication method of each channel, communication connection information between processes, whether a group connection for each communication connection, and the like. The interface information includes information on a channel identifier, information on a writer task that sends data, information on a reader task that receives data, and information on a set of virtual memory functions that the channel will use in the process. Channel information to be included may be included. In the case of remote communication, the interface information includes communication type, communication role classification, connection method, communication detailed information, and function set information of the virtual communication unit 400 for each communication. It may include communication information that further includes information about remote communication.

예를 들면, 도 20과 같이 태스크 A와 태스크 B가 두 기기 사이에서 블루투스 통신을 하는 경우에 두 태스크는 블루투스로 연결되어 있으며 기기1은 마스터역할이고 기기2는 슬레이브 역할을 하며, 이에 따라 블루투스 마스터는 MAC 주소가 01:23:45:67:89:0a인 기기2로 접속하기 위해 기기2의 MAC 주소 정보를 가질 수 있고, 1대1 연결만을 허용하는 블루투스의 경우 집합 연결 방식을 가질 수 있다. 이때, 만약 TCP/IP와 같은 통신의 경우에는 여러 개의 접속(connection)을 허용하기 때문에 집합 연결과 개별 연결 중 하나를 선택할 수 있다. 각 기기에 존재하는 채널 정보의 경우, 도면 상으로는 하나의 채널로 표현되지만, 원격 통신의 특징상 실제 기기 별로 채널 정보가 각각 필요하며, 그에 맞는 채널에 해당하는 통신 정보가 연결될 수 있다. For example, as shown in Fig. 20, when task A and task B communicate with two devices via Bluetooth, the two tasks are connected via Bluetooth, and device 1 serves as a master and device 2 serves as a slave. May have the MAC address information of device 2 to access device 2 with a MAC address of 01:23:45:67:89:0a, and in the case of Bluetooth that allows only one-to-one connection, it may have a collective connection method. . In this case, in the case of communication such as TCP/IP, since multiple connections are allowed, one of an aggregate connection and an individual connection can be selected. In the case of channel information present in each device, it is expressed as one channel in the drawing, but channel information is required for each actual device due to the characteristics of remote communication, and communication information corresponding to a corresponding channel may be connected.

상기 인터페이스 정보 생성부(200)는 태스크 매핑을 이용하여 상기 프로세스 별로 인터페이스 정보를 생성할 수 있다. 태스크 매핑이란 태스크와 프로세스를 연결하는 것을 의미할 수 있다. 이로 인해 태스크의 통신 방법이 결정될 수 있다. 상기 인터페이스 정보 생성부(200)는 상기 태스크 매핑 및 인터페이스 명세 UI(User Interface)로부터 프로세스별로 인터페이스 정보를 생성할 수 있다. 예를 들면, 도 19와 같이 태스크 매핑 및 인터페이스 명세 UI(User Interface)로부터 각각의 프로세스별로 인터페이스 정보를 생성할 수 있다. 따라서, 태스크 매핑 및 인터페이스 명세 사용자 인터페이스로 전체 태스크가 있는 환경을 명세할 경우 각 프로세스 별 인터페이스 정보가 생성되고, 해당 정보를 각 프로세스에서 사용할 수 있으며, 이로 인해 프로세스의 수가 많을 경우에 프로세스 별 인터페이스 정보를 사용자가 입력하는 작업이 번거로운 문제와 태스크의 수가 많은 경우에 인터페이스 정보가 복잡한 문제를 개선할 수 있다.The interface information generator 200 may generate interface information for each process using task mapping. Task mapping may mean connecting tasks and processes. This can determine the communication method of the task. The interface information generating unit 200 may generate interface information for each process from the task mapping and interface specification user interface (UI). For example, interface information for each process may be generated from task mapping and interface specification user interface (UI) as shown in FIG. 19. Therefore, when specifying the environment with the entire task using the task mapping and interface specification user interface, interface information for each process is generated and the information can be used in each process. For this reason, interface information for each process when the number of processes is large. It is possible to improve the problem of complicated interface information when the user inputs the task is cumbersome and the number of tasks is large.

상기 인터페이스 라이브러리부(300)는 상기 인터페이스 정보에 따라서 가변적인 가상 통신 모듈을 생성하고 이를 이용하여 통신을 수행할 수 있다. 상기 인터페이스 라이브러리부(300)는 태스크 간의 통신을 위해 필요한 모듈을 포함할 수 있다.The interface library unit 300 may generate a variable virtual communication module according to the interface information and perform communication by using it. The interface library unit 300 may include a module necessary for communication between tasks.

상기 인터페이스 라이브러리부(300)는 범용 태스크 통신 API부(310), 통신 중개부(320) 및 서비스 실행부(330)를 포함할 수 있다.The interface library unit 300 may include a general purpose task communication API unit 310, a communication intermediary unit 320, and a service execution unit 330.

상기 범용 태스크 통신 API부(310)는 통신을 위한 범용 통신 API(Application Programming Interface: 응용 프로그램 프로그래밍 인터페이스)를 포함할 수 있다. 상기 범용 통신 API는 통신 채널의 식별자 값, 통신 송수신에 사용될 데이터의 버퍼 정보 및 통신 송수신에 사용될 데이터의 길이 정보를 포함할 수 있다. 따라서, 상기 범용 태스크 통신 API는 태스크가 개발되는 플랫폼이나 통신 방법에 상관없이, 동일한 API를 제공하여 태스크 코드 작성자에게 동일한 통신 인터페이스 개발 환경을 제공할 수 있다. 예를 들면, 태스크 코드 작성자는 실제 어떤 통신을 하는지에 모르거나 결정하지 않은 상태에서 태스크 간의 통신을 표현할 수 있다. The general-purpose task communication API unit 310 may include a general-purpose communication API (Application Programming Interface) for communication. The universal communication API may include an identifier value of a communication channel, buffer information of data to be used for communication transmission and reception, and length information of data to be used for communication transmission and reception. Accordingly, the general-purpose task communication API may provide the same API to provide the task code author with the same communication interface development environment regardless of the platform or communication method in which the task is developed. For example, a task code writer can express communication between tasks without knowing or deciding what kind of communication is actually being made.

예를 들면, 도 21과 같이 MQ_RECEIVE와 MQ_SEND를 포함하는 범용 태스크 통신 API를 사용하여 태스크 코드 내에서 통신을 명세할 수 있다. 여기서, MQ_RECEIVE는 채널로부터 데이터를 읽을 경우에 사용하며, MQ_SEND는 채널에 데이터를 보낼 때에 사용한다. MQ_RECEIVE와 MQ_SEND의 첫 번째 인자는 채널의 식별자 값이며, 이 정보는 어느 채널로부터 데이터를 받을지와 어느 채널로 데이터를 보낼지를 알려준다. 두 번째 인자는 데이터를 받을 버퍼 또는 보내려는 데이터가 있는 버퍼를 의미하며, 마지막 인자는 받을 데이터의 길이 또는 보낼 데이터의 길이를 의미한다. 따라서, 범용 태스크 통신 API를 사용하는 데에 있어서 어떤 통신을 사용하는지에 대한 정보나 또는 기타 통신에 필요한 정보들에 대한 정보가 없는 채로 태스크 간의 통신을 명세할 수 있다.For example, as shown in FIG. 21, the general task communication API including MQ_RECEIVE and MQ_SEND can be used to specify communication within the task code. Here, MQ_RECEIVE is used when reading data from a channel, and MQ_SEND is used when sending data to a channel. The first parameter of MQ_RECEIVE and MQ_SEND is the channel identifier value, and this information tells which channel to receive data from and to which channel to send data. The second parameter means the buffer to receive the data or the buffer containing the data to be sent, and the last parameter means the length of data to be received or the length of data to be sent. Accordingly, in using the general-purpose task communication API, communication between tasks can be specified without information on what type of communication is used or other information necessary for communication.

상기 통신 중개부(320)는 통신을 하는 태스크 간의 데이터 송수신을 중개하며 가상 메모리 함수 집합을 이용하여 태스크의 쓰기 동작 및 태스크의 읽기 동작을 수행할 수 있다. 상기 통신 중개부(320)는 채널로 연결된 두 태스크 간의 송수신을 중개할 수 있다. 상기 통신을 하는 태스크들이 같은 프로세스에 존재하는 경우 하나의 통신 중개부(320)를 사용할 수 있다. 상기 통신을 하는 태스크들이 다른 프로세스에 존재하는 경우 각각의 프로세스별로 통신 중개부(320)가 복수개가 사용될 수 있다.The communication intermediary unit 320 mediates data transmission/reception between communicating tasks, and may perform a task write operation and a task read operation using a set of virtual memory functions. The communication intermediary unit 320 may mediate transmission/reception between two tasks connected through a channel. When the tasks for communication are present in the same process, one communication intermediary unit 320 may be used. When the tasks for communication exist in different processes, a plurality of communication intermediaries 320 may be used for each process.

상기 통신 중개부(320)는 원격 통신부(321) 및 가상 메모리 접근부(322)를 포함할 수 있다.The communication intermediary unit 320 may include a remote communication unit 321 and a virtual memory access unit 322.

상기 원격 통신부(321)는 서로 상이한 프로세스에 속한 태스크들 간의 데이터 송수신을 중개할 수 있다. 상기 원격 통신부(321)는 다른 프로세스와의 통신이 있을 경우에 사용될 수 있다. 상기 원격 통신부(321)는 송수신부(321-1), 연결부(321-2) 및 수신 처리부(321-3)를 포함할 수 있다. 상기 원격 통신부(321)는 상기 송수신부(321-1), 연결부(321-2) 및 수신 처리부(321-3)를 필요에 따라서 선택하여 사용할 수 있다. 예를 들면, 상기 수신 처리부(321-3)는 저자(Writer) 태스크에서 사용하며, 상기 가상 통신부(400)는 개별 연결일 경우 사용될 수 있다.The remote communication unit 321 may mediate data transmission/reception between tasks belonging to different processes. The remote communication unit 321 may be used when there is communication with another process. The remote communication unit 321 may include a transmission/reception unit 321-1, a connection unit 321-2, and a reception processing unit 321-3. The remote communication unit 321 may select and use the transmission/reception unit 321-1, the connection unit 321-2, and the reception processing unit 321-3 as necessary. For example, the reception processing unit 321-3 may be used in a writer task, and the virtual communication unit 400 may be used in case of an individual connection.

상기 송수신부(321-1)는 원격 통신시에 데이터의 송수신을 수행할 수 있다. 상기 송수신부(321-1)는 해당 채널의 통신 정보가 개별 연결인 경우와 집합 연결인 경우에 따라서 송수신하는 목적지를 달리할 수 있다. 개별 연결의 경우에는 상기 송수신부(321-1)는 상기 가상 통신부(400)의 함수들을 활용하여 직접 원격 프로세스와 데이터를 주고받을 수 있다. 집합 연결의 경우에는 상기 송수신부(321-1)는 통신 집합부(500)에 데이터를 전달하며 통신 집합부(500)로부터 데이터를 받을 수 있다.The transmission/reception unit 321-1 may transmit/receive data during remote communication. The transmitting/receiving unit 321-1 may change a destination for transmission and reception according to a case in which communication information of a corresponding channel is an individual connection and an aggregate connection. In the case of an individual connection, the transmission/reception unit 321-1 may directly exchange data with a remote process by using functions of the virtual communication unit 400. In the case of collective connection, the transmission/reception unit 321-1 may transmit data to the communication aggregation unit 500 and receive data from the communication aggregation unit 500.

상기 송수신부(321-1)는 통신 집합 송수신부(321-1a)및 직접 송수신부(321-1b)를 포함할 수 있다.The transmission/reception unit 321-1 may include a communication set transmission/reception unit 321-1a and a direct transmission/reception unit 321-1b.

상기 통신 집합 송수신부(321-1a)는 하나의 연결로 복수개의 태스크 간의 통신을 모두 공유하는 통신 집합 연결 방법으로 데이터를 송수신할 수 있다. 예를 들면, 저성능 네트워크에서 1대1 연결 지원을 위해 두 기기 간에 여러 개의 태스크가 통신할 경우 하나의 통신 연결을 공유하는 집합 연결시 통신 집합 송수신부(321-1a)를 이용하여 데이터를 송수신 할 수 있다. 또다른 예를 들면, 상기 통신 집합 송수신부(321-1a)는 개별 연결을 사용할 수 있는 네트워크에서 여러 기기로부터 통신 서비스를 제공할 경우 연결 수를 줄일 수 있도록 통신 집합 연결 방법으로 데이터를 송수신할 수 있다. 이때, 개별 연결 방법도 함께 사용될 수 있다. 상기 통신 집합 송수신부(321-1a)는 원격 프로세스에 보낼 데이터를 통신 집합부에 전송하거나, 통신 집합부로부터 데이터를 수신받을 수 있다.The communication set transmission/reception unit 321-1a may transmit and receive data through a communication set connection method in which all communication between a plurality of tasks is shared through a single connection. For example, when multiple tasks communicate between two devices to support a one-to-one connection in a low-performance network, data is transmitted/received using the communication set transmitting/receiving unit 321-1a when connecting a group sharing one communication connection. can do. For another example, the communication set transmission/reception unit 321-1a may transmit and receive data through a communication set connection method to reduce the number of connections when providing communication services from multiple devices in a network that can use individual connections. have. In this case, an individual connection method may also be used. The communication set transmission/reception unit 321-1a may transmit data to be transmitted to a remote process to the communication aggregation unit or may receive data from the communication aggregation unit.

통신 집합 연결 방법 이란 여러 개의 태스크가 하나의 통신 연결을 공유하는 방법을 의미한다. 예를 들면, 도 24와 같이 태스크 3개는 왼쪽 프로세스에, 태스크 2개는 오른쪽 프로세스에 배치된 경우, 개별 연결인 경우는 도 24의 (a)와 같이 태스크들 간에 원격 프로세스로 연결된 채널의 수만큼 3개의 통신 연결이 생성되며, 집합 연결인 경우는 도 24의 (b)와 같이 두 프로세스 간에 하나의 통신 연결이 생성될 수 있다.The communication set connection method refers to a method in which several tasks share one communication connection. For example, as shown in FIG. 24, when three tasks are placed in the left process and two tasks are placed in the right process, in the case of individual connections, the number of channels connected to the remote process between tasks as shown in FIG. 24(a) As many as three communication connections are created, and in the case of a collective connection, one communication connection may be created between two processes as shown in (b) of FIG. 24.

상기 직접 송수신부(321-1b)는 각 태스크를 개별적으로 연결하는 개별 연결 방법으로 데이터를 송수신할 수 있다. 예를 들면, 제1 태스크는 제2 태스크와 1대1로 연결될 수 있다. 상기 직접 송수신부(321-1b)는 실제 데이터를 네트워크상에서 가상 통신부(400)를 통해 주고 받을 수 있다. 예를 들면, 상기 직접 송수신부(321-1b)는 각 태스크를 개별적으로 연결하여 상기 가상 통신부(400)를 통해 상대 태스크와 직접 데이터를 송수신할 수 있다.The direct transmission/reception unit 321-1b may transmit and receive data through an individual connection method for individually connecting each task. For example, the first task may be connected to the second task on a one-to-one basis. The direct transmission/reception unit 321-1b may send and receive real data through the virtual communication unit 400 on a network. For example, the direct transmission/reception unit 321-1b may individually connect each task to transmit and receive data directly to and from a counterpart task through the virtual communication unit 400.

상기 통신 집합 송수신부(321-1a) 및 상기 직접 송수신부(321-1b)의 기능은 가상 통신부(321-2)의 기능과 실질적으로 동일한 기능을 포함할 수 있다. 가상 통신부(321-2)의 기능과 반복되는 설명은 생략한다.The functions of the communication set transmission/reception unit 321-1a and the direct transmission/reception unit 321-1b may include substantially the same functions as those of the virtual communication unit 321-2. Functions of the virtual communication unit 321-2 and repeated descriptions are omitted.

상기 연결부(321-2)는 상대 원격 프로세스와의 초기 통신 연결을 수행할 수 있다. 상기 연결부(321-2)는 통신 연결을 수행하며. 태스크가 다른 태스크와의 통신을 위해 개별 연결되어 통신하는 경우, 실제로 통신 연결을 수행하거나, 상대 태스크의 연결을 기다리며, 통신 집합부를 통해 연결이 되는 경우 통신 집합부와의 연결 및 연결 해제에 필요한 설정을 수행할 수 있다. 이때, 개별 연결인 경우와 집합 연결인 경우에 따라서 통신 연결을 수행하는 부가 달라지며, 개별 연결인 경우에는 가상 통신부(400)를 통해 직접 원격 프로세스의 해당 채널과 통신 연결을 수행할 수 있고, 집합 연결인 경우에는 통신 집합부(500)와의 연결을 수행할 수 있다.The connection unit 321-2 may perform initial communication connection with a counterpart remote process. The connection part 321-2 performs communication connection. When a task is individually connected to communicate with other tasks, it actually performs a communication connection or waits for the other task's connection, and is connected through the communication aggregation unit. Settings required for connection and disconnection with the communication aggregation unit Can be done. At this time, the unit for performing the communication connection is different depending on the case of the individual connection and the case of the collective connection, and in the case of an individual connection, the communication connection with the corresponding channel of the remote process can be directly performed through the virtual communication unit 400, and the set In the case of connection, connection with the communication aggregation unit 500 may be performed.

상기 수신 처리부(321-3)는 저자 버퍼를 포함하는 저자(Writer) 태스크로 수신되는 데이터를 처리할 수 있다. 상기 수신 처리부(321-3)는 독자 태스크의 데이터 요청을 처리할 수 있다. 상기 수신 처리부(321-3)는 독자 태스크의 요청을 받고, 요청한 데이터를 반환할 수 있다. 상기 수신 처리부(321-3)는 원격 프로세스로부터 전송된 요청을 수행하여 송수신부(321-1)를 통해 결과를 전송할 수 있다. 일반적인 통신의 채널에는 통신을 하는 태스크 간의 오가는 데이터를 임시로 저장하는 버퍼가 존재하고, 해당 버퍼의 크기는 제한되어 있다. 상기 수신 처리부(321-3)는 이러한 임시 버퍼인 저자 버퍼를 저자 채널, 즉 저자 태스크에 배치할 수 있다. 따라서, 저자 태스크는 쓰기 요청을 원격 처리가 아닌 프로세스 내에서 처리할 수 있다. 독자 채널에 임시 버퍼가 있는 경우에는 독자는 읽기 요청을 프로세스 내에서 해결할 수 있지만, 쓰기 요청이 원격으로 발생하게 되어 임시 버퍼의 공간에 여유가 있는지 확인하고 임시 버퍼가 다 찬 경우 다시 일정 시간 후에 쓰기 요청을 다시 해야 하며 이로 인해 임시 버퍼가 다 찬 경우에 쓰기 요청을 하는 주기 및 쓰기 요청을 발생시킬 때마다 추가적인 통신 트래픽이 발생하는 문제점을 갖고 있으므로 상기 수신 처리부(321-3)는 임시 버퍼인 저자 버퍼를 저자 채널, 즉 저자 태스크에 배치시켜 이러한 문제점을 해결할 수 있다.The reception processing unit 321-3 may process data received by a writer task including an author buffer. The reception processing unit 321-3 may process a data request of an independent task. The reception processing unit 321-3 may receive a request from an independent task and return requested data. The reception processing unit 321-3 may perform a request transmitted from a remote process and transmit a result through the transmission/reception unit 321-1. In a general communication channel, there is a buffer that temporarily stores data that passes between the communicating tasks, and the size of the buffer is limited. The reception processing unit 321-3 may place an author buffer, which is such a temporary buffer, in an author channel, that is, an author task. Thus, the author task can process write requests within a process rather than remotely. If there is a temporary buffer in the reader channel, the reader can resolve the read request in-process, but the write request is issued remotely, so check if there is space in the temporary buffer and write again after a certain amount of time if the temporary buffer is full. Requests must be made again, and as a result, when the temporary buffer is full, additional communication traffic is generated each time a write request is made and a write request is generated. This problem can be solved by placing the buffer in the author channel, that is, the author task.

상기 가상 메모리 접근부(322)는 통신을 하는 태스크에서 메모리를 참조할 경우에 통신을 위한 데이터 복사를 수행할 수 있다. 상기 가상 메모리 접근부(322)는 같은 프로세스 내의 태스크들 간의 통신시에도 사용될 수 있다. 예를 들면, 같은 프로세스 내의 태스크들 간의 통신시에는 상기 통신 중개부(320)는 상기 가상 메모리 접근부(322)만을 사용하여 통신을 수행할 수 있다. 상기 가상 메모리 접근부(322)는 두 태스크의 통신 방법에 상관없이 통신을 하는 두 태스크가 이종 프로세싱부(10)의 메모리를 참조할 경우에 통신을 위한 데이터 복사에 사용할 수 있다. 예를 들면, 상기 이종 프로세싱부(10)는 CPU 및 GPU일 수 있다. 상기 가상 메모리 접근부(322)는 채널 메모리 할당(createMemory), 채널 메모리 해제(destroyMemory), 태스크에서 채널 메모리로 복사(copyToMemory) 및 채널 메모리에서 태스크로 복사(copyFromMemory) 함수로 구성될 수 있다.The virtual memory access unit 322 may copy data for communication when a memory is referred to in a communication task. The virtual memory access unit 322 may also be used for communication between tasks in the same process. For example, when communicating between tasks in the same process, the communication intermediary unit 320 may perform communication using only the virtual memory access unit 322. The virtual memory access unit 322 can be used to copy data for communication when two tasks for communication refer to the memory of the heterogeneous processing unit 10 regardless of the communication method of the two tasks. For example, the heterogeneous processing unit 10 may be a CPU and a GPU. The virtual memory access unit 322 may include a channel memory allocation (createMemory), a channel memory release (destroyMemory), a task-to-channel memory copy (copyToMemory), and a channel memory-to-task copy (copyFromMemory) function.

상기 가상 메모리 접근부(322)는 상기 가상 메모리 함수 집합을 포함할 수 있다. 상기 가상 메모리 함수 집합은 통신을 하는 태스크들 간의 통신 종류에 맞는 메모리 접근 함수를 포함할 수 있다. 상기 가상 메모리 함수 집합은 메모리 할당(createMemory), 메모리 해제(destroyMemory), 태스크에서 메모리로 복사(copyToMemory), 메모리에서 태스크로 복사(copyFromMemory)를 포함할 수 있다.The virtual memory access unit 322 may include the set of virtual memory functions. The set of virtual memory functions may include memory access functions suitable for a type of communication between tasks performing communication. The set of virtual memory functions may include memory allocation (createMemory), memory release (destroyMemory), task-to-memory copy (copyToMemory), and memory-to-task copy (copyFromMemory).

상기 가상 메모리 함수 집합은 제1 가상 메모리 함수 집합, 제2 가상 메모리 함수 집합 및 제3 가상 메모리 함수 집합을 포함할 수 있다. 상기 제1 가상 메모리 함수 집합은 동일한 프로세싱부(10)에 속한 태스크들 간의 통신을 위한 함수 집합일 수 있다. 상기 제2 가상 메모리 함수 집합은 동일한 종류의 서로 다른 프로세싱부(10)에 속한 태스크들 간의 통신을 위한 함수 집합일 수 있다. 상기 제3 가상 메모리 함수 집합은 서로 상이한 종류의 서로 다른 프로세싱부(10)에 속한 태스크들 간의 통신을 위한 함수 집합일 수 있다. 예를 들면, 도 23과 같이 CUDA(Compute Unified Device Architecture)를 지원하는 그래픽 카드와 CPU 간의 통신에서, 통신을 하는 태스크들의 위치가 어떤 프로세싱부(10)에 속하는지에 따라서 가상 메모리 함수 집합 중 하나를 선택하여 사용할 수 있으며, 왼쪽의 태스크가 CPU에 위치해 있고, 오른쪽 태스크가 GPU에 위치한 경우, 서로 상이한 종류의 서로 다른 프로세싱부(10)에 속한 태스크들 간의 통신을 위한 함수 집합인 제3 가상 메모리 함수 집합의 예제인 가장 우측의 CPU-GPU 함수 집합을 사용하며, 인터페이스 정보에 상기 가상 메모리 함수 집합에 대한 사용 정보를 추가할 수 있다. 이 경우, 왼쪽의 태스크가 채널로 데이터를 복사할 때에는 memcpy 함수를 통해 이루어지고, 오른쪽의 태스크가 데이터를 가져올 때에는 cudaMemcpy 함수를 이용할 수 있다.The virtual memory function set may include a first virtual memory function set, a second virtual memory function set, and a third virtual memory function set. The first set of virtual memory functions may be a set of functions for communication between tasks belonging to the same processing unit 10. The second set of virtual memory functions may be a set of functions for communication between tasks belonging to different processing units 10 of the same type. The third virtual memory function set may be a function set for communication between tasks belonging to different processing units 10 of different types. For example, in the communication between a CPU and a graphics card supporting CUDA (Compute Unified Device Architecture) as shown in FIG. 23, one of the set of virtual memory functions is selected according to which processing unit 10 the positions of the communicating tasks belong to. A third virtual memory function that is a set of functions for communication between tasks belonging to different processing units 10 of different types when the left task is located on the CPU and the right task is located on the GPU. The rightmost CPU-GPU function set, which is an example of the set, is used, and usage information for the virtual memory function set can be added to the interface information. In this case, when the task on the left copies data to the channel, it is done through the memcpy function, and when the task on the right fetches data, the cudaMemcpy function can be used.

상기 서비스 실행부(330)는 통신 서비스를 시작할 수 있다. 상기 서비스 실행부(330)는 서버-클라이언트 구조나 마스터-슬레이브 구조의 통신 네트워크를 사용할 경우 서버나 슬레이브 역할을 하는 프로세스가 통신 연결을 하기 위한 서비스를 실행할 수 있다. 상기 서비스 실행부(330)는 마스터-슬레이브나 서버-클라이언트가 아닌 단순 일대일 연결의 통신 방식인 경우, 둘 중 하나가 마스터 및 슬레이브 역할을 하도록 정하여 통신을 수행할 수 있다.The service execution unit 330 may start a communication service. The service execution unit 330 may execute a service for a server or a process serving as a slave to establish a communication connection when using a communication network of a server-client structure or a master-slave structure. In the case of a simple one-to-one communication method other than a master-slave or a server-client, the service execution unit 330 may perform communication by determining one of them to serve as a master and a slave.

상기 서비스 실행부(330)는 연결을 대기하는 서비스를 시작하거나 집합 연결과 같이 태스크 간에 통신이 이루어지기 전에 연결을 완료하여야 할 경우와 같은 원격 통신을 위한 초기화 작업을 수행할 수 있다. 상기 서비스 실행부(330)는 집합 연결이며 서비스 제공자 역할(서버나 슬레이브)인 경우, 개별 연결이며 서비스 제공자 역할(서버나 슬레이브)인 경우, 집합 연결이며 서비스 사용자 역할(마스터나 클라이언트)인 경우에 사용될 수 있다.The service execution unit 330 may start a service waiting for a connection or perform an initialization task for remote communication, such as when a connection must be completed before communication between tasks is established, such as a collective connection. The service execution unit 330 is a collective connection, in the case of a service provider role (server or slave), an individual connection, in the case of a service provider role (server or slave), a collective connection, and in the case of a service user role (master or client) Can be used.

상기 서비스 실행부(330)는 집합 연결 처리부(331) 및 개별 연결 처리부(332)를 포함할 수 있다.The service execution unit 330 may include an aggregate connection processing unit 331 and an individual connection processing unit 332.

상기 집합 연결 처리부(331)는 집합 연결로 통신을 하는 경우 통신을 직접 연결할 수 있다. 상기 집합 연결 처리부(331)는 해당 통신이 집합 연결을 하도록 설정이 되어 있는 경우 집합 연결에 필요한 초기화 작업을 수행할 수 있다. 상기 초기화 작업이란 통신을 직접 연결하는 것을 의미할 수 있다.The collective connection processing unit 331 may directly connect the communication when communicating through the collective connection. The aggregation connection processing unit 331 may perform an initialization task required for aggregation connection when a corresponding communication is set to perform aggregation connection. The initialization operation may mean direct connection of communication.

상기 개별 연결 처리부(332)는 개별 연결로 통신을 하는 경우 개별 연결을 위한 서버를 시작하고 원격 프로세스의 개별 연결 요청을 처리할 수 있다. 상기 개별 연결 처리부(332)는 해당 통신이 개별 연결을 하도록 설정이 되어 있는 경우에 개별 연결을 제공하기 위한 서버를 시작하고, 원격 프로세스의 개별 연결 요청을 처리할 수 있다.The individual connection processing unit 332 may start a server for an individual connection and process an individual connection request from a remote process when communicating through an individual connection. The individual connection processing unit 332 may start a server for providing an individual connection when a corresponding communication is set to make an individual connection, and process an individual connection request from a remote process.

상기 프로세싱부(10)는 통신 집합부(500)를 더 포함할 수 있다.The processing unit 10 may further include a communication aggregation unit 500.

상기 통신 집합부(500)는 송수신하는 태스크들의 통신 방식을 하나의 통신 방식으로 가상화하며 통신 서비스의 집합 연결을 수행하거나 다수의 개별 연결을 동시에 수행시 송신 데이터를 원격 프로세스로 송신하고, 수신한 데이터를 접합한 채널에 전송할 수 있다. 상기 통신 집합부(500)는 프로세스 내의 여러 태스크들의 송신 데이터를 원격 프로세스로 송신하며 수신한 데이터를 적합한 채널에 전송할 수 있다. 예를 들면, 상기 통신 집합부(500)는 1대1로 연결되는 시리얼 통신이나 블루투스 통신과 같이 집합 연결을 필연적으로 사용하는 통신 방식에서 사용하며, TCP/IP와 같은 통신에서도 저성능 저전력 기기를 사용함에 따라 많은 통신 연결이 필요한 경우 사용할 수 있다.The communication aggregation unit 500 virtualizes the communication method of the tasks to be transmitted/received as a single communication method, and transmits transmission data to a remote process when performing collective connection of communication services or performing multiple individual connections simultaneously, and received data Can be transmitted to the concatenated channel. The communication aggregation unit 500 may transmit transmission data of various tasks in a process to a remote process and transmit the received data to a suitable channel. For example, the communication aggregation unit 500 is used in a communication method that inevitably uses a collective connection, such as serial communication or Bluetooth communication, which is connected in a one-to-one manner, and uses low-performance low-power devices even in communication such as TCP/IP. It can be used when a lot of communication connections are required according to use.

상기 통신 집합부(500)는 상기 가상 통신부(400)를 이용할 수 있다. 상기 가상 통신부(400)각 태스크 간의 연결 별로 각각의 가상 소켓을 통해 통신하거나 집합 연결인 경우 같은 방식으로 통신하는 태스크들에 대해 하나의 가상 소켓을 생성하여 통신 집합부를 통해 데이터 송수신을 공유할 수 있다. The communication aggregation unit 500 may use the virtual communication unit 400. The virtual communication unit 400 communicates through each virtual socket for each connection between each task or, in the case of a collective connection, creates one virtual socket for tasks that communicate in the same manner to share data transmission/reception through the communication aggregation unit. .

상기 가상 통신부(400)는 개별 연결일 경우 송수신하는 태스크들의 통신 방식을 하나의 통신 방식으로 가상화할 수 있다. 상기 가상 통신부(400)는 상기 태스크 또는 상기 프로세스의 통신 방식에 따라서 통신 생성(create), 통신 소멸(destroy), 연결(connect), 연결 해제(disconnect), 수락(accept), 송신(send), 수신(receive) 및 연결 대기(listen) 함수로부터 상기 통신 방식에 필요한 가상 함수를 생성할 수 있다. 또한, 이로부터 각 태스크 간의 연결 별 또는 같은 방식으로 통신하는 태스크들의 집합 연결별로 가상 소켓을 생성할 수 있다. In the case of an individual connection, the virtual communication unit 400 may virtualize a communication method of tasks to be transmitted and received as one communication method. The virtual communication unit 400 creates communication, destroys communication, connects, disconnects, accepts, and sends according to the communication method of the task or the process. A virtual function required for the communication method can be generated from a receive function and a connection wait function. In addition, from this, a virtual socket may be created for each connection between each task or a group connection of tasks communicating in the same manner.

상기 가상 통신부(400)는 상기 함수들 중 지원하는 통신 방식에서 필요로 하는 가상 함수만을 선택적으로 이용할 수 있다. 상기 가상 통신부는 통신 방식별로 함수의 집합을 구성하고, 그 함수의 집합을 통해 해당 통신을 지원하고, 상위 모듈에서는 상기 가상 통신부에서 제공하는 함수의 집합으로부터 통신 방식에 상관없이 필요한 기능을 구현할 수 있다. 상기 가상 통신부(400)는 가상 소켓을 생성할 수 있다. 따라서, 널리 알려진 유, 무선 네트워크 통신뿐만 아니라 상기 가상 함수로 구현될 수 있는 다양한 통신 방식을 지원할 수 있다. 예를 들면, 다른 기기와 통신은 TCP/IP, 블루투스, ZigBee와 같은 일반적인 네트워크 통신뿐만 아니라 USB 등으로 연결하는 시리얼 통신이나, 파일을 공유하는 형태로도 두 태스크 간의 통신을 구현할 수 있으며, 통신 방식에 상관없이 가상화 함수로 구현만 된다면 새로운 통신 방식을 지원할 수 있다.The virtual communication unit 400 may selectively use only virtual functions required by a supported communication method among the functions. The virtual communication unit configures a set of functions for each communication method, supports corresponding communication through the set of functions, and a higher module can implement necessary functions regardless of the communication method from the set of functions provided by the virtual communication unit. . The virtual communication unit 400 may generate a virtual socket. Therefore, it is possible to support various communication methods that can be implemented with the virtual function as well as well-known wired and wireless network communication. For example, communication between two tasks can be implemented in the form of sharing files or serial communication through USB, as well as general network communication such as TCP/IP, Bluetooth, and ZigBee. Regardless, if it is implemented as a virtualization function, a new communication method can be supported.

상기 가상 함수들은 복수개일 수 있다. 예를 들면, 도 22와 같이 연결(connect) 함수는 복수개의 연결 함수를 포함할 수 있다. 상기 연결 함수는 통신 방식에 따라 내부 구현이 다른 복수개의 연결 함수를 포함할 수 있다. 상기 가상 통신부(400)는 통신 방식에 따라서 그에 맞는 가상 함수를 사용할 수 있다. 예를 들면, 도 22와 같이 Bluetooth_connect 함수는 블루투스 통신을 위한 가상 연결 함수이고, TCP_connect 함수는 TCP 통신을 위한 가상 연결 함수이며, Serial_connect 함수는 시리얼 통신을 위한 가상 연결 함수 이고, 블루투스와 TCP 통신의 가상 연결 함수는 서로 유사하며 시스템 함수에 넘겨주는 인자나 요구되는 값들을 처리하는 함수 일부분만을 다르게 하여 사용할 수 있으며, 시리얼 통신을 하는 경우에는 호출하는 시스템 함수 를 다르게 하여 사용할 수 있다. 따라서, 새롭게 지원하는 통신 방식이 기존의 통신 방식 등과 사용법이나 호출하는 시스템 함수 등이 다르더라도 가상 통신부(400)의 연결 함수를 이용하여 이를 호출하여 통신을 지원할 수 있다. There may be a plurality of virtual functions. For example, as shown in FIG. 22, the connect function may include a plurality of connection functions. The connection function may include a plurality of connection functions having different internal implementations according to a communication method. The virtual communication unit 400 may use a virtual function corresponding thereto according to a communication method. For example, as shown in FIG. 22, the Bluetooth_connect function is a virtual connection function for Bluetooth communication, the TCP_connect function is a virtual connection function for TCP communication, and the Serial_connect function is a virtual connection function for serial communication, and The connection functions are similar to each other, and only a part of the function that handles parameters or required values to be passed to the system function can be used differently. In case of serial communication, the system function to be called can be used differently. Therefore, even if the newly supported communication method is different from the conventional communication method, the usage or the system function to be called, it is possible to support communication by calling it using the connection function of the virtual communication unit 400.

상기 가상 통신부(400)는 각 태스크 간의 연결 별로 각각의 가상 소켓을 통해 통신하거나 집합 연결인 경우 같은 방식으로 통신하는 태스크들에 대해 하나의 가상 소켓을 생성하여 통신 집합부를 통해 데이터 송수신을 공유할 수 있다.The virtual communication unit 400 communicates through each virtual socket for each connection between each task or, in the case of a collective connection, creates one virtual socket for tasks that communicate in the same manner to share data transmission/reception through the communication aggregation unit. have.

상기 통신 생성(create) 함수는 각 통신 방식에 따른 통신 정보를 생성하고, 초기화하는 함수일 수 있다. 상기 통신 소멸(destroy) 함수는 통신 방식에 따른 설정 정보를 소멸시키는 함수일 수 있다. 상기 연결(connect) 함수는 원격 프로세스와의 연결을 수행하는 함수로, 연결이 성공할 경우, 가상 소켓을 생성할 수 있다. 상기 연결 해제(disconnect) 함수는 원격 프로세스와의 연결을 종료하는 함수로, 가상 소켓을 소멸시킬 수 있다. 상기 연결 대기(listen) 함수는 원격 프로세스로부터의 연결을 받기 위해 대기하는 함수일 수 있다. 상기 수락(accept) 함수는 원격 프로세스로부터의 연결을 수락 받는 함수로, 연결 수락에 성공할 경우, 가상 소켓을 생성할 수 있다. 상기 송신(send) 함수는 가상 소켓을 통해 원격 프로세스에 데이터를 송신하는 함수일 수 있다. 상기 수신(receive) 함수는 가상 소켓을 통해 원격 프로세스로부터 오는 데이터를 수신하는 함수일 수 있다.The communication create function may be a function for generating and initializing communication information according to each communication method. The communication destroy function may be a function that destroys setting information according to a communication method. The connect function is a function that performs a connection with a remote process. If the connection is successful, a virtual socket may be created. The disconnect function is a function for terminating a connection with a remote process, and may destroy a virtual socket. The connection listen function may be a function that waits to receive a connection from a remote process. The accept function is a function that accepts a connection from a remote process, and when the connection acceptance is successful, a virtual socket may be created. The send function may be a function for sending data to a remote process through a virtual socket. The receive function may be a function that receives data coming from a remote process through a virtual socket.

도 7은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 프로세스를 수행하는 단계(S100)를 나타내는 흐름도이다. 도 8은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 인터페이스 정보를 생성하는 단계(S110)를 나타내는 흐름도이다. 도 9는 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 통신을 수행하는 단계(S120)를 나타내는 흐름도이다. 도 10은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 태스크의 쓰기 동작을 수행하는 단계(S122)를 나타내는 흐름도이다. 도 11은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 태스크의 읽기 동작을 수행하는 단계(S123)를 나타내는 흐름도이다. 도 12는 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 태스크의 읽기 동작을 수행하는 단계(S123)를 나타내는 흐름도이다. 도 13은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 태스크의 읽기 동작을 수행하는 단계(S123)를 나타내는 흐름도이다. 도 14는 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 통신을 수행하는 단계(S120)를 나타내는 흐름도이다. 도 15는 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 통신 서비스를 시작하기 위한 단계(S121)를 나타내는 흐름도이다. 도 16은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 통신 서비스를 시작하기 위한 단계(S121)를 나타내는 흐름도이다. 도 17은 본 발명의 일 실시예에 따른 태스크 간 통신 방법의 태스크의 읽기 동작을 수행하는 단계(S123)를 나타내는 흐름도이다.7 is a flowchart illustrating a step (S100) of performing a process of a communication method between tasks according to an embodiment of the present invention. 8 is a flowchart illustrating a step (S110) of generating interface information of a method for communication between tasks according to an embodiment of the present invention. 9 is a flowchart illustrating a step S120 of performing communication in a communication method between tasks according to an embodiment of the present invention. 10 is a flowchart illustrating an operation S122 of performing a write operation of a task in a method for communication between tasks according to an embodiment of the present invention. 11 is a flowchart illustrating a step S123 of performing a task read operation of a method for communication between tasks according to an embodiment of the present invention. 12 is a flowchart illustrating a step S123 of performing a task read operation in a method for communication between tasks according to an embodiment of the present invention. 13 is a flowchart illustrating a step (S123) of performing a task read operation in a method for communication between tasks according to an embodiment of the present invention. 14 is a flowchart illustrating a step S120 of performing communication in a communication method between tasks according to an embodiment of the present invention. 15 is a flowchart illustrating a step (S121) for starting a communication service in a communication method between tasks according to an embodiment of the present invention. 16 is a flowchart illustrating a step (S121) for starting a communication service in a communication method between tasks according to an embodiment of the present invention. 17 is a flowchart illustrating a step S123 of performing a task read operation in a method for communication between tasks according to an embodiment of the present invention.

도 7 내지 도 16을 참조하면, 본 실시예에 따른 태스크 간 통신 방법은 태스크 간 통신 시스템에서 수행되며, 도 1 내지 도 6의 태스크 간 통신 시스템이 수행하는 내용과 실질적으로 동일하다. 따라서, 도 1 내지 도 6의 태스크 간 통신 시스템과 동일한 구성요소는 동일한 도면 부호를 부여하고, 반복되는 설명은 생략하며, 각 단계의 연관성만을 추가 기술한다.7 to 16, the inter-task communication method according to the present embodiment is performed in the inter-task communication system, and is substantially the same as the content performed by the inter-task communication system of FIGS. 1 to 6. Accordingly, the same components as those of the inter-task communication system of FIGS. 1 to 6 are denoted by the same reference numerals, repeated descriptions are omitted, and only the association of each step is further described.

도 7 내지 도 16를 참조하면, 본 발명의 일 실시예에 따른 태스크 간 통신 방법은 프로세싱부(10)가 태스크 간 통신을 수행하는 프로세스를 수행하는 단계(S100)를 포함한다.7 to 16, the inter-task communication method according to an embodiment of the present invention includes a step S100 of performing, by the processing unit 10, a process for performing inter-task communication.

상기 프로세스를 수행하는 단계(S100)는 인터페이스 정보를 생성하는 단계(S110) 및 통신을 수행하는 단계(S120)를 포함할 수 있다.Performing the process (S100) may include generating interface information (S110) and performing communication (S120).

상기 인터페이스 정보를 생성하는 단계(S110)에서는 인터페이스 정보 생성부(200)가 태스크의 통신과 관련된 정보를 포함하는 인터페이스 정보를 생성할 수 있다. 상기 인터페이스 정보를 생성하는 단계(S110)에서는 태스크 매핑을 이용하여 상기 프로세스 별로 인터페이스 정보를 생성할 수 있다.In the step of generating the interface information (S110), the interface information generation unit 200 may generate interface information including information related to communication of a task. In the step of generating the interface information (S110), interface information for each process may be generated using task mapping.

상기 인터페이스 정보는 채널의 식별자, 데이터를 송신하는 저자(Writer) 태스크의 정보, 데이터를 수신하는 독자(Reader) 태스크의 정보 및 해당 채널이 상기 프로세스 내에서 사용하게 될 가상 메모리 함수 집합에 관한 정보를 포함하는 채널 정보를 포함할 수 있다. 상기 인터페이스 정보는 원격 통신인 경우 통신별로 사용하는 통신 종류, 통신 역할 분류, 연결 방식, 통신 세부 정보 및 해당 통신의 가상 통신부(400)의 함수 집합 정보를 포함하며 채널별로 원격 통신을 사용하는 경우 사용할 원격 통신에 관한 정보를 더 포함하는 통신 정보를 포함할 수 있다.The interface information includes information on a channel identifier, information on a writer task that sends data, information on a reader task that receives data, and information on a set of virtual memory functions that the channel will use in the process. Channel information to be included may be included. In the case of remote communication, the interface information includes communication type, communication role classification, connection method, communication detailed information, and function set information of the virtual communication unit 400 for each communication. It may include communication information that further includes information about remote communication.

상기 통신을 수행하는 단계(S120)에서는 인터페이스 라이브러리부(300)가 상기 인터페이스 정보에 따라서 가변적인 가상 통신 모듈을 생성하고 통신을 수행할 수 있다. In the step of performing the communication (S120), the interface library unit 300 may generate a variable virtual communication module according to the interface information and perform communication.

상기 통신을 수행하는 단계(S120)는 통신 서비스를 시작하기 위한 단계(S121), 태스크의 쓰기 동작을 수행하는 단계(S122) 및 태스크의 읽기 동작을 수행하는 단계(S123)를 포함할 수 있다.The performing of communication (S120) may include starting a communication service (S121), performing a write operation of a task (S122), and performing a read operation of the task (S123).

상기 통신 서비스를 시작하기 위한 단계(S121)에서는 서비스 실행부(330)가 통신 서비스를 시작할 수 있다. 상기 통신 서비스를 시작하기 위한 단계(S121)에서는 서비스 실행부(330)가 상기 인터페이스 정보에 적합한 통신 서비스를 시작할 수 있다. 예를 들면, 상기 태스크 간 통신이 집합 연결인 경우 통신 생성(create), 통신 연결(connect) 및 통신 집합부의 실행 및 소켓 전달을 수행하여 통신 서비스를 시작할 수 있다.In the step S121 of starting the communication service, the service execution unit 330 may start the communication service. In the step (S121) of starting the communication service, the service execution unit 330 may start a communication service suitable for the interface information. For example, when the communication between tasks is a collective connection, a communication service may be started by performing a communication create, a communication connection, an execution of a communication aggregation unit, and a socket transfer.

상기 태스크의 쓰기 동작을 수행하는 단계(S122)는 데이터 쓰기 요청을 하는 단계(S122-1) 및 쓰기 요청한 데이터를 복사하는 단계(S122-2)를 포함할 수 있다. 태스크가 같은 프로세스 내의 태스크로 데이터를 송신할 경우 상기 데이터 쓰기 요청을 하는 단계(S122-1) 및 상기 쓰기 요청한 데이터를 복사하는 단계(S122-2)는 순차적으로 수행될 수 있다. Performing the write operation of the task (S122) may include requesting to write data (S122-1) and copying the data requested to be written (S122-2). When a task transmits data to a task in the same process, the step of requesting to write the data (S122-1) and the step of copying the write-requested data (S122-2) may be sequentially performed.

상기 데이터 쓰기 요청을 하는 단계(S122-1)에서는 태스크부(100)가 상기 범용 태스크 통신 API를 이용하여 채널에 데이터 쓰기 요청을 할 수 있다. In the step of making the data write request (S122-1), the task unit 100 may make a data write request to the channel using the general task communication API.

상기 쓰기 요청한 데이터를 복사하는 단계(S122-2)에서는 통신 중개부(320)가 가상 메모리 함수 집합을 이용하여 채널의 버퍼로 쓰기 요청한 데이터를 복사할 수 있다. 상기 쓰기 요청한 데이터를 복사하는 단계(S122-2)에서는 가상 메모리 접근부(322)의 함수 중 태스크에서 메모리로 복사하는 함수를 이용할 수 있다. 상기 쓰기 요청한 데이터를 복사하는 단계(S122-2)에서는 쓰기 요청된 데이터를 태스크에서 채널의 버퍼로 복사할 수 있다. 이때, 태스크 간 통신을 하는 태스크들이 속한 프로세싱부(10)의 관계에 따라서 상기 가상 메모리 함수 집합이 선택적으로 사용될 수 있다. 예를 들면, 상기 태스크들이 같은 처리 장치(processing unit)에 존재하지 않는 경우 제3 가상 메모리 함수 집합을 이용할 수 있다. 예를 들면, 상기 통신 중개부(320)는 태스크에서 메모리로 복사 함수 중에서 처리 장치에 종속적인 가상 메모리 함수 집합에 속한 함수를 이용하여 쓰기 요청된 데이터를 태스크에서 채널의 버퍼로 복사할 수 있다.In the step of copying the write-requested data (S122-2), the communication intermediary unit 320 may copy the write-requested data to a buffer of the channel using a set of virtual memory functions. In the copying of the write-requested data (S122-2), a function of copying from a task to a memory among functions of the virtual memory access unit 322 may be used. In the step of copying the write-requested data (S122-2), the write-requested data may be copied from the task to the buffer of the channel. In this case, the set of virtual memory functions may be selectively used according to a relationship between the processing unit 10 to which tasks communicating between tasks belong. For example, if the tasks do not exist in the same processing unit, a third set of virtual memory functions may be used. For example, the communication intermediary unit 320 may copy data requested to be written from a task to a buffer of a channel by using a function belonging to a set of virtual memory functions dependent on a processing device among task-to-memory copy functions.

상기 태스크의 읽기 동작을 수행하는 단계(S123)는 데이터 읽기 요청을 하는 단계 (S123-1)및 읽기 요청한 데이터를 복사하는 단계(S123-2)를 포함할 수 있다. 상기 데이터 읽기 요청을 하는 단계 (S123-1)및 상기 읽기 요청한 데이터를 복사하는 단계(S123-2)는 순차적으로 수행될 수 있다.Performing the read operation of the task (S123) may include requesting to read data (S123-1) and copying the data requested to be read (S123-2). The step of requesting to read the data (S123-1) and the step of copying the read-requested data (S123-2) may be sequentially performed.

상기 데이터 읽기 요청을 하는 단계에서는 태스크부(100)가 상기 범용 태스크 통신 API를 이용하여 데이터 읽기 요청을 할 수 있다. 상기 읽기 요청한 데이터를 복사하는 단계(S123-2)에서는 통신 중개부(320)가 가상 메모리 함수 집합을 이용하여 태스크의 버퍼로 읽기 요청한 데이터를 복사할 수 있다. 상기 통신 중개부(320)는 메모리에서 태스크로 복사 함수를 이용할 수 있다. 이때, 태스크 간 통신을 하는 태스크들이 속한 프로세싱부(10)의 관계에 따라서 상기 가상 메모리 함수 집합이 선택적으로 사용될 수 있다. In the step of making the data read request, the task unit 100 may make a data read request using the general task communication API. In the step of copying the read-requested data (S123-2), the communication intermediary unit 320 may copy the read-requested data to a buffer of a task using a set of virtual memory functions. The communication intermediary unit 320 may use a copy function from a memory to a task. In this case, the set of virtual memory functions may be selectively used according to a relationship between the processing unit 10 to which tasks communicating between tasks belong.

상기 태스크의 읽기 동작을 수행하는 단계(S123)는 동일한 프로세스에 속한 태스크들 간의 통신인 경우 채널에 데이터 읽기 요청을 하는 단계(S123a-1)이고, 상기 태스크의 버퍼로 데이터를 복사하는 단계는 읽기 요청한 데이터를 채널에서 태스크의 버퍼로 복사하는 단계(S123a-2)일 수 있다. 상기 채널에 데이터 읽기 요청을 하는 단계(S123a-1)에서는 태스크가 범용 태스크 통신 API를 이용하여 채널에 데이터 읽기 요청을 할 수 있다. 상기 읽기 요청한 데이터를 채널에서 태스크의 버퍼로 복사하는 단계(S123a-2)에서는 상기 가상 메모리 접근부(322)가 가상 메모리 함수 집합을 이용하여 읽기 요청한 데이터를 채널에서 태스크의 버퍼로 복사할 수 있다.The step of performing a read operation of the task (S123) is a step (S123a-1) of requesting a data read to a channel in case of communication between tasks belonging to the same process, and the step of copying the data to the buffer of the task is read It may be a step of copying the requested data from the channel to the buffer of the task (S123a-2). In the step of requesting data read from the channel (S123a-1), the task may make a data read request to the channel using a general task communication API. In the step of copying the read-requested data from the channel to the task buffer (S123a-2), the virtual memory access unit 322 may copy the read-requested data from the channel to the task buffer using a virtual memory function set. .

상기 태스크 간 통신을 하는 프로세싱부(10) 및 태스크는 복수개이며 상기 태스크들은 제1 프로세싱부(10)에 위치하는 제1 태스크 및 원격 프로세싱부(10)에 위치하는 제2 태스크를 포함할 수 있다.The processing unit 10 and a plurality of tasks for inter-task communication may include a first task located in the first processing unit 10 and a second task located in the remote processing unit 10. .

상기 태스크 간 통신이 개별 연결인 경우 상기 태스크의 읽기 동작을 수행하는 단계(S123)는 제1 프로세싱부의 송수신부에 데이터 읽기 요청을 송신하는 단계(S123b-1), 원격 프로세싱부의 수신 처리부로 읽기 요청을 전송하는 단계(S123b-2), 읽기 요청을 수신하는 단계(S123b-3), 채널 데이터를 임시 버퍼로 복사하는 단계(S123b-4), 읽기 요청한 데이터를 제1 프로세싱부의 송수신부에 전송하는 단계(S123b-5), 읽기 요청한 데이터를 수신하는 단계(S123b-6) 및 읽기 요청한 데이터를 제1 태스크의 버퍼로 복사하는 단계(S123b-7)를 포함할 수 있으며, 상기 단계들은 순차적으로 수행될 수 있다.When the communication between the tasks is an individual connection, the step of performing a read operation of the task (S123) includes transmitting a data read request to the transmission/reception unit of the first processing unit (S123b-1), and a read request to the reception processing unit of the remote processing unit Transmitting (S123b-2), receiving a read request (S123b-3), copying channel data to a temporary buffer (S123b-4), transmitting the read-requested data to the transmitting and receiving unit of the first processing unit Step (S123b-5), receiving the read-requested data (S123b-6), and copying the read-requested data to the buffer of the first task (S123b-7), the steps are performed sequentially Can be.

상기 제1 프로세싱부의 송수신부에 데이터 읽기 요청을 송신하는 단계(S123b-1)에서는 제1 태스크가 범용 태스크 통신 API를 이용하여 제1 프로세싱부(10)의 송수신부(321-1)에 데이터 읽기 요청을 송신할 수 있다. 상기 원격 프로세싱부의 수신 처리부로 읽기 요청을 전송하는 단계(S123b-2)에서는 제1 프로세싱부(10)의 송수신부(321-1)가 원격 프로세싱부(10)의 수신 처리부(321-3)로 읽기 요청을 전송할 수 있다.In the step of transmitting a data read request to the transmission/reception unit of the first processing unit (S123b-1), the first task reads data to the transmission/reception unit 321-1 of the first processing unit 10 using a general-purpose task communication API. You can send a request. In the step of transmitting a read request to the reception processing unit of the remote processing unit (S123b-2), the transmission/reception unit 321-1 of the first processing unit 10 is transferred to the reception processing unit 321-3 of the remote processing unit 10. You can send a read request.

상기 읽기 요청을 수신하는 단계(S123b-3)에서는 원격 프로세싱부(10)의 수신 처리부(321-3)가 상기 읽기 요청을 수신할 수 있다. 상기 채널 데이터를 임시 버퍼로 복사하는 단계(S123b-4)에서는 원격 프로세싱부(10)의 가상 메모리 접근부(322)가 채널 데이터를 임시 버퍼로 복사할 수 있다. 상기 채널 데이터를 임시 버퍼로 복사하는 단계(S123b-4)에서는 원격 프로세싱부(10)의 가상 메모리 접근부(322)가 메모리에서 태스크로 복사(copyFromMemory)함수를 이용하여 채널 데이터를 임시 버퍼로 복사할 수 있다. 상기 읽기 요청한 데이터를 제1 프로세싱부의 송수신부에 전송하는 단계(S123b-5)에서는 원격 프로세싱부(10)의 송수신부(321-1)가 읽기 요청한 데이터를 제1 프로세싱부(10)의 송수신부(321-1)에 전송할 수 있다. 상기 읽기 요청한 데이터를 제1 프로세싱부의 송수신부에 전송하는 단계(S123b-5)에서는 원격 프로세싱부(10)의 송수신부(321-1)의 직접 송수신부(321-1b)가 읽기 요청한 데이터를 제1 프로세싱부(10)의 송수신부(321-1)의 직접 송수신부(321-1b)에 전송할 수 있다. In the step of receiving the read request (S123b-3), the reception processing unit 321-3 of the remote processing unit 10 may receive the read request. In the step of copying the channel data to the temporary buffer (S123b-4), the virtual memory access unit 322 of the remote processing unit 10 may copy the channel data to the temporary buffer. In the step of copying the channel data to the temporary buffer (S123b-4), the virtual memory access unit 322 of the remote processing unit 10 copies the channel data to the temporary buffer using a copyFromMemory function. can do. In the step of transmitting the read-requested data to the transmission/reception unit of the first processing unit (S123b-5), the transmission/reception unit 321-1 of the remote processing unit 10 transmits the data requested to be read to the transmission/reception unit of the first processing unit 10 It can be transmitted to (321-1). In the step of transmitting the read-requested data to the transmitting/receiving unit of the first processing unit (S123b-5), the direct transmitting/receiving unit 321-1b of the transmitting/receiving unit 321-1 of the remote processing unit 10 receives the read-requested data. 1 It may be transmitted directly to the transmission/reception unit 321-1b of the transmission/reception unit 321-1 of the processing unit 10.

상기 읽기 요청한 데이터를 수신하는 단계(S123b-6)에서는 제1 프로세싱부(10)의 송수신부(321-1)가 상기 읽기 요청한 데이터를 수신할 수 있다. 상기 읽기 요청한 데이터를 제1 태스크의 버퍼로 복사하는 단계(S123b-7)에서는 제1 프로세싱부(10)의 가상 메모리 접근부(322)가 상기 수신한 읽기 요청한 데이터를 제1 태스크의 버퍼로 복사할 수 있다. 이때, 상기 가상 메모리 함수 집합중 태스크로 복사 (copyFromMemory)함수가 이용될 수 있다.In the step of receiving the read-requested data (S123b-6), the transmission/reception unit 321-1 of the first processing unit 10 may receive the read-requested data. In the step of copying the read-requested data to the buffer of the first task (S123b-7), the virtual memory access unit 322 of the first processing unit 10 copies the received read-requested data to the buffer of the first task can do. In this case, a function copyFromMemory may be used among the set of virtual memory functions.

예를 들면, 도 26과 같이 상기 태스크 간 통신이 개별 연결인 경우 상기 태스크의 읽기 동작을 수행하는 단계(S123)에서는 읽기 요청을 위하여 독자 태스크의 범용 태스크 통신 API부(310), 독자 태스크의 직접 송수신부(321-1b), 저자 태스크의 직접 송수신부(321-1b), 저자 태스크의 수신 처리부(321-3) 및 저자 태스크의 가상 메모리 접근부(322)가 순차적으로 수행되며, 상기 읽기 요청을 한 데이터를 반환하기 위하여 저자 태스크의 수신 처리부(321-3), 저자 태스크의 직접 송수신부(321-1b), 독자 태스크의 직접 송수신부(321-1b), 독자 태스크의 가상 메모리 접근부(322) 및 독자 태스크의 범용 태스크 통신 API부(310)가 순차적으로 수행될 수 있다.For example, as shown in FIG. 26, in the step of performing a read operation of the task (S123) when the communication between the tasks is an individual connection, the general task communication API unit 310 of the original task and the direct The transmission/reception unit 321-1b, the direct transmission/reception unit 321-1b of the author task, the reception processing unit 321-3 of the author task, and the virtual memory access unit 322 of the author task are sequentially performed, and the read request In order to return the data, the author task's receiving processing unit 321-3, the author's direct sending/receiving unit 321-1b, the original task's direct sending/receiving unit 321-1b, and the original task's virtual memory access unit ( 322) and the general-purpose task communication API unit 310 of the original task may be sequentially performed.

상기 통신을 수행하는 단계(S120)는 송신 데이터를 원격 프로세스로 송신하고, 수신한 데이터를 적합한 채널에 전송하는 단계(S124)를 더 포함할 수 있다. 상기 송신 데이터를 원격 프로세스로 송신하고, 수신한 데이터를 적합한 채널에 전송하는 단계(S124)에서는 통신 집합부(500)가 송수신하는 태스크들의 통신 방식을 하나의 통신 방식으로 가상화하여 송신 데이터를 원격 프로세스로 송신하고, 수신한 데이터를 적합한 채널에 전송할 수 있다.The step of performing the communication (S120) may further include a step (S124) of transmitting transmission data to a remote process and transmitting the received data to a suitable channel. In the step (S124) of transmitting the transmission data to a remote process and transmitting the received data to a suitable channel (S124), the communication method of the tasks transmitted and received by the communication aggregation unit 500 is virtualized as a single communication method, and the transmitted data is remotely processed. And transmits the received data to an appropriate channel.

상기 태스크 간 통신이 집합 연결이며 서비스 사용자의 역할인 경우, 상기 통신 서비스를 시작하기 위한 단계(S121)는 통신 정보를 생성(create)하는 단계(S121a-1), 원격 서비스 제공자와 연결하는 단계(S121a-2), 가상 소켓을 생성하는 단계(S121a-3) 및 가상 소켓을 통신 집합부에 전송하는 단계(S121a-4)를 포함할 수 있으며, 상기 단계들은 순차적으로 수행될 수 있다.When the communication between the tasks is a collective connection and the role of a service user, the step of starting the communication service (S121) includes the step of creating communication information (S121a-1), and the step of connecting with a remote service provider ( S121a-2), generating a virtual socket (S121a-3), and transmitting the virtual socket to the communication aggregation unit (S121a-4), and the steps may be sequentially performed.

상기 통신 정보를 생성(create)하는 단계(S121a-1)에서는 서비스 실행부(330)가 통신 정보를 생성(create)할 수 있다. 상기 원격 서비스 제공자와 연결하는 단계(S121a-2)에서는 서비스 실행부(330)가 연결(connect) 함수로 원격 서비스 제공자와 연결할 수 있다. 상기 가상 소켓을 생성하는 단계(S121a-3)에서는 서비스 실행부(330)가 가상 소켓을 생성할 수 있다. 상기 가상 소켓을 통신 집합부에 전송하는 단계(S121a-4)에서는 서비스 실행부(330)가 상기 가상 소켓을 통신 집합부(500)에 전송할 수 있다.In the step of creating the communication information (S121a-1), the service execution unit 330 may create the communication information. In the step of connecting with the remote service provider (S121a-2), the service execution unit 330 may connect with the remote service provider through a connect function. In the step of generating the virtual socket (S121a-3), the service execution unit 330 may generate the virtual socket. In the step of transmitting the virtual socket to the communication aggregation unit (S121a-4), the service execution unit 330 may transmit the virtual socket to the communication aggregation unit 500.

상기 태스크 간 통신에서 태스크가 서비스 제공자의 역할을 수행하는 경우 상기 통신 서비스를 시작하기 위한 단계(S121)는 서비스 제공자의 통신 정보를 생성(create)하는 단계(S121b-1), 연결 대기(listen)하는 단계(S121b-2) 및 집합 연결인지 판단하는 단계(S121b-3)를 포함할 수 있다. 이때, 상기 집합 연결인지 판단하는 단계(S121b-3)에서 통신이 집합 연결로 판단된 경우 상기 통신 서비스를 시작하기 위한 단계(S121)는 집합 연결을 수락(accept)하는 단계(S121b-4) 및 가상 소켓을 생성하고 이를 통신 집합부에 전송하는 단계(S121b-5)를 더 포함할 수 있으며, 상기 단계들은 순차적으로 수행될 수 있다. 이때, 상기 집합 연결인지 판단하는 단계(S121b-3)에서 통신이 집합 연결이 아닌 것으로 판단된 경우 상기 통신 서비스를 시작하기 위한 단계(S121)는 연결을 수락(accept)하는 단계(S121b-6), 채널의 통신 중개부에 전송하는 단계(S121b-7) 및 반복하는 단계(S121b-8)를 더 포함할 수 있으며, 상기 단계들은 순차적으로 수행될 수 있다.In the case where the task plays the role of a service provider in the inter-task communication, the step of starting the communication service (S121) is a step of creating communication information of the service provider (S121b-1), waiting for connection (listen) It may include a step (S121b-2) and a step (S121b-3) of determining whether the connection is set. In this case, when the communication is determined to be a collective connection in the determining whether the communication is the collective connection (S121b-3), the step of starting the communication service (S121) includes accepting the collective connection (S121b-4) and It may further include creating a virtual socket and transmitting it to the communication aggregation unit (S121b-5), and the steps may be performed sequentially. At this time, when it is determined that the communication is not the collective connection in the determining whether the communication is the collective connection (S121b-3), the step of starting the communication service (S121) is the step of accepting the connection (S121b-6). , The step of transmitting to the communication intermediary of the channel (S121b-7) and repeating (S121b-8) may be further included, and the steps may be performed sequentially.

서비스 제공자는 통신 생성(create) 및 연결 대기(listen)까지는 개별 연결과 집합 연결에서 동일하지만, 집합 연결인 경우 한 번의 수락(accept) 후, 통신 집합부(500)를 실행하고, 획득한 가상 소켓을 통신 집합부(500)에 전달하며, 개별 연결인 경우 두 프로세스 간의 모든 채널이 연결될 때까지 반복하는 단계(S121b-8)를 수행하여 지속적으로 새로운 연결을 수락할 수 있다.The service provider is the same for individual connection and collective connection until communication creation and connection wait (listen), but in the case of a collective connection, after one acceptance, the communication aggregation unit 500 is executed, and the acquired virtual socket Is transmitted to the communication aggregation unit 500, and in the case of an individual connection, a step (S121b-8) of repeating until all channels between the two processes are connected may be performed to continuously accept a new connection.

서비스 실행부(330)는 개별 연결인 경우와 집합 연결인 경우에 따라 동작이 다르기 때문에 연결 방법에 따라 다른 하위 모듈을 사용할 수 있다. 집합 연결과 관련된 연결을 다루는 모듈은 집합 연결 처리부(331)를 사용하고, 개별 연결에 대한 서비스 실행은 개별 연결 처리부(332)를 사용할 수 있다.The service execution unit 330 may use different sub-modules according to the connection method because the operation is different according to the case of the individual connection and the case of the collective connection. A module handling a connection related to the collective connection may use the collective connection processing unit 331, and the individual connection processing unit 332 may be used to execute a service for an individual connection.

상기 통신 정보를 생성(create)하는 단계(S121a-1)에서는 서비스 실행부(330)가 통신 정보를 생성(create)할 수 있다. 상기 연결 대기(listen)하는 단계(S121b-2)에서는 서비스 실행부(330)가 연결 대기(listen)할 수 있다. 상기 집합 연결인지 판단하는 단계(S121b-3)에서는 서비스 실행부(330)가 통신이 집합 연결인지 판단할 수 있다. 상기 집합 연결을 수락(accept)하는 단계(S121b-4)에서는 서비스 실행부(330)가 집합 연결을 수락(accept)할 수 있다. 상기 가상 소켓을 생성하고 이를 통신 집합부에 전송하는 단계(S121b-5)에서는 서비스 실행부(330)가 집합 연결이 수락(accept)된 경우 가상 소켓을 생성하고 이를 통신 집합부(500)에 전송할 수 있다. 상기 연결을 수락(accept)하는 단계(S121b-6)에서는 서비스 실행부(330)가 연결을 수락(accept)할 수 있다. 상기 채널의 통신 중개부에 전송하는 단계(S121b-7)에서는 서비스 실행부(330)가 연결이 수락(accept)된 경우 가상 소켓을 생성하고 이를 해당하는 채널의 통신 중개부(320)에 전송할 수 있다. 상기 반복하는 단계(S121b-8)에서는 서비스 실행부(330)가 모든 채널에 소켓이 전달될 때까지 상기 연결을 수락(accept)하는 단계(S121b-6) 및 상기 채널의 통신 중개부에 전송하는 단계(S121b-7)를 반복할 수 있다.In the step of creating the communication information (S121a-1), the service execution unit 330 may create the communication information. In the step of listening for connection (S121b-2), the service execution unit 330 may listen for connection. In determining whether the communication is a collective connection (S121b-3), the service execution unit 330 may determine whether the communication is a collective connection. In the step of accepting the collective connection (S121b-4), the service execution unit 330 may accept the collective connection. In the step of creating the virtual socket and transmitting it to the communication aggregation unit (S121b-5), the service execution unit 330 creates a virtual socket when the aggregation connection is accepted and transmits it to the communication aggregation unit 500. I can. In the step of accepting the connection (S121b-6), the service execution unit 330 may accept the connection. In the step of transmitting to the communication brokerage unit of the channel (S121b-7), when the connection is accepted by the service execution unit 330, a virtual socket may be created and transmitted to the communication brokerage unit 320 of the corresponding channel. have. In the repeating step (S121b-8), the service execution unit 330 accepts the connection until the socket is delivered to all channels (S121b-6) and transmits the connection to the communication broker of the channel. Step (S121b-7) may be repeated.

상기 태스크 간 통신이 집합 연결인 경우 상기 태스크의 읽기 동작을 수행하는 단계(S123)는 제1 프로세싱부(10)의 송수신부(321-1)에 데이터 읽기 요청을 전송하는 단계(S123c-1), 읽기 요청을 수신하여 제1 프로세싱부(10)의 통신 집합부(500)로 전송하는 단계(S123c-2), 원격 프로세싱부(10)의 통신 집합부(500)로 읽기 요청을 전송하는 단계(S123c-3), 읽기 요청을 수신하여 해당하는 채널의 원격 프로세싱부(10)의 수신 처리부(321-3)에 전송하는 단계(S123c-4), 원격 프로세싱부(10)의 가상 메모리 접근부(322)가 읽기 요청한 데이터를 임시 버퍼로 복사하는 단계(S123c-5), 원격 프로세싱부(10)의 통신 집합부(500)에 상기 읽기 요청한 데이터를 전송하는 단계(S123c-6), 제1 프로세싱부(10)의 통신 집합부(500)에 상기 읽기 요청한 데이터를 송신하는 단계(S123c-7), 해당하는 채널의 제1 프로세싱부(10)의 통신 집합 송수신부(321-1a)로 전송하는 단계(S123c-8) 및 제1 프로세싱부(10)의 가상 메모리 접근부(322)가 제1 태스크의 버퍼로 복사하는 단계(S123c-9)를 포함할 수 있으며, 상기 단계들은 순차적으로 수행될 수 있다.When the communication between the tasks is a collective connection, the step of performing a read operation of the task (S123) is a step of transmitting a data read request to the transmission/reception unit 321-1 of the first processing unit 10 (S123c-1). , Receiving a read request and transmitting it to the communication aggregation unit 500 of the first processing unit 10 (S123c-2), transmitting the read request to the communication aggregation unit 500 of the remote processing unit 10 (S123c-3), receiving a read request and transmitting the corresponding channel to the reception processing unit 321-3 of the remote processing unit 10 (S123c-4), the virtual memory access unit of the remote processing unit 10 Copying the read-requested data to a temporary buffer (S123c-5), transmitting the read-requested data to the communication aggregation unit 500 of the remote processing unit 10 (S123c-6), the first Transmitting the read-requested data to the communication aggregation unit 500 of the processing unit 10 (S123c-7), and transmitting the corresponding channel to the communication set transmission/reception unit 321-1a of the first processing unit 10 (S123c-8) and copying by the virtual memory access unit 322 of the first processing unit 10 to the buffer of the first task (S123c-9), and the steps are sequentially performed. Can be.

상기 제1 프로세싱부(10)의 송수신부(321-1)에 데이터 읽기 요청을 전송하는 단계(S123c-1)에서는 제1 태스크가 범용 태스크 통신 API를 이용하여 제1 프로세싱부(10)의 송수신부(321-1)에 데이터 읽기 요청을 전송할 수 있다. 상기 읽기 요청을 수신하여 제1 프로세싱부(10)의 통신 집합부(500)로 전송하는 단계(S123c-2)에서는 제1 프로세싱부(10)의 송수신부(321-1)가 상기 읽기 요청을 수신하여 제1 프로세싱부(10)의 통신 집합부(500)로 전송할 수 있다. 상기 원격 프로세싱부(10)의 통신 집합부(500)로 읽기 요청을 전송하는 단계(S123c-3)에서는 제1 프로세싱부(10)의 통신 집합부(500)가 원격 프로세싱부(10)의 통신 집합부(500)로 읽기 요청을 전송할 수 있다. In the step of transmitting a data read request to the transmission/reception unit 321-1 of the first processing unit 10 (S123c-1), the first task transmits and receives the first processing unit 10 using a general-purpose task communication API. A data read request may be transmitted to the unit 321-1. In the step of receiving the read request and transmitting it to the communication aggregation unit 500 of the first processing unit 10 (S123c-2), the transmission/reception unit 321-1 of the first processing unit 10 sends the read request It may be received and transmitted to the communication aggregation unit 500 of the first processing unit 10. In the step of transmitting a read request to the communication aggregation unit 500 of the remote processing unit 10 (S123c-3), the communication aggregation unit 500 of the first processing unit 10 communicates with the remote processing unit 10 A read request may be transmitted to the aggregation unit 500.

상기 읽기 요청을 수신하여 해당하는 채널의 원격 프로세싱부(10)의 수신 처리부(321-3)에 전송하는 단계(S123c-4)에서는 원격 프로세싱부(10)의 통신 집합부(500)가 상기 읽기 요청을 수신하여 해당하는 채널의 원격 프로세싱부(10)의 수신 처리부(321-3)에 전송할 수 있다. 상기 원격 프로세싱부(10)의 가상 메모리 접근부(322)가 읽기 요청한 데이터를 임시 버퍼로 복사하는 단계(S123c-5)에서는 해당 채널의 원격 프로세싱부(10)의 가상 메모리 접근부(322)가 읽기 요청한 데이터를 임시 버퍼로 복사할 수 있다. 이때, 가상 메모리 함수 집합 중 메모리에서 태스크로 복사(copyFromMemory)함수가 이용될 수 있다. 상기 원격 프로세싱부(10)의 통신 집합부(500)에 상기 읽기 요청한 데이터를 전송하는 단계(S123c-6)에서는 원격 프로세싱부(10)의 송수신부(321-1)가 상기 임시 버퍼로부터 원격 프로세싱부(10)의 통신 집합부(500)에 상기 읽기 요청한 데이터를 전송할 수 있다. 상기 제1 프로세싱부(10)의 통신 집합부(500)에 상기 읽기 요청한 데이터를 송신하는 단계(S123c-7)에서는 원격 프로세싱부(10)의 통신 집합부(500)가 제1 프로세싱부(10)의 통신 집합부(500)에 상기 읽기 요청한 데이터를 송신할 수 있다. In the step of receiving the read request and transmitting it to the reception processing unit 321-3 of the remote processing unit 10 of the corresponding channel (S123c-4), the communication aggregation unit 500 of the remote processing unit 10 The request may be received and transmitted to the reception processing unit 321-3 of the remote processing unit 10 of the corresponding channel. In the step of copying the data requested to be read by the virtual memory access unit 322 of the remote processing unit 10 to a temporary buffer (S123c-5), the virtual memory access unit 322 of the remote processing unit 10 of the corresponding channel Data requested to be read can be copied to a temporary buffer. In this case, a copyFromMemory function among the set of virtual memory functions may be used. In the step of transmitting the read-requested data to the communication aggregation unit 500 of the remote processing unit 10 (S123c-6), the transmission/reception unit 321-1 of the remote processing unit 10 performs remote processing from the temporary buffer. The read-requested data may be transmitted to the communication aggregation unit 500 of the unit 10. In the step of transmitting the read-requested data to the communication aggregation unit 500 of the first processing unit 10 (S123c-7), the communication aggregation unit 500 of the remote processing unit 10 performs the first processing unit 10 The read-requested data may be transmitted to the communication aggregation unit 500 of ).

상기 해당하는 채널의 제1 프로세싱부(10)의 통신 집합 송수신부(321-1a)로 전송하는 단계(S123c-8)에서는 제1 프로세싱부(10)의 통신 집합부(500)가 상기 읽기 요청한 데이터를 수신하여 해당하는 채널의 제1 프로세싱부(10)의 통신 집합 송수신부(321-1a)로 전송할 수 있다. 상기 제1 프로세싱부(10)의 가상 메모리 접근부(322)가 제1 태스크의 버퍼로 복사하는 단계(S123c-9)에서는 수신한 상기 읽기 요청한 데이터를 제1 프로세싱부(10)의 가상 메모리 접근부(322)가 제1 태스크의 버퍼로 복사할 수 있다. 이때, 가상 메모리 함수 집합 중 메모리에서 태스크로 복사(copyFromMemory)함수가 이용될 수 있다. In the step of transmitting the corresponding channel to the communication set transmission/reception unit 321-1a of the first processing unit 10 (S123c-8), the communication aggregation unit 500 of the first processing unit 10 requests the read Data may be received and transmitted to the communication set transmission/reception unit 321-1a of the first processing unit 10 of the corresponding channel. In the step of copying the virtual memory access unit 322 of the first processing unit 10 to the buffer of the first task (S123c-9), the read-requested data is accessed by the first processing unit 10 The unit 322 may copy to the buffer of the first task. In this case, a copyFromMemory function among the set of virtual memory functions may be used.

예를 들면, 도 27과 같이 상기 태스크 간 통신이 집합 연결인 경우 상기 태스크의 읽기 동작을 수행하는 단계(S123)에서는 읽기 요청을 위하여 독자 태스크의 범용 태스크 통신 API부(310), 독자 태스크의 통신 집합 송수신부(321-1a), 독자 태스크의 통신 집합부(500), 저자 태스크의 통신 집합부(500), 저자 태스크의 통신 집합 송수신부(321-1a), 저자 태스크의 수신 처리부(321-3) 및 저자 태스크의 가상 메모리 접근부(322)가 순차적으로 수행되며, 상기 읽기 요청을 한 데이터를 반환하기 위하여 저자 태스크의 통신 집합 송수신부(321-1a), 저자 태스크의 통신 집합부(500), 독자 태스크의 통신 집합부(500), 독자 태스크의 통신 집합 송수신부(321-1a), 독자 태스크의 가상 메모리 접근부(322) 및 독자 태스크의 범용 태스크 통신 API부(310)가 순차적으로 수행될 수 있다.For example, as shown in FIG. 27, in the step of performing a read operation of the task (S123) when the communication between the tasks is a collective connection, the general task communication API unit 310 of the original task and the communication of the original task A set transmission/reception unit 321-1a, a communication aggregation unit 500 for an original task, a communication aggregation unit 500 for an author task, a communication set transmission/reception unit 321-1a for an author task, a reception processing unit 321- for an author task 3) and the virtual memory access unit 322 of the author task are sequentially performed, and the communication set transmission/reception unit 321-1a of the author task and the communication aggregation unit 500 of the author task are performed in order to return the data requested to read. ), the communication aggregation unit 500 of the original task, the communication set transmission/reception unit 321-1a of the original task, the virtual memory access unit 322 of the original task, and the general task communication API unit 310 of the original task sequentially Can be done.

본 발명의 실시예들에 따르면, 태스크 간 통신 방법 및 시스템은 집합 연결, 개별 연결 및 원격 프로세스 여부에 따라서 가변적인 가상 통신 모듈을 생성하고 이를 이용하여 통신을 수행할 수 있다. 따라서, 다양한 종류의 태스크 간 통신을 지원하며 선택적 모듈의 사용으로 인하여 효율적인 통신을 지원할 수 있다.According to embodiments of the present invention, a method and system for communication between tasks may perform communication by creating and using a variable virtual communication module according to whether a collective connection, an individual connection, or a remote process exists. Accordingly, communication between various types of tasks is supported, and efficient communication can be supported by using an optional module.

이상에서는 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 통상의 기술자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although the above has been described with reference to embodiments, those skilled in the art can variously modify and change the present invention without departing from the spirit and scope of the present invention described in the following claims. You will understand that there is.

10: 프로세싱부
100: 태스크부
200: 인터페이스 정보 생성부
300: 인터페이스 라이브러리부
400: 통신 집합부
10: processing unit
100: task unit
200: interface information generation unit
300: interface library unit
400: communication aggregation unit

Claims (20)

태스크(task) 및 태스크 간 통신을 수행하는 프로세스(process)를 수행하는 프로세싱부를 포함하고,
상기 프로세싱부는,
태스크를 수행하는 하나 이상의 태스크부;
상기 태스크의 통신과 관련된 정보를 포함하는 인터페이스 정보를 생성하는 인터페이스 정보 생성부;
상기 인터페이스 정보에 포함되는 태스크 간에 연결되어 있는 채널 정보, 각 채널의 통신 방법, 프로세스 간의 통신 연결 정보 및 각 통신 연결에 대한 집합 연결 여부에 관한 정보에 따라 태스크의 통신 방법을 달리하는 가상 통신 모듈을 생성하고 이를 이용하여 통신을 수행하며, 통신을 위한 범용 통신 API를 포함하는 범용 태스크 통신 API부, 통신을 하는 태스크 간의 데이터 송수신을 중개하며 메모리 할당(createMemory) 함수, 메모리 해제(destroyMemory) 함수, 태스크에서 메모리로 복사(copyToMemory) 함수 및 메모리에서 태스크로 복사(copyFromMemory) 함수를 포함하는 가상 메모리 함수 집합 중 상기 태스크에서 메모리로 복사(copyToMemory) 함수를 이용하여 태스크의 쓰기 동작을 수행하고 상기 메모리에서 태스크로 복사(copyFromMemory) 함수를 이용하여 태스크의 읽기 동작을 수행하는 통신 중개부 및 통신 서비스를 시작하기 위한 서비스 실행부를 포함하는 인터페이스 라이브러리부; 및
송수신하는 태스크들의 통신 방식을 하나의 통신 방식으로 가상화하는 가상 통신부를 포함하는 태스크 간 통신 시스템.
A processing unit that performs a task and a process for performing communication between tasks,
The processing unit,
At least one task unit for performing a task;
An interface information generation unit that generates interface information including information related to communication of the task;
A virtual communication module that changes the communication method of the task according to the channel information connected between the tasks included in the interface information, the communication method of each channel, the communication connection information between processes, and the information on whether a group connection for each communication connection is made. A general-purpose task communication API that creates and uses it to perform communication, and includes a general-purpose communication API for communication, mediates data transmission/reception between communication tasks, and a memory allocation (createMemory) function, a memory release (destroyMemory) function, a task The task write operation is performed using the task-to-memory copy (copyToMemory) function among a set of virtual memory functions including a copyToMemory function and a copyFromMemory function. An interface library unit including a communication intermediary unit for performing a read operation of a task using a copyFromMemory function and a service execution unit for starting a communication service; And
Inter-task communication system comprising a virtual communication unit for virtualizing a communication method of the tasks to be transmitted and received in one communication method.
제1항에 있어서, 상기 인터페이스 정보 생성부는 태스크 매핑을 이용하여 상기 프로세스 별로 인터페이스 정보를 생성하는 태스크 간 통신 시스템.
The inter-task communication system of claim 1, wherein the interface information generation unit generates interface information for each process using task mapping.
제1항에 있어서, 상기 인터페이스 정보는,
채널의 식별자, 데이터를 송신하는 저자(Writer) 태스크의 정보, 데이터를 수신하는 독자(Reader) 태스크의 정보 및 해당 채널이 상기 프로세스 내에서 사용하게 될 가상 메모리 함수 집합에 관한 정보를 포함하는 채널 정보를 포함하고,
원격 통신인 경우 통신별로 사용하는 통신 종류, 통신 역할 분류, 연결 방식, 통신 세부 정보 및 해당 통신의 가상 통신부의 함수 집합 정보를 포함하며 채널별로 원격 통신을 사용하는 경우 사용할 원격 통신에 관한 정보를 더 포함하는 통신 정보를 포함하는 태스크 간 통신 시스템.
The method of claim 1, wherein the interface information,
Channel information including the identifier of the channel, information on the writer task sending data, information on the reader task receiving data, and information on the set of virtual memory functions that the channel will use in the process Including,
In the case of remote communication, the type of communication used for each communication, the classification of the communication role, the connection method, communication details, and function set information of the virtual communication unit of the corresponding communication are included. Inter-task communication system that includes communication information to include.
제1항에 있어서, 상기 범용 통신 API는 통신 채널의 식별자 값, 통신 송수신에 사용될 데이터의 버퍼 정보 및 통신 송수신에 사용될 데이터의 길이 정보를 포함하는 태스크 간 통신 시스템.
The inter-task communication system of claim 1, wherein the universal communication API includes an identifier value of a communication channel, buffer information of data to be used for communication transmission/reception, and length information of data to be used for communication transmission/reception.
제1항에 있어서, 상기 통신 중개부는,
서로 상이한 프로세스에 속한 태스크들 간의 데이터 송수신을 중개하는 원격 통신부; 및
통신을 하는 태스크에서 메모리를 참조할 경우에 통신을 위한 데이터 복사를 수행하는 가상 메모리 접근부를 포함하는 태스크 간 통신 시스템.
The method of claim 1, wherein the communication intermediary unit,
A remote communication unit that mediates data transmission/reception between tasks belonging to different processes; And
Inter-task communication system including a virtual memory access unit that copies data for communication when a memory is referred to in a communication task.
제5항에 있어서, 상기 가상 메모리 함수 집합은,
동일한 프로세싱부에 속한 태스크들 간의 통신을 위한 제1 가상 메모리 함수 집합;
동일한 종류의 서로 다른 프로세싱부에 속한 태스크들 간의 통신을 위한 제2 가상 메모리 함수 집합; 및
서로 상이한 종류의 서로 다른 프로세싱부에 속한 태스크들 간의 통신을 위한 제3 가상 메모리 함수 집합을 포함하는 태스크 간 통신 시스템.
The method of claim 5, wherein the set of virtual memory functions,
A first set of virtual memory functions for communication between tasks belonging to the same processing unit;
A second set of virtual memory functions for communication between tasks belonging to different processing units of the same type; And
Inter-task communication system including a third set of virtual memory functions for communication between tasks belonging to different processing units of different types.
제5항에 있어서, 상기 원격 통신부는,
원격 통신시에 데이터의 송수신을 수행하는 송수신부;
상대 원격 프로세스와의 초기 통신 연결을 수행하는 연결부; 및
저자 버퍼를 포함하는 저자(Writer) 태스크로 수신되는 데이터를 처리하는 수신 처리부를 포함하는 태스크 간 통신 시스템.
The method of claim 5, wherein the remote communication unit,
A transceiver for transmitting and receiving data during remote communication;
A connection unit for performing initial communication connection with a counterpart remote process; And
Task-to-task communication system including a reception processing unit that processes data received by a writer task including an author buffer.
제7항에 있어서, 상기 송수신부는,
하나의 연결로 복수개의 태스크 간의 통신을 모두 공유하는 통신 집합 연결 방법으로 데이터를 송수신하는 통신 집합 송수신부; 및
각 태스크 간에 개별적으로 연결하는 개별 연결 방법으로 데이터를 송수신하는 직접 송수신부를 포함하는 태스크 간 통신 시스템.
The method of claim 7, wherein the transmission and reception unit,
A communication set transmission/reception unit for transmitting and receiving data in a communication set connection method for sharing all communication between a plurality of tasks through one connection; And
Task-to-task communication system including a direct transmission/reception unit for transmitting and receiving data in an individual connection method that connects each task individually.
제1항에 있어서, 상기 가상 통신부는 상기 태스크 또는 상기 프로세스의 통신 방식에 따라서 통신 생성(create), 통신 소멸(destroy), 연결(connect), 연결 해제(disconnect), 수락(accept), 송신(send), 수신(receive) 및 연결 대기(listen) 함수로부터 상기 통신 방식에 필요한 가상 함수를 생성하고, 이로부터 각 태스크 간의 연결 별 또는 같은 방식으로 통신하는 태스크들의 집합 연결별로 가상 소켓을 생성하는 태스크 간 통신 시스템.
The method of claim 1, wherein the virtual communication unit creates, destroys, connects, disconnects, accepts, and transmits communication according to a communication method of the task or the process. A task that creates a virtual function required for the communication method from the send), receive, and wait for connection functions, and creates a virtual socket for each connection between each task or a set of tasks communicating in the same manner from this Inter-communication system.
제1항에 있어서, 상기 서비스 실행부는,
집합 연결로 통신을 하는 경우 통신을 직접 연결하는 집합 연결 처리부; 및
개별 연결로 통신을 하는 경우 개별 연결을 위한 서버를 시작하고 원격 프로세스의 개별 연결 요청을 처리하는 개별 연결 처리부를 포함하는 태스크 간 통신 시스템.
The method of claim 1, wherein the service execution unit,
A set connection processing unit for directly connecting the communication when communicating through a set connection; And
When communicating over individual connections, a task-to-task communication system that includes an individual connection processor that starts a server for the individual connection and processes individual connection requests from remote processes.
제1항에 있어서, 상기 프로세싱부는 송수신하는 태스크들의 통신 방식을 하나의 통신 방식으로 가상화하며 통신 서비스의 집합 연결을 수행하거나 다수의 개별 연결을 동시에 수행시 송신 데이터를 원격 프로세스로 송신하는 통신 집합부를 포함하는 태스크 간 통신 시스템.
The method of claim 1, wherein the processing unit virtualizes the communication method of the tasks to be transmitted/received as one communication method and transmits transmission data to a remote process when performing collective connection of communication services or performing multiple individual connections simultaneously. A system of communication between tasks containing.
프로세싱부가 태스크 간 통신을 수행하는 프로세스를 수행하는 단계를 포함하고,
상기 프로세스를 수행하는 단계는;
인터페이스 정보 생성부가 태스크의 통신과 관련된 정보를 포함하는 인터페이스 정보를 생성하는 단계; 및
인터페이스 라이브러리부가 상기 인터페이스 정보에 포함되는 태스크 간에 연결되어 있는 채널 정보, 각 채널의 통신 방법, 프로세스 간의 통신 연결 정보 및 각 통신 연결에 대한 집합 연결 여부에 관한 정보에 따라 태스크의 통신 방법을 달리하는 가상 통신 모듈을 생성하고 통신을 수행하는 단계를 포함하고,
상기 통신을 수행하는 단계는,
서비스 실행부가 통신 서비스를 시작하기 위한 단계;
태스크부가 범용 태스크 통신 API를 이용하여 채널에 데이터 쓰기 요청을 하는 단계 및 통신 중개부가 가상 메모리 할당(createMemory) 함수, 메모리 해제(destroyMemory) 함수, 태스크에서 메모리로 복사(copyToMemory) 함수 및 메모리에서 태스크로 복사(copyFromMemory) 함수를 포함하는 메모리 함수 집합 중 상기 태스크에서 메모리로 복사(copyToMemory) 함수를 이용하여 채널의 버퍼로 쓰기 요청한 데이터를 복사하는 단계를 포함하는 태스크의 쓰기 동작을 수행하는 단계; 및
태스크부가 범용 태스크 통신 API를 이용하여 데이터 읽기 요청을 하는 단계 및 통신 중개부가 메모리 할당(createMemory) 함수, 메모리 해제(destroyMemory) 함수, 태스크에서 메모리로 복사(copyToMemory) 함수 및 메모리에서 태스크로 복사(copyFromMemory) 함수를 포함하는 가상 메모리 함수 집합 중 상기 메모리에서 태스크로 복사(copyFromMemory) 함수를 이용하여 태스크의 버퍼로 읽기 요청한 데이터를 복사하는 단계를 포함하는 태스크의 읽기 동작을 수행하는 단계를 포함하는 태스크 간 통신 방법.
The processing unit includes performing a process of performing communication between tasks,
Performing the process includes;
Generating, by the interface information generation unit, interface information including information related to communication of the task; And
The interface library unit changes the communication method of the task according to the channel information connected between tasks included in the interface information, the communication method of each channel, the communication connection information between processes, and information on whether a group connection for each communication connection is made. Including the step of creating a communication module and performing communication,
The step of performing the communication,
Step for the service execution unit to start the communication service;
The task unit makes a request to write data to the channel using the general task communication API, and the communication intermediary unit performs a virtual memory allocation (createMemory) function, a memory release (destroyMemory) function, a task-to-memory copy (copyToMemory) function, and a memory-to-task. Performing a write operation of a task including copying data requested to be written to a buffer of a channel using a copyToMemory function from among a set of memory functions including a copy (copyFromMemory) function; And
The task unit makes a data read request using the general task communication API, and the communication intermediary unit performs a memory allocation (createMemory) function, a memory release (destroyMemory) function, a task-to-memory copy (copyToMemory) function, and a memory-to-task copy (copyFromMemory) function. Between tasks including performing a read operation of a task, including copying the read-requested data from the memory to a task buffer using a copyFromMemory function among a set of virtual memory functions including a) function Communication method.
제12항에 있어서, 상기 인터페이스 정보를 생성하는 단계에서는 태스크 매핑을 이용하여 상기 프로세스 별로 인터페이스 정보를 생성하는 태스크 간 통신 방법.
The method of claim 12, wherein in the generating of the interface information, the interface information is generated for each process by using task mapping.
제12항에 있어서, 상기 인터페이스 정보는,
채널의 식별자, 데이터를 송신하는 저자(Writer) 태스크의 정보, 데이터를 수신하는 독자(Reader) 태스크의 정보 및 해당 채널이 상기 프로세스 내에서 사용하게 될 가상 메모리 함수 집합에 관한 정보를 포함하는 채널 정보를 포함하고,
원격 통신인 경우 통신별로 사용하는 통신 종류, 통신 역할 분류, 연결 방식, 통신 세부 정보 및 해당 통신의 가상 통신부의 함수 집합 정보를 포함하며 채널별로 원격 통신을 사용하는 경우 사용할 원격 통신에 관한 정보를 더 포함하는 통신 정보를 포함하는 태스크 간 통신 방법.
The method of claim 12, wherein the interface information,
Channel information including the identifier of the channel, information on the writer task sending data, information on the reader task receiving data, and information on the set of virtual memory functions that the channel will use in the process Including,
In the case of remote communication, the type of communication used for each communication, the classification of the communication role, the connection method, communication details, and function set information of the virtual communication unit of the corresponding communication are included. Inter-task communication method including communication information to include.
제12항에 있어서, 상기 통신을 수행하는 단계는 통신 집합부가 송수신하는 태스크들의 통신 방식을 하나의 통신 방식으로 가상화하여 송신 데이터를 원격 프로세스로 송신하는 단계를 포함하는 태스크 간 통신 방법.
The method of claim 12, wherein the performing of the communication comprises virtualizing a communication method of tasks transmitted and received by the communication aggregation unit into a single communication method and transmitting transmission data to a remote process.
제15항에 있어서, 상기 통신 서비스를 시작하기 위한 단계는 상기 태스크 간 통신이 집합 연결이며 서비스 사용자의 역할인 경우,
서비스 실행부가 통신 정보를 생성(create)하는 단계;
서비스 실행부가 연결 함수로 원격 서비스 제공자와 연결하는 단계; 및
서비스 실행부가 가상 소켓을 생성하는 단계; 및
서비스 실행부가 상기 가상 소켓을 통신 집합부에 전송하는 단계를 더 포함하는 태스크 간 통신 방법.
The method of claim 15, wherein the step of starting the communication service is when the communication between the tasks is a collective connection and a role of a service user,
Generating communication information by a service execution unit;
Connecting, by a service execution unit, a remote service provider through a connection function; And
Creating a virtual socket by the service execution unit; And
Inter-task communication method further comprising the step of the service execution unit transmitting the virtual socket to the communication aggregation unit.
제15항에 있어서, 상기 통신 서비스를 시작하기 위한 단계는 상기 태스크 간 통신이 서비스 제공자인 경우,
서비스 실행부가 서비스 제공자의 통신 정보를 생성(create)하는 단계;
서비스 실행부가 연결 대기(listen)하는 단계; 및
서비스 실행부가 통신이 집합 연결인지 판단하는 단계를 포함하고,
상기 집합 연결인지 판단하는 단계에서 통신이 집합 연결로 판단된 경우,
서비스 실행부가 집합 연결을 수락(accept)하는 단계; 및
서비스 실행부가 집합 연결이 수락(accept)된 경우 가상 소켓을 생성하고 이를 통신 집합부에 전송하는 단계를 포함하고,
상기 집합 연결인지 판단하는 단계에서 통신이 집합 연결이 아닌 것으로 판단된 경우,
서비스 실행부가 연결을 수락(accept)하는 단계;
서비스 실행부가 연결이 수락(accept)된 경우 가상 소켓을 생성하고 이를 해당하는 채널의 통신 중개부에 전송하는 단계; 및
서비스 실행부가 모든 채널에 소켓이 전달될 때까지 상기 연결을 수락(accept)하는 단계 및 상기 채널의 통신 중개부에 전송하는 단계를 반복하는 단계를 포함하는 태스크 간 통신 방법.
The method of claim 15, wherein the step of starting the communication service is when the inter-task communication is a service provider,
Generating, by a service execution unit, communication information of a service provider;
Waiting for connection by the service execution unit; And
The service execution unit includes the step of determining whether the communication is a collective connection,
In the step of determining whether the connection is a collective connection, when the communication is determined to be a collective connection,
The service execution unit accepting the collective connection; And
When the service execution unit accepts the collective connection, creating a virtual socket and transmitting it to the communication aggregation unit,
When it is determined that communication is not a collective connection in the step of determining whether the connection is a collective connection,
Accepting the connection by the service execution unit;
Creating a virtual socket when a connection is accepted by the service execution unit and transmitting it to a communication intermediary unit of a corresponding channel; And
And repeating the step of accepting the connection until the service execution unit has delivered the socket to all channels and transmitting the step to the communication intermediary unit of the channel.
제15항에 있어서, 상기 태스크 간 통신을 하는 프로세싱부 및 태스크는 복수개이며 상기 태스크들은,
제1 프로세싱부에 위치하는 제1 태스크; 및
원격 프로세싱부에 위치하는 제2 태스크를 포함하고,
상기 태스크 간 통신이 집합 연결인 경우 상기 태스크의 읽기 동작을 수행하는 단계는,
제1 태스크가 범용 태스크 통신 API를 이용하여 제1 프로세싱부의 송수신부에 데이터 읽기 요청을 전송하는 단계;
제1 프로세싱부의 송수신부가 상기 읽기 요청을 수신하여 제1 프로세싱부의 통신 집합부로 전송하는 단계;
제1 프로세싱부의 통신 집합부가 원격 프로세싱부의 통신 집합부로 읽기 요청을 전송하는 단계;
원격 프로세싱부의 통신 집합부가 상기 읽기 요청을 수신하여 해당하는 채널의 원격 프로세싱부의 수신 처리부에 전송하는 단계;
해당 채널의 원격 프로세싱부의 가상 메모리 접근부가 읽기 요청한 데이터를 임시 버퍼로 복사하는 단계;
원격 프로세싱부의 송수신부가 상기 임시 버퍼로부터 원격 프로세싱부의 통신 집합부에 상기 읽기 요청한 데이터를 전송하는 단계;
원격 프로세싱부의 통신 집합부가 제1 프로세싱부의 통신 집합부에 상기 읽기 요청한 데이터를 송신하는 단계;
제1 프로세싱부의 통신 집합부가 상기 읽기 요청한 데이터를 수신하여 해당하는 채널의 제1 프로세싱부의 통신 집합 송수신부로 전송하는 단계;
수신한 상기 읽기 요청한 데이터를 제1 프로세싱부의 가상 메모리 접근부가 제1 태스크의 버퍼로 복사하는 단계인 태스크 간 통신 방법.
The method of claim 15, wherein the processing unit and the task for communicating between the tasks are plural, and the tasks are,
A first task located in the first processing unit; And
Including a second task located in the remote processing unit,
When the communication between the tasks is a collective connection, performing a read operation of the task,
Transmitting, by the first task, a data read request to a transmission/reception unit of a first processing unit using a general purpose task communication API;
Receiving the read request by a transmitting/receiving unit of a first processing unit and transmitting it to a communication aggregation unit of a first processing unit;
Transmitting, by the communication aggregation unit of the first processing unit, a read request to the communication aggregation unit of the remote processing unit;
Receiving the read request by the communication aggregation unit of the remote processing unit and transmitting the received read request to the receiving processing unit of the remote processing unit of the corresponding channel;
Copying data requested to be read by a virtual memory access unit of a remote processing unit of a corresponding channel to a temporary buffer;
Transmitting, by a transmission/reception unit of a remote processing unit, the read-requested data from the temporary buffer to a communication aggregation unit of a remote processing unit;
Transmitting, by a communication aggregation unit of a remote processing unit, the read-requested data to a communication aggregation unit of a first processing unit;
Receiving the read-requested data by a communication aggregation unit of a first processing unit and transmitting the data to a communication aggregation transmission/reception unit of a first processing unit of a corresponding channel;
Inter-task communication method comprising the step of copying the received read-requested data to a buffer of a first task by a virtual memory access unit of a first processing unit.
제12항에 있어서, 동일한 프로세스에 속한 태스크들 간의 통신인 경우,
상기 데이터 읽기 요청을 하는 단계는 태스크가 범용 태스크 통신 API를 이용하여 채널에 데이터 읽기 요청을 하는 단계이고,
상기 태스크의 버퍼로 읽기 요청한 데이터를 복사하는 단계는 가상 메모리 접근부가 가상 메모리 함수 집합을 이용하여 읽기 요청한 데이터를 채널에서 태스크의 버퍼로 복사하는 단계인 태스크 간 통신 방법.
The method of claim 12, wherein in the case of communication between tasks belonging to the same process,
The step of making the data read request is a step in which the task makes a data read request to the channel using a general task communication API,
The copying of the read-requested data to the task buffer is a step in which a virtual memory access unit copies the read-requested data from a channel to a buffer of a task using a set of virtual memory functions.
제12항에 있어서, 상기 태스크 간 통신을 하는 프로세싱부 및 태스크는 복수개이며 상기 태스크들은,
제1 프로세싱부에 위치하는 제1 태스크; 및
원격 프로세싱부에 위치하는 제2 태스크를 포함하고,
상기 태스크 간 통신이 개별 연결인 경우 상기 태스크의 읽기 동작을 수행하는 단계는,
제1 태스크가 범용 태스크 통신 API를 이용하여 제1 프로세싱부의 송수신부에 데이터 읽기 요청을 송신하는 단계;
제1 프로세싱부의 송수신부가 원격 프로세싱부의 수신 처리부로 읽기 요청을 전송하는 단계;
원격 프로세싱부의 수신 처리부가 상기 읽기 요청을 수신하는 단계;
원격 프로세싱부의 가상 메모리 접근부가 채널 데이터를 임시 버퍼로 복사하는 단계;
원격 프로세싱부의 송수신부가 읽기 요청한 데이터를 제1 프로세싱부의 송수신부에 전송하는 단계;
제1 프로세싱부의 송수신부가 상기 읽기 요청한 데이터를 수신하는 단계; 및
제1 프로세싱부의 가상 메모리 접근부가 상기 수신한 읽기 요청한 데이터를 제1 태스크의 버퍼로 복사하는 단계인 태스크 간 통신 방법.
The method of claim 12, wherein the processing unit and the task for communicating between the tasks are plural, and the tasks are,
A first task located in the first processing unit; And
Including a second task located in the remote processing unit,
When the communication between the tasks is an individual connection, the step of performing a read operation of the task,
Transmitting, by the first task, a data read request to a transmission/reception unit of a first processing unit by using a general purpose task communication API;
Transmitting a read request by a transmitting/receiving unit of the first processing unit to a receiving processing unit of the remote processing unit;
Receiving the read request by a reception processing unit of a remote processing unit;
Copying the channel data to the temporary buffer by the virtual memory access unit of the remote processing unit;
Transmitting the data requested to be read by the transmission/reception unit of the remote processing unit to the transmission/reception unit of the first processing unit;
Receiving the read-requested data by a transmission/reception unit of a first processing unit; And
Inter-task communication method comprising the step of copying the received read-requested data by a virtual memory access unit of a first processing unit to a buffer of a first task.
KR1020190025263A 2019-03-05 2019-03-05 Method for task communication on heterogeneous network and system using thereof KR102160014B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190025263A KR102160014B1 (en) 2019-03-05 2019-03-05 Method for task communication on heterogeneous network and system using thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190025263A KR102160014B1 (en) 2019-03-05 2019-03-05 Method for task communication on heterogeneous network and system using thereof

Publications (2)

Publication Number Publication Date
KR20200106704A KR20200106704A (en) 2020-09-15
KR102160014B1 true KR102160014B1 (en) 2020-09-25

Family

ID=72450642

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190025263A KR102160014B1 (en) 2019-03-05 2019-03-05 Method for task communication on heterogeneous network and system using thereof

Country Status (1)

Country Link
KR (1) KR102160014B1 (en)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2008304105B2 (en) * 2007-09-27 2013-08-29 Hilton, Ronald N Apparatus, system, and method for cross-system proxy-based task offloading
KR101283026B1 (en) * 2007-10-09 2013-07-05 현대자동차주식회사 System for real time control of total control system and method thereof
CN111628885A (en) * 2014-01-17 2020-09-04 诺基亚通信有限责任两合公司 Controlling a communication network comprising virtualized network functions
US20160072908A1 (en) 2014-09-09 2016-03-10 James Dinan Technologies for proxy-based multi-threaded message passing communication

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
C. Lee 외 5명. 'A task remapping technique for reliable multi-core embedded systems'. IEEE/ACM/IFIP International Conference on Hardware/Software Codesign and System Synthesis, 2010.10., pp.307-316.
블로그 게시물, '태스크간의 통신(메일박스 & 메시지 큐)', 2012.1.8. (https://jbear.tistory.com/entry/%ED%85%8C%EC%8A%A4%ED%81%AC%EA%B0%84%EC%9D%98-%ED%86%B5%EC%8B%A0-%EB%A9%94%EC%9D%BC%EB%B0%95%EC%8A%A4-%EB%A9%94%EC%84%B8%)

Also Published As

Publication number Publication date
KR20200106704A (en) 2020-09-15

Similar Documents

Publication Publication Date Title
US10698717B2 (en) Accelerator virtualization method and apparatus, and centralized resource manager
WO2018035856A1 (en) Method, device and system for implementing hardware acceleration processing
RU2645595C2 (en) Upload of virtual machine streams to physical queues
JP5214473B2 (en) Virtual machine migration system with resources such as hardware devices
CN105122210B (en) GPU virtualization implementation method and related device and system
US7231638B2 (en) Memory sharing in a distributed data processing system using modified address space to create extended address space for copying data
WO2019195003A1 (en) Virtual rdma switching for containerized applications
CN114553635B (en) Data processing method, data interaction method and product in DPU network equipment
CN105389199B (en) A kind of FPGA accelerator virtual platform and application based on Xen
WO2016065643A1 (en) Network card configuration method and resource management center
CN113312143B (en) Cloud computing system, command processing method and virtualization simulation device
US20180219797A1 (en) Technologies for pooling accelerator over fabric
US20220191153A1 (en) Packet Forwarding Method, Computer Device, and Intermediate Device
WO2018076882A1 (en) Operating method for storage device, and physical server
CN104123265A (en) Method and system for communication among multiple kernels
WO2022048419A1 (en) Method for transmission by usb, and electronic device
WO2019174074A1 (en) Method for processing service data, and network device
CN116886751B (en) High-speed communication method and device of heterogeneous equipment and heterogeneous communication system
TW201926951A (en) Platform as a service cloud server and multi-tenant operating method thereof
WO2023165431A1 (en) Device access method and system for secure container
CN114691286A (en) Server system, virtual machine creation method and device
KR102160014B1 (en) Method for task communication on heterogeneous network and system using thereof
US20230153153A1 (en) Task processing method and apparatus
CN116860391A (en) GPU computing power resource scheduling method, device, equipment and medium
CN112367362A (en) Data processing method, device and equipment and computer storage medium

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant