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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- H04L67/2809—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
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
본 발명은 혼합 네트워크상에서의 태스크 간 통신 방법 및 혼합 네트워크상에서의 태스크 간 통신 시스템에 관한 것이다. 보다 상세하게는 고성능 네트워크와 저성능 네트워크가 혼재된 혼합 네트워크상에서 하나 이상의 기기들이 수행하는 복수개의 태스크들이 통신할 수 있는 혼합 네트워크상에서의 태스크 간 통신 방법 및 혼합 네트워크상에서의 태스크 간 통신 시스템에 관한 것이다.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.
이에 본 발명의 기술적 과제는 이러한 점에서 착안된 것으로, 본 발명의 목적은 고성능 네트워크와 저성능 네트워크가 혼재된 환경에서 동작하는 기기들의 통신 구성을 편리하게 하는 혼합 네트워크 상에서의 태스크 간 통신 시스템을 제공하는 것이다.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
상기 프로세싱부(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
상기 프로세스는 태스크를 포함할 수 있다. 상기 태스크 간 통신은 상기 프로세싱부(10)에 속한 복수개의 태스크 간의 통신일 수 있다. 또는, 상기 태스크 간 통신은 동일 종류의 상이한 프로세싱부(10)에 속한 태스크 간의 통신일 수 있다. 또는, 상기 태스크 간 통신은 서로 다른 종류의 상이한 프로세싱부(10)에 속한 태스크 간의 통신일 수 있다. 상기 태스크는 복수개일 수 있다. 상기 프로세스는 복수개일 수 있다. 예를 들면, 각 프로세스는 복수개의 태스크, 각 태스크의 인터페이스 정보 및 각 태스크의 인터페이스 라이브러리를 포함할 수 있다.The process may include a task. The inter-task communication may be communication between a plurality of tasks belonging to the
예를 들면, 도 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
상기 태스크부(100)는 하나 이상의 태스크를 수행할 수 있다. 태스크란 컴퓨터로 처리되는 일의 최소 단위를 의미하며, 각 프로그램은 태스크를 경유하여 시스템 자원을 할당 할 수 있으며, 이를 런(run)할 수 있다. 상기 태스크는 태스크 간 통신이 필요한 경우 범용 태스크 통신 API를 이용하여 태스크 간 통신을 수행할 수 있다. 상기 태스크는 통신을 수행하는 태스크 및 계산을 수행하는 태스크로 분리될 수 있다. The
상기 인터페이스 정보 생성부(200)는 상기 태스크의 통신과 관련된 정보를 포함하는 인터페이스 정보를 생성할 수 있다. 상기 인터페이스 정보는 태스크 간에 연결되어 있는 채널 정보 및 각 채널의 통신 방법, 프로세스 간의 통신 연결 정보, 각 통신 연결에 대한 집합 연결 여부 등을 포함할 수 있다. 상기 인터페이스 정보는 채널의 식별자, 데이터를 송신하는 저자(Writer) 태스크의 정보, 데이터를 수신하는 독자(Reader) 태스크의 정보 및 해당 채널이 상기 프로세스 내에서 사용하게 될 가상 메모리 함수 집합에 관한 정보를 포함하는 채널 정보를 포함할 수 있다. 상기 인터페이스 정보는 원격 통신인 경우 통신별로 사용하는 통신 종류, 통신 역할 분류, 연결 방식, 통신 세부 정보 및 해당 통신의 가상 통신부(400)의 함수 집합 정보를 포함하며 채널별로 원격 통신을 사용하는 경우 사용할 원격 통신에 관한 정보를 더 포함하는 통신 정보를 포함할 수 있다.The interface
예를 들면, 도 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
상기 인터페이스 정보 생성부(200)는 태스크 매핑을 이용하여 상기 프로세스 별로 인터페이스 정보를 생성할 수 있다. 태스크 매핑이란 태스크와 프로세스를 연결하는 것을 의미할 수 있다. 이로 인해 태스크의 통신 방법이 결정될 수 있다. 상기 인터페이스 정보 생성부(200)는 상기 태스크 매핑 및 인터페이스 명세 UI(User Interface)로부터 프로세스별로 인터페이스 정보를 생성할 수 있다. 예를 들면, 도 19와 같이 태스크 매핑 및 인터페이스 명세 UI(User Interface)로부터 각각의 프로세스별로 인터페이스 정보를 생성할 수 있다. 따라서, 태스크 매핑 및 인터페이스 명세 사용자 인터페이스로 전체 태스크가 있는 환경을 명세할 경우 각 프로세스 별 인터페이스 정보가 생성되고, 해당 정보를 각 프로세스에서 사용할 수 있으며, 이로 인해 프로세스의 수가 많을 경우에 프로세스 별 인터페이스 정보를 사용자가 입력하는 작업이 번거로운 문제와 태스크의 수가 많은 경우에 인터페이스 정보가 복잡한 문제를 개선할 수 있다.The
상기 인터페이스 라이브러리부(300)는 상기 인터페이스 정보에 따라서 가변적인 가상 통신 모듈을 생성하고 이를 이용하여 통신을 수행할 수 있다. 상기 인터페이스 라이브러리부(300)는 태스크 간의 통신을 위해 필요한 모듈을 포함할 수 있다.The
상기 인터페이스 라이브러리부(300)는 범용 태스크 통신 API부(310), 통신 중개부(320) 및 서비스 실행부(330)를 포함할 수 있다.The
상기 범용 태스크 통신 API부(310)는 통신을 위한 범용 통신 API(Application Programming Interface: 응용 프로그램 프로그래밍 인터페이스)를 포함할 수 있다. 상기 범용 통신 API는 통신 채널의 식별자 값, 통신 송수신에 사용될 데이터의 버퍼 정보 및 통신 송수신에 사용될 데이터의 길이 정보를 포함할 수 있다. 따라서, 상기 범용 태스크 통신 API는 태스크가 개발되는 플랫폼이나 통신 방법에 상관없이, 동일한 API를 제공하여 태스크 코드 작성자에게 동일한 통신 인터페이스 개발 환경을 제공할 수 있다. 예를 들면, 태스크 코드 작성자는 실제 어떤 통신을 하는지에 모르거나 결정하지 않은 상태에서 태스크 간의 통신을 표현할 수 있다. The general-purpose task
예를 들면, 도 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
상기 통신 중개부(320)는 원격 통신부(321) 및 가상 메모리 접근부(322)를 포함할 수 있다.The
상기 원격 통신부(321)는 서로 상이한 프로세스에 속한 태스크들 간의 데이터 송수신을 중개할 수 있다. 상기 원격 통신부(321)는 다른 프로세스와의 통신이 있을 경우에 사용될 수 있다. 상기 원격 통신부(321)는 송수신부(321-1), 연결부(321-2) 및 수신 처리부(321-3)를 포함할 수 있다. 상기 원격 통신부(321)는 상기 송수신부(321-1), 연결부(321-2) 및 수신 처리부(321-3)를 필요에 따라서 선택하여 사용할 수 있다. 예를 들면, 상기 수신 처리부(321-3)는 저자(Writer) 태스크에서 사용하며, 상기 가상 통신부(400)는 개별 연결일 경우 사용될 수 있다.The
상기 송수신부(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
상기 송수신부(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
상기 통신 집합 송수신부(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
상기 수신 처리부(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
상기 가상 메모리 접근부(322)는 상기 가상 메모리 함수 집합을 포함할 수 있다. 상기 가상 메모리 함수 집합은 통신을 하는 태스크들 간의 통신 종류에 맞는 메모리 접근 함수를 포함할 수 있다. 상기 가상 메모리 함수 집합은 메모리 할당(createMemory), 메모리 해제(destroyMemory), 태스크에서 메모리로 복사(copyToMemory), 메모리에서 태스크로 복사(copyFromMemory)를 포함할 수 있다.The virtual
상기 가상 메모리 함수 집합은 제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
상기 서비스 실행부(330)는 통신 서비스를 시작할 수 있다. 상기 서비스 실행부(330)는 서버-클라이언트 구조나 마스터-슬레이브 구조의 통신 네트워크를 사용할 경우 서버나 슬레이브 역할을 하는 프로세스가 통신 연결을 하기 위한 서비스를 실행할 수 있다. 상기 서비스 실행부(330)는 마스터-슬레이브나 서버-클라이언트가 아닌 단순 일대일 연결의 통신 방식인 경우, 둘 중 하나가 마스터 및 슬레이브 역할을 하도록 정하여 통신을 수행할 수 있다.The
상기 서비스 실행부(330)는 연결을 대기하는 서비스를 시작하거나 집합 연결과 같이 태스크 간에 통신이 이루어지기 전에 연결을 완료하여야 할 경우와 같은 원격 통신을 위한 초기화 작업을 수행할 수 있다. 상기 서비스 실행부(330)는 집합 연결이며 서비스 제공자 역할(서버나 슬레이브)인 경우, 개별 연결이며 서비스 제공자 역할(서버나 슬레이브)인 경우, 집합 연결이며 서비스 사용자 역할(마스터나 클라이언트)인 경우에 사용될 수 있다.The
상기 서비스 실행부(330)는 집합 연결 처리부(331) 및 개별 연결 처리부(332)를 포함할 수 있다.The
상기 집합 연결 처리부(331)는 집합 연결로 통신을 하는 경우 통신을 직접 연결할 수 있다. 상기 집합 연결 처리부(331)는 해당 통신이 집합 연결을 하도록 설정이 되어 있는 경우 집합 연결에 필요한 초기화 작업을 수행할 수 있다. 상기 초기화 작업이란 통신을 직접 연결하는 것을 의미할 수 있다.The collective
상기 개별 연결 처리부(332)는 개별 연결로 통신을 하는 경우 개별 연결을 위한 서버를 시작하고 원격 프로세스의 개별 연결 요청을 처리할 수 있다. 상기 개별 연결 처리부(332)는 해당 통신이 개별 연결을 하도록 설정이 되어 있는 경우에 개별 연결을 제공하기 위한 서버를 시작하고, 원격 프로세스의 개별 연결 요청을 처리할 수 있다.The individual
상기 프로세싱부(10)는 통신 집합부(500)를 더 포함할 수 있다.The
상기 통신 집합부(500)는 송수신하는 태스크들의 통신 방식을 하나의 통신 방식으로 가상화하며 통신 서비스의 집합 연결을 수행하거나 다수의 개별 연결을 동시에 수행시 송신 데이터를 원격 프로세스로 송신하고, 수신한 데이터를 접합한 채널에 전송할 수 있다. 상기 통신 집합부(500)는 프로세스 내의 여러 태스크들의 송신 데이터를 원격 프로세스로 송신하며 수신한 데이터를 적합한 채널에 전송할 수 있다. 예를 들면, 상기 통신 집합부(500)는 1대1로 연결되는 시리얼 통신이나 블루투스 통신과 같이 집합 연결을 필연적으로 사용하는 통신 방식에서 사용하며, TCP/IP와 같은 통신에서도 저성능 저전력 기기를 사용함에 따라 많은 통신 연결이 필요한 경우 사용할 수 있다.The
상기 통신 집합부(500)는 상기 가상 통신부(400)를 이용할 수 있다. 상기 가상 통신부(400)각 태스크 간의 연결 별로 각각의 가상 소켓을 통해 통신하거나 집합 연결인 경우 같은 방식으로 통신하는 태스크들에 대해 하나의 가상 소켓을 생성하여 통신 집합부를 통해 데이터 송수신을 공유할 수 있다. The
상기 가상 통신부(400)는 개별 연결일 경우 송수신하는 태스크들의 통신 방식을 하나의 통신 방식으로 가상화할 수 있다. 상기 가상 통신부(400)는 상기 태스크 또는 상기 프로세스의 통신 방식에 따라서 통신 생성(create), 통신 소멸(destroy), 연결(connect), 연결 해제(disconnect), 수락(accept), 송신(send), 수신(receive) 및 연결 대기(listen) 함수로부터 상기 통신 방식에 필요한 가상 함수를 생성할 수 있다. 또한, 이로부터 각 태스크 간의 연결 별 또는 같은 방식으로 통신하는 태스크들의 집합 연결별로 가상 소켓을 생성할 수 있다. In the case of an individual connection, the
상기 가상 통신부(400)는 상기 함수들 중 지원하는 통신 방식에서 필요로 하는 가상 함수만을 선택적으로 이용할 수 있다. 상기 가상 통신부는 통신 방식별로 함수의 집합을 구성하고, 그 함수의 집합을 통해 해당 통신을 지원하고, 상위 모듈에서는 상기 가상 통신부에서 제공하는 함수의 집합으로부터 통신 방식에 상관없이 필요한 기능을 구현할 수 있다. 상기 가상 통신부(400)는 가상 소켓을 생성할 수 있다. 따라서, 널리 알려진 유, 무선 네트워크 통신뿐만 아니라 상기 가상 함수로 구현될 수 있는 다양한 통신 방식을 지원할 수 있다. 예를 들면, 다른 기기와 통신은 TCP/IP, 블루투스, ZigBee와 같은 일반적인 네트워크 통신뿐만 아니라 USB 등으로 연결하는 시리얼 통신이나, 파일을 공유하는 형태로도 두 태스크 간의 통신을 구현할 수 있으며, 통신 방식에 상관없이 가상화 함수로 구현만 된다면 새로운 통신 방식을 지원할 수 있다.The
상기 가상 함수들은 복수개일 수 있다. 예를 들면, 도 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
상기 가상 통신부(400)는 각 태스크 간의 연결 별로 각각의 가상 소켓을 통해 통신하거나 집합 연결인 경우 같은 방식으로 통신하는 태스크들에 대해 하나의 가상 소켓을 생성하여 통신 집합부를 통해 데이터 송수신을 공유할 수 있다.The
상기 통신 생성(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
상기 프로세스를 수행하는 단계(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
상기 인터페이스 정보는 채널의 식별자, 데이터를 송신하는 저자(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
상기 통신을 수행하는 단계(S120)에서는 인터페이스 라이브러리부(300)가 상기 인터페이스 정보에 따라서 가변적인 가상 통신 모듈을 생성하고 통신을 수행할 수 있다. In the step of performing the communication (S120), the
상기 통신을 수행하는 단계(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
상기 태스크의 쓰기 동작을 수행하는 단계(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
상기 쓰기 요청한 데이터를 복사하는 단계(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
상기 태스크의 읽기 동작을 수행하는 단계(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
상기 태스크의 읽기 동작을 수행하는 단계(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
상기 태스크 간 통신을 하는 프로세싱부(10) 및 태스크는 복수개이며 상기 태스크들은 제1 프로세싱부(10)에 위치하는 제1 태스크 및 원격 프로세싱부(10)에 위치하는 제2 태스크를 포함할 수 있다.The
상기 태스크 간 통신이 개별 연결인 경우 상기 태스크의 읽기 동작을 수행하는 단계(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
상기 읽기 요청을 수신하는 단계(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
상기 읽기 요청한 데이터를 수신하는 단계(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
예를 들면, 도 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
상기 통신을 수행하는 단계(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
상기 태스크 간 통신이 집합 연결이며 서비스 사용자의 역할인 경우, 상기 통신 서비스를 시작하기 위한 단계(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
상기 태스크 간 통신에서 태스크가 서비스 제공자의 역할을 수행하는 경우 상기 통신 서비스를 시작하기 위한 단계(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
서비스 실행부(330)는 개별 연결인 경우와 집합 연결인 경우에 따라 동작이 다르기 때문에 연결 방법에 따라 다른 하위 모듈을 사용할 수 있다. 집합 연결과 관련된 연결을 다루는 모듈은 집합 연결 처리부(331)를 사용하고, 개별 연결에 대한 서비스 실행은 개별 연결 처리부(332)를 사용할 수 있다.The
상기 통신 정보를 생성(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
상기 태스크 간 통신이 집합 연결인 경우 상기 태스크의 읽기 동작을 수행하는 단계(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
상기 제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
상기 읽기 요청을 수신하여 해당하는 채널의 원격 프로세싱부(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
상기 해당하는 채널의 제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
예를 들면, 도 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
본 발명의 실시예들에 따르면, 태스크 간 통신 방법 및 시스템은 집합 연결, 개별 연결 및 원격 프로세스 여부에 따라서 가변적인 가상 통신 모듈을 생성하고 이를 이용하여 통신을 수행할 수 있다. 따라서, 다양한 종류의 태스크 간 통신을 지원하며 선택적 모듈의 사용으로 인하여 효율적인 통신을 지원할 수 있다.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)
상기 프로세싱부는,
태스크를 수행하는 하나 이상의 태스크부;
상기 태스크의 통신과 관련된 정보를 포함하는 인터페이스 정보를 생성하는 인터페이스 정보 생성부;
상기 인터페이스 정보에 포함되는 태스크 간에 연결되어 있는 채널 정보, 각 채널의 통신 방법, 프로세스 간의 통신 연결 정보 및 각 통신 연결에 대한 집합 연결 여부에 관한 정보에 따라 태스크의 통신 방법을 달리하는 가상 통신 모듈을 생성하고 이를 이용하여 통신을 수행하며, 통신을 위한 범용 통신 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.
The inter-task communication system of claim 1, wherein the interface information generation unit generates interface information for each process using task mapping.
채널의 식별자, 데이터를 송신하는 저자(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.
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.
서로 상이한 프로세스에 속한 태스크들 간의 데이터 송수신을 중개하는 원격 통신부; 및
통신을 하는 태스크에서 메모리를 참조할 경우에 통신을 위한 데이터 복사를 수행하는 가상 메모리 접근부를 포함하는 태스크 간 통신 시스템.
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.
동일한 프로세싱부에 속한 태스크들 간의 통신을 위한 제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.
원격 통신시에 데이터의 송수신을 수행하는 송수신부;
상대 원격 프로세스와의 초기 통신 연결을 수행하는 연결부; 및
저자 버퍼를 포함하는 저자(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.
하나의 연결로 복수개의 태스크 간의 통신을 모두 공유하는 통신 집합 연결 방법으로 데이터를 송수신하는 통신 집합 송수신부; 및
각 태스크 간에 개별적으로 연결하는 개별 연결 방법으로 데이터를 송수신하는 직접 송수신부를 포함하는 태스크 간 통신 시스템.
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.
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.
집합 연결로 통신을 하는 경우 통신을 직접 연결하는 집합 연결 처리부; 및
개별 연결로 통신을 하는 경우 개별 연결을 위한 서버를 시작하고 원격 프로세스의 개별 연결 요청을 처리하는 개별 연결 처리부를 포함하는 태스크 간 통신 시스템.
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.
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.
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.
채널의 식별자, 데이터를 송신하는 저자(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.
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.
서비스 실행부가 통신 정보를 생성(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.
서비스 실행부가 서비스 제공자의 통신 정보를 생성(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.
제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.
상기 데이터 읽기 요청을 하는 단계는 태스크가 범용 태스크 통신 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.
제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.
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)
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 |
-
2019
- 2019-03-05 KR KR1020190025263A patent/KR102160014B1/en active IP Right Grant
Non-Patent Citations (2)
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 |