KR20110047753A - 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템 - Google Patents
교착 상태의 방지를 위한 데이터 처리 방법 및 시스템 Download PDFInfo
- Publication number
- KR20110047753A KR20110047753A KR1020090104500A KR20090104500A KR20110047753A KR 20110047753 A KR20110047753 A KR 20110047753A KR 1020090104500 A KR1020090104500 A KR 1020090104500A KR 20090104500 A KR20090104500 A KR 20090104500A KR 20110047753 A KR20110047753 A KR 20110047753A
- Authority
- KR
- South Korea
- Prior art keywords
- message
- actor
- read
- received
- read message
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 62
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000004044 response Effects 0.000 claims abstract description 66
- 230000008569 process Effects 0.000 claims abstract description 21
- 238000003672 processing method Methods 0.000 claims abstract description 14
- 238000004148 unit process Methods 0.000 claims 1
- 230000001360 synchronised effect Effects 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000008014 freezing Effects 0.000 description 1
- 238000007710 freezing Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Abstract
교착 상태를 방지하기 위한 데이터 처리 방법 및 시스템이 제공되며, 보다 상세하게는, 액터(actor) 시스템에서 메시지 응답 대기 상태에서 수신한 메시지를 처리하여 교착 상태를 방지할 수 있는 데이터 처리 방법 및 시스템이 제공될 수 있다.
교착 상태의 방지를 위한 데이터 처리 방법은 (a) 데이터의 처리에 필요한 대상 액터의 상태 정보를 요청하는 리드(read) 메시지를 전송하는 단계, (b) 상기 리드 메시지의 응답을 수신할 때까지, 액터의 상태 정보를 판독하는 리드 메시지만을 수신하여 처리하는 단계 및 (c) 상기 리드 메시지의 응답을 수신한 경우, 상기 상태 정보를 이용하여 관련 데이터를 처리하는 단계를 포함할 수 있다.
동기 메시지, 액터, 교착 상태
Description
본 발명은 교착 상태를 방지하기 위한 데이터 처리 방법 및 시스템에 관한 것으로서, 보다 상세하게는, 액터(actor) 시스템에서 메시지 응답 대기 상태에서 수신한 메시지를 처리하여 교착 상태를 방지할 수 있는 데이터 처리 방법 및 시스템에 관한 것이다.
최근 멀티코어 CPU 기술이 발전함에 따라, 하나의 칩에 여러 개의 CPU 코어를 탑재한 프로세서의 사용이 증대되고 있다. 여러 개의 CPU 상에서 처리되는 데이터의 일관성을 유지하기 위한 기법으로 오퍼레이팅 시스템(OS, operating system) 레벨에서 멀티스레딩(multithreading)과 록(Lock) 등을 이용한 임계구역 보호 기능 등을 제공하고 있으나, 이 방법만으로는 대규모 시스템을 개발 유지 보수하는데 많은 어려움과 비용이 발생한다.
이밖에 분산 시스템에서 병행 수행을 위해 객체 간에 상호 작용을 메시지만 으로 하는 방법이 있으나 이러한 방법은 메시지를 전달하는 부담(overhead)으로 인하여 성능이 저하되며, 전송한 메시지에 대한 응답을 기다리는 동안 교착 상태(deadlock)가 발생할 수 있다.
종래의 기술에서 분산 시스템 또는 멀티스레딩(multithreading) 시스템에서 병행 계산(Concurrent Computation)을 위한 방법으로 액터(actor) 시스템이 있다. 액터 시스템은 액터(actor)를 병행 계산의 기본 요소로 보는 시스템이다.
액터(actor)는 메시지를 수신하여 처리하고, 스스로 계산을 하고 결정을 내리며, 다른 액터를 만들거나 다른 액터로 메시지를 전송할 수 있다.
액터 시스템에서 각 액터는 액터의 상태, 즉 데이터와 데이터를 처리하기 위한 자체의 수행자, 예를 들어 스레드(thread)를 가지고 있으며 다른 액터와 메시지를 비동기적으로 교환하여 상호작용한다.
액터는 수신된 메시지에 대해 1) 자기 자신의 상태(데이터)를 수정, 2) 다른 액터로 메시지 전송, 3) 새로운 액터의 생성 또는 4) 다른 호스트로의 이전 등과 같은 작업을 수행할 수 있다.
액터 시스템에서 동기 메시지가 사용될 수 있다. 동기 메시지란 송신한 메시지에 대한 회답을 확인하고 난 다음에 그에 따르는 다음 작업을 수행하는 방식의 메시지이다.
동기 메시지 방식은 분산 시스템을 비롯하여 서버/클라이언트 시스템에서 널리 사용되는 방식이며, 일반 응용시스템에서의 직접 수행(direct-call)은 모두가 동기 메시지 방식으로 볼 수 있다.
이러한 동기 메시지를 제약 없이 일반적으로 허용하게 되면, 두 개의 액터가 서로의 리드 메시지에 대한 응답을 서로에게 요청하면서 장시간 대기하게 되면서, 다른 처리를 수행하지 못하게 되는 교착 상태(deadlock)가 발생할 수 있으며, 이러한 교착 상태의 발생으로 인하여 전체 시스템이 멈추는 등의 심각한 문제가 발생할 수 있다.
도 1은 종래 기술에 따른 액터(actor) 시스템에서 동기 메시지의 송수신을 통한 데이터 처리 방법의 흐름을 도시한 신호 흐름도이다.
단계(S10)에서, 제 1 액터(10)는 데이터 처리를 위한 요소인 a1을 산출하고, 데이터 처리를 위해 필요한 또 다른 요소인 b1을 요청한다. 단계(S15)에서, 제 1 액터(10)는 b1을 요청할 액터인 제 2 액터를 검색하고, 제 2 액터로 b1을 요청하기 위한 제 1 리드(read) 메시지를 생성한다. 제 1 액터(10)가 생성하는 제 1 리드(read) 메시지는 동기 메시지로서, 송신한 메시지에 대한 응답을 확인한 후 그에 따르는 다음 절차를 수행하는 방식의 메시지이다.
단계(S20)에서, 제 1 액터(10)는 제 1 리드 메시지를 제 2 액터(20)로 전송한다.
단계(S25)에서, 제 1 액터(10)는 제 1 리드 메시지의 제 2 액터(20)로의 전송에 대응하는 응답 대기 상태를 설정한다. 즉, 제 1 리드 메시지는 동기 메시지이므로, 제 1 액터(10)는 제 1 리드 메시지에 대한 제 2 액터(20)의 응답을 확인하고 그 후 다음 절차를 수행할 수 있다.
따라서, 제 1 액터(10)는 제 2 액터(20)로 전송한 제 1 리드 메시지의 응답 을 수신하기 전까지 제 1 액터(10)의 상태를 응답 대기 상태로 설정한다.
단계(S30)에서, 제 2 액터(20)는 제 1 액터(10)로부터 수신한 제 1 리드 메시지를 메시지 큐(queue)에 저장한다.
단계(S35)에서, 제 2 액터(20)는 제 1 액터(10)의 상태 정보를 획득하기 위하여 제 1 액터(10)로 제 2 리드(read) 메시지를 전송한다. 여기서 제 2 리드(read) 메시지는 제 1 리드 메시지와 관련성이 없는 메시지이다.
단계(S40)에서, 제 2 액터(20)는 제 2 리드 메시지의 제 1 액터(10)로의 전송에 대응하는 응답 대기 상태를 설정한다. 제 2 액터(20)는 제 2 리드 메시지에 대한 제 1 액터(10)의 응답을 확인하고서야 비로소 다음 절차를 수행할 수 있다.
따라서, 제 1 액터(10) 및 제 2 액터(20)는 서로의 응답을 수신할 때까지 대기 상태로 설정되어 다른 메시지를 처리하지 못하게 된다.
이로 인해, 제 1 액터(10)는 제 2 리드 메시지의 응답을 제 2 액터(20)로 전송하지 못하게 되고 제 2 액터(20)는 제 1 리드 메시지의 응답을 제 1 액터(10)로 전송하지 못하게 된다.
결국 제 1 액터(10) 및 제 2 액터(20)는 무한 대기 상태가 되므로 제 1 액터(10)와 제 2 액터(20) 사이에 교착 상태가 발생하게 된다.
이처럼 전술한 바와 같이 종래의 기술에 따른 액터 시스템에서 동기 메시지인 리드 메시지의 전송에 따르는 응답 대기 상태로 인하여 교착 상태가 발생하는 문제점을 가지고 있다.
본 발명의 일 실시예는 액터 사이에 동기 메시지를 주고 받는 경우에도 동기 메시지를 전송하고 응답을 수신하기 이전이라도 일정한 메시지를 처리함으로써 동기 메시지의 응답을 장시간 대기하여 발생하는 교착 상태(deadlock)를 방지하고자 한다.
또한, 본 발명의 일 실시예는 액터가 동일한 메모리 공간에 존재하는 경우에는 액터가 대상 액터의 상태 정보를 직접 수행(direct call) 방식으로 판독함으로써 데이터 처리 속도 및 성능을 향상시키고자 한다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면은 (a) 데이터의 처리에 필요한 대상 액터의 상태 정보를 요청하는 리드(read) 메시지를 전송하는 단계, (b) 상기 리드 메시지의 응답을 수신할 때까지, 액터의 상태 정보를 판독하는 리드 메시지만을 수신하여 처리하는 단계 및 (c) 상기 리드 메시지의 응답을 수신한 경우, 상기 상태 정보를 이용하여 관련 데이터를 처리하는 단계를 포함하는 교착 상태의 방지를 위한 데이터 처리 방법을 제공할 수 있다.
본 발명의 제 1 측면에서, (d) 상태 정보가 필요한 대상 액터가 동일한 메모리 공간에 존재하는지 여부를 판단하는 단계, (f) 상기 대상 액터가 동일한 메모리 공간에 존재하는 경우, 상기 대상 액터로부터 상기 상태 정보를 직접 판독하는 단 계 및 (e) 상기 직접 판독한 상태 정보를 이용하여 관련 데이터를 처리하는 단계를 더 포함할 수 있다.
또한, 본 발명의 제 1 측면에서, 상기 (b) 단계에서 처리하는 리드 메시지는 메시지 큐(queue)로부터 수신되고, 상기 메시지 큐는 액터의 상태를 변경시키는 이벤트 메시지 또는 리드 메시지를 저장할 수 있다.
본 발명의 제 2 측면은 대상 액터의 상태 정보를 이용하여 데이터를 처리하는 데이터 처리부, 상기 상태 정보를 상기 대상 액터로 요청하는 리드(read) 메시지를 생성하는 리드(read) 메시지 생성부 및 상기 대상 액터로 전송된 상기 리드 메시지에 대한 응답이 수신될 때까지 수신한 메시지 중에서 액터의 상태 정보를 판독하는 리드 메시지만을 처리하는 수신 메시지 처리부를 포함하는 교착 상태의 방지를 위한 데이터 처리 시스템을 제공할 수 있다.
전술한 본 발명의 과제 해결 수단에 의하면, 동기 메시지인 리드(read) 메시지를 전송하고 이에 대한 응답을 수신하기 이전까지 다른 액터로부터 수신한 리드(read) 메시지를 처리할 수 있으므로, 리드 메시지의 응답을 대기하는 동안에도 수신한 리드 메시지를 대기시키지 않고 메시지 큐(queue) 등으로부터 디스패치(dispatch)하고 처리하여 교착 상태(deadlock)를 방지할 수 있다.
또한, 전술한 본 발명의 과제 해결 수단에 의하면, 상태 정보의 대상이 되는 액터가 동일한 메모리 공간에 있는지를 확인하고, 그러한 경우 메시지를 이용하여 상태 정보를 획득하는 방식이 아니라, 직접 대상 액터의 상태 정보를 획득하는 직접 수행(direct call) 방식을 이용하여 대상 액터의 상태 정보를 획득하여 데이터 처리 속도 및 성능을 향상시킬 수 있다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 2 및 도 3은 본 발명의 일 실시예에 따른 데이터 처리 방법의 흐름을 도시한 신호 흐름도이다.
단계(S100)에서, 제 1 액터(100)는 데이터 처리를 위한 요소인 a1을 산출하고, 데이터 처리를 위해 필요한 또 다른 요소인 b1을 요청한다. 여기서 b1은 제 1 액터(100) 이외의 액터로부터 수신해야 하는 요소이며, 액터의 상태 정보를 포함할 수 있다.
단계(S105)에서, 제 1 액터(100)는 제 2 액터(200)에게 b1을 요청하기 위한 제 1 리드 메시지를 생성한다. 제 1 액터(100)가 생성하는 제 1 리드(read) 메시지는 동기(synchronous) 메시지로서, 송신한 메시지에 대한 응답을 확인한 후 그에 따르는 다음 절차를 수행하는 방식의 메시지이다.
동기 메시지 방식은 분산 시스템을 비롯하여 서버/클라이언트 시스템에서 널리 사용하는 방식이며, 일반 응용 시스템에서의 직접 수행(direct-call)은 동기 메시지 방식으로 볼 수 있다.
단계(S110)에서, 제 1 액터(100)는 제 1 리드(read) 메시지를 제 2 액터(200)로 전송한다. 제 1 리드 메시지는 메시지 수행자에 의해 제 1 액터(100)로부터 제 2 액터(200)로 전송될 수 있다.
메시지 수행자는 메시지를 메시지 큐로부터 획득하여 해당 액터(actor)로 메시지를 전달하고, 메시지의 내용을 실행한다. 일반적으로 메시지 수행자는 오퍼레이팅 시스템(OS, operating system)이 제공하는 스레드(thread)가 될 수 있으며, 메시지 수행자는 각각의 액터마다 존재할 수 있다.
스레드(thread)는 하나의 호스트 내에서 서로 다른 중앙 처리 장치(CPU, central processing unit) 코어(core)에서 수행될 수 있으며, 서로 다른 호스트에 분산될 수도 있다. 본 발명에 따른 일 실시예의 설명에서는 이해의 편의를 위하여 각각의 액터마다 하나의 독립적인 메시지 수행자를 포함하는 것으로 가정한다.
단계(S115)에서, 제 2 액터(200)는 제 1 액터(100)로부터 수신한 제 1 리드(read) 메시지를 메시지 큐(queue)에 저장한다.
메시지 큐는 수행을 대기하는 메시지의 큐(queue)이며, 메시지 큐는 하나의 호스트에 단일한 메시지 큐가 존재할 수 있으며, 각각의 액터마다 메시지 큐를 포함할 수 있다. 본 발명에 따른 일 실시예의 설명에서는 이해의 편의를 위하여 각각의 액터마다 메시지 큐를 포함하는 것으로 가정한다.
단계(S120)에서, 제 2 액터(200)는 제 1 액터(100)로 제 2 리드(read) 메시지를 전송한다.
단계(S125)에서, 제 1 액터(100)는 제 2 액터(200)로부터 수신한 제 2 리드(read) 메시지를 처리한다. 본 발명의 일 실시예에서 제 1 액터(100)는 종래 기술과 달리 제 2 액터(200)로 리드(read) 메시지를 전송하여도 응답 대기 상태로 설정되지 않는다.
따라서, 제 1 액터(100)는 제 1 리드 메시지의 응답을 제 2 액터(200)로부터 수신하지 않더라도 제 2 리드(read) 메시지를 처리할 수 있다.
단계(S130)에서, 제 1 액터(100)는 단계(S125)에서의 처리 결과를 포함하는 제 2 리드 메시지 응답을 제 2 액터(200)로 전송한다.
단계(S135)에서, 제 2 액터(200) 또는 제 3 액터(200)는 제 1 액터(100)로 제 3 리드(read) 메시지를 전송하고, 단계(S140)에서 제 1 액터(100)는 제 2 액터(200) 또는 제 3 액터(200)로부터 수신한 제 2 리드 메시지를 처리하며, 단계(S145)에서 제 1 액터(100)는 단계(S140)에서의 처리 결과를 포함하는 제 3 리 드(read) 메시지 응답을 제 2 액터(200) 또는 제 3 액터(200)로 전송한다.
이처럼 본 발명의 일 실시예에서 제 1 액터(100)는 제 1 리드 메시지를 제 2 액터(200)로 전송하여도 응답 대기 상태로 설정되지 않으므로 하나 이상의 다른 액터로부터 수신한 리드 메시지를 처리하고 응답을 보낼 수 있다.
단계(S150)에서, 제 2 액터(200)는 제 1 리드 메시지를 분석하여 제 1 액터(100)에서 요청한 제 2 액터(200)의 상태 정보인 요소 b1을 산출한다.
단계(S155)에서, 제 2 액터(200)는 제 1 리드 메시지의 응답을 제 1 액터(100)로 전송한다. 제 2 액터(200)에 의해 전송되는 제 1 리드 메시지의 응답은 단계(S150)에서 산출한 제 2 액터(200)의 상태 정보 b1을 포함한다.
단계(S160)에서, 제 1 액터(100)는 단계(S100)에서 산출한 요소 a1 및 제 2 액터(200)로부터 수신한 제 1 리드 메시지의 응답에 포함된 요소 b1을 이용하여 데이터를 처리한다.
도 4는 본 발명의 일 실시예에 따른 데이터 처리 방법에서 액터(actor)의 메시지 처리 흐름을 도시한 순서도이다.
단계(S200)에서, 다른 액터, 즉 대상 액터의 상태 정보를 요구하는 상황이 발생하였음을 파악한다. 즉, 데이터 처리를 수행하는 과정에서 데이터 처리를 위해서 다른 액터의 상태 정보가 필요로 하게 되었음을 파악한다.
단계(S210)에서, 요구되는 상태 정보의 대상이 되는 대상 액터가 동일한 메모리 공간(memory space)에 존재하는지 여부를 판단한다.
단계(S220)에서는, 단계(S210)에서 대상 액터가 동일한 메모리 공간에 존재 하지 않는다고 판단되는 경우, 데이터 처리를 위하여 대상 액터의 상태 정보를 판독할 수 있는 리드(read) 메시지를 생성하고 대상 액터로 생성한 리드 메시지를 전송한다.
액터에 의해 생성되고 송수신되는 메시지는 이벤트 메시지 또는 이벤트 메시지를 포함한다. 이벤트(event) 메시지는 수신하는 액터의 상태가 변경될 수 있는 비동기(asynchronous) 메시지이고, 리드(read) 메시지는 수신하는 액터의 상태를 판독하기만 하는 동기(synchronous) 메시지이다. 따라서 대상 액터의 상태 정보를 판독하기 위하여 리드(read) 메시지를 생성하고 대상 액터로 전송한다.
리드 메시지의 전송은 메시지 수행자에 의해 수행될 수 있다. 오퍼레이팅 시스템(OS, operating system)에 의해 제공되는 스레드(thread)가 메시지 수행자의 역할을 수행할 수 있다.
단계(S230)에서는, 단계(S220)에서 전송한 리드(read) 메시지에 대한 응답을 수신하였는지 여부를 판단한다. 리드 메시지는 응답을 확인한 후 그에 따르는 절차를 수행하는 동기 방식의 메시지이다. 따라서, 전송한 리드 메시지의 응답을 수신하였는지 여부를 판단하여, 응답 수신에 따르는 이후 절차를 수행할 것인지 여부를 판단할 수 있다.
단계(S240)에서는, 단계(S230)에서 응답을 수신하지 않은 것으로 판단되는 경우, 메시지 큐에 저장된 리드 메시지를 메시지 큐로부터 디스패치(dispatch)한다.
메시지 큐(queue)는 액터에 의해 수신된 메시지가 바로 처리될 수 없는 경 우, 수신한 메시지를 저장하고 액터에 의해 처리될 때까지 대기시킨다. 액터는 수신한 메시지를 바로 처리할 수도 있으나, 상황에 따라 다른 처리를 수행하기 위해 수신한 메시지를 대기시켜야 하는 경우도 있다.
이러한 경우 액터는 수신한 메시지를 메시지 큐에 저장하여 메시지를 대기시킨 후, 처리 가능한 시점이 되면 메시지를 메시지 큐로부터 디스패치하여 처리할 수 있다.
단계(S250)에서는, 단계(S240)에서 디스패치한 리드(read) 메시지를 분석하고 처리한다. 즉, 리드 메시지를 분석하고 분석한 리드 메시지에 따른 처리를 수행하여 해당 액터로 응답을 전송한다.
이처럼 종래 기술과 달리 본 발명에 따른 일 실시예에서 액터(actor)는 리드 메시지를 전송하고 응답을 수신하기까지의 응답 대기 시간 동안 다른 액터로부터 수신한 리드 메시지를 처리할 수 있다.
이러한 경우, 전송한 리드 메시지의 응답에 따라 데이터 처리를 수행하기 이전에 다른 메시지를 처리하여 액터의 상태가 변경되면, 리드 메시지를 전송할 때의 액터의 상태와 응답을 수신할 때의 액터의 상태가 상이할 수 있으므로 전송한 리드 메시지의 응답에 따라 데이터를 처리할 때 문제가 발생할 수 있다.
따라서, 전술한 바와 같이, 메시지 큐에는 동기 메시지인 리드 메시지뿐만 아니라 비동기 메시지인 이벤트 메시지도 포함될 수 있으나, 전송한 리드 메시지의 응답을 기다리는 동안 처리될 수 있는 메시지는 액터의 상태를 변경하지 않는 동기 메시지인 리드 메시지에 한정된다.
단계(S260)에서는, 단계(S220)에서 전송한 리드(read) 메시지에 대한 응답을 수신하였는지 여부를 판단한다.
단계(S270)에서는, 단계(S220)에서 전송한 리드 메시지의 응답을 수신한 경우, 수신한 응답에 포함된 대상 액터의 상태 정보를 이용하여 데이터를 처리한다.
단계(S280)에서는, 단계(S210)에서 대상 액터가 동일한 메모리 공간에 존재한다고 판단되는 경우, 대상 액터의 상태 정보를 직접 수행(direct call) 방식을 통해 판독한다.
단계(S290)에서, 단계(S280)에서 판독한 상태 정보를 이용하여 관련 데이터를 처리한다. 이처럼 대상 액터의 상태 정보를 직접 수행 방식을 통해 판독하는 방식은 메시지 전송 후 응답을 기다려야 하는 동기 메시지를 이용하는 방식에 비하여 데이터 처리 속도를 향상시키고 시스템의 성능을 개선시킬 수 있다.
도 5는 본 발명의 일 실시예에 따른 데이터 처리 시스템의 구성을 도시한 도면이다.
전술한 바와 같이, 본 발명의 일 실시예에서 각각의 액터(100 및 200)는 메시지 수행자(101 및 201) 및 메시지 큐(102 및 202)를 각각 포함한다.
제 1 액터(100)는 데이터 처리를 위하여 제 2 액터(200)의 상태 정보가 필요하다고 판단되면, 제 2 액터(200)의 상태 정보를 판독하기 위한 제 1 리드(read) 메시지를 생성하고, 생성한 제 1 리드(read) 메시지를 제 2 액터(200)로 전송한다.
제 1 액터(100)는 제 2 액터(200) 또는 그외의 다른 액터로부터 리드(read) 메시지 및 이벤트(event) 메시지를 수신하고, 수신한 메시지를 바로 처리할 수 없 는 경우 메시지 수행자(101)를 통해 메시지 큐(102)에 수신한 메시지를 저장한다.
제 1 액터(100)는 메시지 큐(102)에 저장한 메시지를 메시지 수행자(101)를 이용하여 순차적으로 디스패치(dispatch)하고, 메시지의 종류 및 내용에 따른 절차를 수행한다.
예를 들어, 리드(read) 메시지를 디스패치한 경우, 제 1 액터(100)는 리드 메시지에 의해 요구되는 제 1 액터의 상태 정보를 포함하는 응답을 생성하고, 리드 메시지를 전송한 액터로 생성한 응답을 전송한다. 이벤트 메시지를 디스패치한 경우, 제 1 액터(100)는 이벤트 메시지에 포함된 정보에 따라 제 1 액터(100)의 상태를 변경한다.
제 1 액터(100)는 제 2 액터(200)로부터 제 1 리드 메시지의 응답을 수신하여 제 2 액터(200)의 상태 정보를 수신하고, 수신한 상태 정보를 이용하여 데이터 처리를 수행한다.
이처럼 본 발명의 일 실시예에 따른 데이터 처리 시스템에서의 액터(actor)는 대상 액터로 전송한 리드 메시지의 응답이 미수신된 경우라도, 수신한 리드 메시지를 처리할 수 있으므로, 리드 메시지 처리가 지연되어 발생하는 교착 상태(deadlock)를 방지할 수 있다.
도 6은 본 발명의 일 실시예에 따른 데이터 처리 시스템의 액터(actor)의 구성을 도시한 도면이다.
본 발명의 일 실시예에 따른 액터(actor)(100)는 신호 송수신부(110), 데이터 처리부(120), 리드 메시지 생성부(130) 및 수신 메시지 처리부(140)를 포함한 다.
신호 송수신부(110)는 다른 액터(actor)로 메시지 등의 신호를 전송하고, 신호를 수신한다.
즉, 신호 송수신부(110)는 리드(read) 메시지 또는 이벤트(event) 메시지 등의 메시지를 수신하고, 수신한 리드 메시지의 응답을 포함하는 신호를 해당 액터로 전송한다. 또한, 신호 송수신부(110)는 대상 액터로 리드 메시지를 전송하고, 리드 메시지의 응답을 수신한다.
데이터 처리부(120)는 데이터 처리에 있어서 대상 액터의 상태 정보가 필요한 경우, 해당 액터가 액터(100)와 동일한 메모리 공간에 존재하는지 여부를 판단한다. 해당 액터가 동일한 메모리 공간에 존재하지 않는 경우, 데이터 처리부(120)는 해당 액터로 전송할 리드 메시지의 생성을 리드 메시지 생성부(130)로 요청한다.
데이터 처리부(120)는 리드 메시지가 해당 액터로 전송되었다는 전송 상황을 리드 메시지 생성부(130)로부터 수신하면, 해당 액터로부터 응답을 수신할 때까지 리드 메시지만을 처리하고 이벤트 메시지의 처리를 중단할 것을 수신 메시지 처리부(140)에 요청한다.
전술한 바와 같이, 전송한 리드 메시지의 응답을 수신하여 그에 따른 데이터 처리를 수행하기 전에 다른 메시지를 처리하여 액터의 상태를 변경하면, 전송한 리드 메시지의 응답에 따른 데이터 처리에 있어서 문제가 발생할 수 있다. 따라서, 데이터 처리부(120)는 액터의 상태를 변경하지 않는 리드 메시지만을 처리하도록 메시지 처리부(140)에 요청한다.
데이터 처리부(120)는 해당 액터가 액터(100)와 동일한 메모리 공간에 존재한다고 판단하는 경우, 데이터 처리부(120)는 해당 액터의 상태 정보의 판독을 직접 수행(direct call) 방식으로 수행한다.
데이터 처리부(120)는 전송한 리드 메시지의 응답을 해당 액터로부터 수신하고, 수신한 응답에 포함된 상태 정보를 이용하여 데이터 처리를 수행한다.
리드(read) 메시지 생성부(130)는 데이터 처리부(120)의 요청에 응답하여 전송할 리드 메시지를 생성한다. 리드 메시지 생성부(130)는 데이터 처리부(120)의 요청에 포함된 리드 메시지를 수신할 액터의 정보를 이용하여 생성한 리드 메시지를 신호 송수신부(110)를 통해 전송하고, 전송 상황을 데이터 처리부(120)로 통보한다.
수신 메시지 처리부(140)는 메시지 큐(queue)(102)에 저장된 메시지를 디스패치(dispatch)하여 메시지를 처리한다. 수신 메시지 처리부(140)는 데이터 처리부(120)의 요청이 있는 경우, 이벤트 메시지의 처리를 중단하고 리드 메시지만을 디스패치하여 처리한다.
즉, 수신 메시지 처리부(140)는 액터(100)가 대상 액터로 전송한 리드 메시지의 응답을 수신할 때까지 리드 메시지에 한정하여 메시지를 처리한다.
이처럼 수신 메시지 처리부(140)는 대상 액터로 전송한 리드 메시지의 응답을 수신하기 전이라도 수신한 리드 메시지를 처리하여 메시지 큐(102)에 메시지가 과도하게 대기하게 되는 상황을 방지할 수 있다.
상술한 본 발명의 일 실시예는 복수의 호스트(host)로 분산된 환경에서 적용될 수 있을 뿐만 아니라 하나의 호스트, 특히 하나의 호스트 내의 하나 이상의 CPU 코어, 이른바 멀티 코어 환경에서도 적용될 수 있다.
즉, 액터가 각각 별개의 호스트에 존재하는 상황에서뿐만 아니라 동일한 호스트에 존재하는 상황에서도 본 발명이 적용될 수 있다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다.
또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1은 종래 기술에 따른 액터(actor) 시스템에서 동기 메시지의 송수신을 통한 데이터 처리 방법의 흐름을 도시한 신호 흐름도,
도 2는 본 발명의 일 실시예에 따른 데이터 처리 방법의 흐름을 도시한 신호 흐름도,
도 3은 본 발명의 일 실시예에 따른 데이터 처리 방법의 흐름을 도시한 신호 흐름도,
도 4는 본 발명의 일 실시예에 따른 데이터 처리 방법에서 액터(actor)의 메시지 처리 흐름을 도시한 순서도,
도 5는 본 발명의 일 실시예에 따른 데이터 처리 시스템의 구성을 도시한 도면,
도 6은 본 발명의 일 실시예에 따른 데이터 처리 시스템의 액터(actor)의 구성을 도시한 도면.
Claims (11)
- 교착 상태의 방지를 위한 데이터 처리 방법에 있어서,(a) 데이터의 처리에 필요한 대상 액터의 상태 정보를 요청하는 리드(read) 메시지를 전송하는 단계,(b) 상기 리드 메시지의 응답을 수신할 때까지, 액터의 상태 정보를 판독하는 리드 메시지만을 수신하여 처리하는 단계 및(c) 상기 리드 메시지의 응답을 수신한 경우, 상기 상태 정보를 이용하여 관련 데이터를 처리하는 단계를 포함하는 데이터 처리 방법.
- 제 1 항에 있어서,(d) 상태 정보가 필요한 대상 액터가 동일한 메모리 공간에 존재하는지 여부를 판단하는 단계,(e) 상기 대상 액터가 동일한 메모리 공간에 존재하는 경우, 상기 대상 액터로부터 상기 상태 정보를 직접 판독하는 단계 및(f) 상기 직접 판독한 상태 정보를 이용하여 관련 데이터를 처리하는 단계를 더 포함하는 데이터 처리 방법.
- 제 1 항에 있어서,상기 (b) 단계에서 처리하는 리드 메시지는 메시지 큐(queue)로부터 수신되고,상기 메시지 큐는 액터의 상태를 변경시키는 이벤트 메시지 또는 리드 메시지를 저장하는 것인 데이터 처리 방법.
- 제 1 항에 있어서,상기 (b) 단계에서 처리하는 리드 메시지는 액터로부터 직접 수신되는 것인 데이터 처리 방법.
- 제 1 항에 있어서,리드 메시지의 전송 및 수신은 오퍼레이팅 시스템(OS, operating system)의 스레드(thread)를 통해 수행되는 것인 데이터 처리 방법.
- 제 1 항에 있어서,상기 대상 액터는 별도의 호스트(host)에 존재하는 것인 데이터 처리 방법.
- 제 1 항에 있어서,상기 대상 액터는 동일한 호스트(host)에 존재하는 것인 데이터 처리 방법.
- 교착 상태의 방지를 위한 데이터 처리 시스템에 있어서,대상 액터의 상태 정보를 이용하여 데이터를 처리하는 데이터 처리부,상기 상태 정보를 상기 대상 액터로 요청하는 리드(read) 메시지를 생성하는 리드 메시지 생성부 및상기 대상 액터로 전송된 상기 리드 메시지에 대한 응답이 수신될 때까지 수신한 메시지 중에서 액터의 상태 정보를 판독하는 리드 메시지만을 처리하는 수신 메시지 처리부를 포함하는 데이터 처리 시스템.
- 제 8 항에 있어서,상기 데이터 처리부는 동일한 메모리 공간에 존재하는 대상 액터의 상태 정보를 직접 수행(direct call) 방식으로 판독하여 데이터를 처리하는 것인 데이터 처리 시스템.
- 제 8 항에 있어서,상기 수신 메시지 처리부가 수신하는 리드 메시지는 액터로부터 직접 수신되는 것인 데이터 처리 시스템.
- 제 8 항에 있어서,상기 수신 메시지 처리부가 수신하는 리드 메시지는 액터의 상태를 변경시키는 이벤트(event) 메시지 또는 리드(read) 메시지를 저장하는 메시지 큐(queue)로부터 수신되는 것인 데이터 처리 시스템.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090104500A KR101080845B1 (ko) | 2009-10-30 | 2009-10-30 | 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템 |
CN201080049494.2A CN102630315B (zh) | 2009-10-30 | 2010-10-29 | 用于防止死锁状态的数据处理方法及系统 |
PCT/KR2010/007517 WO2011053038A2 (ko) | 2009-10-30 | 2010-10-29 | 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템 |
US13/505,170 US8826301B2 (en) | 2009-10-30 | 2010-10-29 | Method and system for processing data for preventing deadlock |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090104500A KR101080845B1 (ko) | 2009-10-30 | 2009-10-30 | 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110047753A true KR20110047753A (ko) | 2011-05-09 |
KR101080845B1 KR101080845B1 (ko) | 2011-11-07 |
Family
ID=43922863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090104500A KR101080845B1 (ko) | 2009-10-30 | 2009-10-30 | 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8826301B2 (ko) |
KR (1) | KR101080845B1 (ko) |
CN (1) | CN102630315B (ko) |
WO (1) | WO2011053038A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210069761A (ko) * | 2019-12-03 | 2021-06-14 | 현대오트론 주식회사 | 전자 장치에서 소프트웨어를 실행하는 방법 및 그 전자 장치 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101191727B1 (ko) | 2011-02-28 | 2012-11-21 | (주)지노게임즈 | 멀티 버추얼 머신을 이용한 멀티 쓰레드 처리시스템 및 그 방법 |
CN103399818B (zh) * | 2013-08-13 | 2016-05-18 | 中国科学技术大学苏州研究院 | 操作系统中的死锁检测方法 |
RU2718215C2 (ru) | 2018-09-14 | 2020-03-31 | Общество С Ограниченной Ответственностью "Яндекс" | Система обработки данных и способ обнаружения затора в системе обработки данных |
RU2731321C2 (ru) | 2018-09-14 | 2020-09-01 | Общество С Ограниченной Ответственностью "Яндекс" | Способ определения потенциальной неисправности запоминающего устройства |
RU2714219C1 (ru) | 2018-09-14 | 2020-02-13 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для планирования передачи операций ввода/вывода |
RU2714602C1 (ru) | 2018-10-09 | 2020-02-18 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для обработки данных |
RU2721235C2 (ru) | 2018-10-09 | 2020-05-18 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для маршрутизации и выполнения транзакций |
RU2711348C1 (ru) | 2018-10-15 | 2020-01-16 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для обработки запросов в распределенной базе данных |
RU2714373C1 (ru) | 2018-12-13 | 2020-02-14 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для планирования выполнения операций ввода/вывода |
RU2749649C2 (ru) | 2018-12-21 | 2021-06-16 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для планирования обработки операций ввода/вывода |
RU2720951C1 (ru) | 2018-12-29 | 2020-05-15 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и распределенная компьютерная система для обработки данных |
RU2746042C1 (ru) | 2019-02-06 | 2021-04-06 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для передачи сообщения |
CN112181669A (zh) * | 2019-07-04 | 2021-01-05 | 中兴通讯股份有限公司 | 死锁检测控制方法、装置、通信设备及计算机存储介质 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR0146551B1 (ko) * | 1995-08-21 | 1998-09-15 | 양승택 | 임계영역을 지원하는 래치 관리방법 |
US5828881A (en) * | 1995-11-09 | 1998-10-27 | Chromatic Research, Inc. | System and method for stack-based processing of multiple real-time audio tasks |
JPH11224204A (ja) | 1998-02-06 | 1999-08-17 | Nec Corp | 排他制御装置及びその方法 |
JP4197571B2 (ja) * | 2000-03-28 | 2008-12-17 | 株式会社東芝 | 自動分散処理システムおよび記録媒体 |
US6772153B1 (en) * | 2000-08-11 | 2004-08-03 | International Business Machines Corporation | Method and apparatus to provide concurrency control over objects without atomic operations on non-shared objects |
US7464154B2 (en) | 2001-05-18 | 2008-12-09 | Network Resonance, Inc. | System, method and computer program product for analyzing data from network-based structured message stream |
US7673304B2 (en) * | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
US7290086B2 (en) * | 2003-05-28 | 2007-10-30 | International Business Machines Corporation | Method, apparatus and program storage device for providing asynchronous status messaging in a data storage system |
US7644197B1 (en) * | 2003-10-15 | 2010-01-05 | Sun Microsystems, Inc. | Queue management by multiple processors |
US7315912B2 (en) * | 2004-04-01 | 2008-01-01 | Nvidia Corporation | Deadlock avoidance in a bus fabric |
JP2010504581A (ja) | 2006-09-25 | 2010-02-12 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | マルチスレッドアプリケーションにおけるロバストなクリティカルセクション設計 |
US7975272B2 (en) * | 2006-12-30 | 2011-07-05 | Intel Corporation | Thread queuing method and apparatus |
US8869169B2 (en) * | 2007-04-30 | 2014-10-21 | Accenture Global Services Limited | Alternately processing messages |
US8161460B2 (en) * | 2007-05-30 | 2012-04-17 | Sap Ag | System and method of automatic interoperability checking for BPEL |
JP4197733B2 (ja) * | 2008-02-04 | 2008-12-17 | 株式会社東芝 | 自動分散処理システム |
-
2009
- 2009-10-30 KR KR1020090104500A patent/KR101080845B1/ko active IP Right Grant
-
2010
- 2010-10-29 CN CN201080049494.2A patent/CN102630315B/zh active Active
- 2010-10-29 US US13/505,170 patent/US8826301B2/en active Active
- 2010-10-29 WO PCT/KR2010/007517 patent/WO2011053038A2/ko active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210069761A (ko) * | 2019-12-03 | 2021-06-14 | 현대오트론 주식회사 | 전자 장치에서 소프트웨어를 실행하는 방법 및 그 전자 장치 |
Also Published As
Publication number | Publication date |
---|---|
US8826301B2 (en) | 2014-09-02 |
CN102630315A (zh) | 2012-08-08 |
CN102630315B (zh) | 2015-06-24 |
WO2011053038A3 (ko) | 2011-11-03 |
WO2011053038A2 (ko) | 2011-05-05 |
US20120216215A1 (en) | 2012-08-23 |
KR101080845B1 (ko) | 2011-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101080845B1 (ko) | 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템 | |
US7895260B2 (en) | Processing data access requests among a plurality of compute nodes | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
JP2009265963A (ja) | 情報処理システム及びタスクの実行制御方法 | |
EP2144164B1 (en) | Data processing device, distributed processing system, data processing method, and data processing program | |
US20090158297A1 (en) | System and method of dynamically loading and executing module devices using inter-core-communication channel in multicore system environment | |
EP3489815B1 (en) | Method and system for low latency data management | |
US9104486B2 (en) | Apparatuses, systems, and methods for distributed workload serialization | |
JP2006301894A (ja) | マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法 | |
JP2006309512A (ja) | マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法 | |
CN115934625B (zh) | 一种用于远程直接内存访问的敲门铃方法、设备及介质 | |
WO2013097098A1 (zh) | 数据处理方法、图形处理器gpu及第一节点设备 | |
JP7346649B2 (ja) | 同期制御システムおよび同期制御方法 | |
JPH07287064A (ja) | レーダ信号処理装置 | |
US20140052879A1 (en) | Processor, information processing apparatus, and interrupt control method | |
US20130247065A1 (en) | Apparatus and method for executing multi-operating systems | |
JP4414447B2 (ja) | 情報処理装置、情報処理システムおよび情報処理方法 | |
KR100978083B1 (ko) | 공유 메모리형 멀티 프로세서에 있어서의 절차 호출 방법 및 절차 호출 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 | |
US7483427B2 (en) | Data driven type information processing apparatus and method of increasing transfer speed of data packet | |
US20090019259A1 (en) | Multiprocessing method and multiprocessor system | |
US20170337084A1 (en) | Compute unit including thread dispatcher and event register and method of operating same to enable communication | |
JP4833911B2 (ja) | プロセッサユニットおよび情報処理方法 | |
JP2018147126A (ja) | 並列プロセス実行方法 | |
CN112306698A (zh) | 一种numa系统中的临界区执行方法及装置 | |
KR101607716B1 (ko) | 데이터 흐름 네트워크 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20151029 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20181030 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20191030 Year of fee payment: 9 |