[Archive] 강좌게시판

취소
다음에 대한 결과 표시 
다음에 대한 검색 
다음을 의미합니까? 

[myLV.net 집필진 강좌] Actor Framework 구조 분석 - 2

 [myLV.net 집필진 강좌 – 웅킹킹킹]

 

안녕하세요. 웅킹킹킹 입니다.

 

 

지난 시간부터 Actor Framework의 구조를 분석하기 위해서 Actor Framework의 라이브러리를 구성하고 있는 함수를 알아보는 시간을 가지고 있습니다.


다시 한번 반복하자면 Actor Framework의 메커니즘을 간단한 예제를 통해서 몸으로 체험한 후에 이론상으로 접근하는 것이 좀 더 Actor Framework를 이해하기 좋을 것 같다는 생각으로 간단한 Calculator예제를 체험하고 현재는 Actor Framework의 라이브러리 함수를 분석하고 있습니다.

 

지난 시간의 내용을 간단하게 정리하자면

 

  • Actor Framework는 Actor, Messages, Queue 총 3가지의 구성요소로 이루어짐.
  • Queue는 Message Queue, Messages Enqueuer, Messages Dequeuer, Messages Priority 4개의 클래스로 구성.
  • Messages Queue 클래스는 Actor Framework에서 다양한 조건의 우선순위를 할당하여 Message를 생성하고 소비하기 위해 Queue Buffers, Wait Msg, Wait Prior 등의 Queue를 생성합니다.

 

이번 시간에는 Queue를 이루고 있는 Message Queue, Messages Enqueuer, Messages Dequeuer, Messages Priority 중에서 지난 시간 분석한 Message Queue를 제외한 나머지 3개 중 Messages Enqueuer, Messages Dequeuer 클래스에 대해서 알아보는 시간을 가지려고 합니다.

 

 

  1. Queue - Message Enqueuer 클래스
    Message Enqueuer 클래스는 Actor Framework의 Actor가 지니고 있는 특정 Method를 수행하기 위해서 Queue를 통해 Message를 전달받습니다. 이때 Message를 Queue에 Enqueue하기 위해서 존재합니다.

 

A. Messages Enqueuer 클래스의 Data멤버

 

그림 1 Message Enqueuer 클래스의 Data멤버그림 1 Message Enqueuer 클래스의 Data멤버

  

그림 1의 Message Enqueuer 클래스의 Data멤버는 Priority Queue 클래스 입니다. 우선순위를 부여할 수 있도록 만들어진 Queue - Queue Buffers, Wait Msg, Wait Prior 등의 정보를 모두 가지고 있는 Priority Queue 클래스 정보를 가지고 Message와 함께 우선순위를 부여해서 Enqueue를 하기 위해서 입니다

 

B. Message Enqueuer 클래스의 Method

 

그림 2 Messages Enqueuer 클래스의 Method그림 2 Messages Enqueuer 클래스의 Method

  

Message Enqueuer 클래스는 그림 2와 같이 Init from Existing Queue, Enqueue Critical, Message Priority.ctl, Enqueue, Equals Not A Refnum의 4개의 Method와 1개의 타입정의 컨트롤을 가지고 있습니다.

 

C. Message Enqueuer 클래스의 타입정의 컨트롤 - Message Priority.ctl

 

 

 

3.png

 

그림 3 Message Priority.ctl그림 3 Message Priority.ctl

 

Queue에 우선순위를 할당하기 위한 우선순위 정보를 가지고 있는 타입정의 컨트롤입니다. Low, Normal, High 3가지의 우선순위가 있으며, 통상적으로 Normal 순위를 설정해서 Message를 Enqueue 합니다.

 

D. Message Enqueuer 클래스의 Method - Init from Existing Queue

 

 

 

4.png

 

그림 4 Init from Existing Queue그림 4 Init from Existing Queue

 

Message Enqueuer 클래스의 Data멤버에 Priority Queue 클래스 정보를 입력하기 위한 Method입니다.

 

E. Message Enqueuer 클래스의 Method - Equals Not A Refnum

 

 

 

5.png

 

그림 5 Equals Not A Refnum그림 5 Equals Not A Refnum

 

Messages Enqueuer에서 Message를 Enqueue하려고 하는 Queue 정보가 유효한지 검사합니다.

 

F. Message Enqueuer 클래스의 Method - Enqueue

 

 

 

6.png

 

그림 6 Enqueue그림 6 Enqueue

 

Message Enqueuer 클래스의 주요 기능인 Message를 Queue에 Enqueue 합니다. Message를 Enqueue하는 과정은

 

i. Message Enqueuer 클래스의 Data 멤버에서 Priority Queue 클래스 정보 읽기.

ii. Enqueue 하고자 하는 Message와 우선순위를 결정.

iii. Message Priority Enqueue의 Method - Priority Enqueue 에 모든 정보를 입력하여 Message를 Enqueue
* Message Priority Enqueue의 Method - Priority Enqueue 는 추후 Message Priority Enqueue 클래스에서 상세하게 다룹니다.

 

입니다

 

G. Message Enqueuer 클래스의 Method - Enqueue Critical



7.png

 

그림 7 Enqueue Critical그림 7 Enqueue Critical

 

Message Enqueuer 클래스의 Method - Enqueue 와 같은 기능입니다. 우선 순위만 High로 설정하여 항상 높은 우선 순위로 Message를 Enqueue하기 위한 Method 입니다.

 

  1. Queue - Message Dequeuer 클래스
    Message Dequeuer 클래스는 Actor Framework의 Actor가 지니고 있는 특정 Method를 수행하기 위해서 Queue를 통해 Message를 전달받습니다. 이때 Message를 Queue에서부터 Dequeue해서 가져오기 위해서 존재합니다.

 

A. Messages Dequeuer 클래스의 Data멤버

 

 

 

그림 8 Message Dequeuer 클래스의 Data멤버그림 8 Message Dequeuer 클래스의 Data멤버

 

그림 8의 Message Dequeuer 클래스의 Data멤버는 Priority Queue 클래스 입니다. 우선순위를 부여할 수 있도록 만들어진 Queue - Queue Buffers, Wait Msg, Wait Prior 등의 정보를 모두 가지고 있는 Priority Queue 클래스 정보를 가지고 Message와 함께 우선순위를 부여해서 Dequeue를 하기 위해서 입니다.

* Message Enqueuer, Messages Dequeuer 클래스 모두 같은 정보에서 데이터를 관리하기 때문에 같은 멤버를 가집니다.

 

B. Message Dequeuer 클래스의 Method

 

 

 

그림 9 Messages Dequeuer 클래스의 Method그림 9 Messages Dequeuer 클래스의 Method

 

Message Dequeuer 클래스는 그림 2와 같이 Init from Existing Queue, Dequeue Priority.ctl, Dequeue, Equals Not A Refnum의 3개의 Method와 1개의 타입정의 컨트롤을 가지고 있습니다.

 

C. Message Dequeuer 클래스의 타입정의 컨트롤 - Dequeue Priority.ctl

 

 

 

10.png

 

그림 10 Dequeue Priority.ctl그림 10 Dequeue Priority.ctl

 

Queue 에서 가져온 Message에 할당된 우선순위 정보를 가지고 있는 타입정의 컨트롤 입니다. Message Enqueuer 클래스에 있는 우선순위 타입정의 컨트롤과 조금 다르게 Critical 항목이 더 있습니다. 사실 Actor Framework에서는 4개의 Queue를 사용하고 있습니다. 각각의 Queue는 Low, Normal, High, Critical 4개로 이루어져 있습니다. Messages Enqueuer에서는 Low, Normal, High 3개지의 우선순위만 결정해서 Message를 보낼 수 있으며 Critical은 특수 목적으로 사용되고 있습니다.

 

D. Message Dequeuer 클래스의 Method - Init from Existing Queue

 

 

 

11.png

 

그림 11 Init from Existing Queue그림 11 Init from Existing Queue

 

Message Dequeuer 클래스의 Data멤버에 Priority Queue 클래스 정보를 입력하기 위한 Method입니다.

 

E. Message Dequeuer 클래스의 Method - Equals Not A Refnum

 

 

 

12.png

 

그림 12 Equals Not A Refnum그림 12 Equals Not A Refnum

 

Messages Dequeuer에서 Message를 Dequeue하려고 하는 Queue 정보가 유효한지 검사합니다.

 

F. Message Dequeuer 클래스의 Method - Dequeue

 

 

 

13.png

 

그림 13 Dequeue그림 13 Dequeue

 

Message Dequeuer 클래스의 주요 기능인 Message를 Queue에서 Dequeue 합니다. Message를 Dequeue하는 과정은

 

i. Message Dequeuer 클래스의 Data 멤버에서 Priority Queue 클래스 정보 읽기.

ii. Dequeue를 통해서 Queue에서 Message와 우선순위 정보를 확인합니다.
* Message Priority Enqueue의 Method - Priority Dequeue 는 추후 Message Priority Enqueue 클래스에서 상세하게 다룹니다.

 

입니다

 

 

 

지금까지 Actor Framework에서 Queue를 구성하는 클래스 중 Message Enqueuer, Message Dequeur에 대해서 알아보았습니다. 클래스 명 그대로 Actor Framework를 Queue구조를 통해서 Actor의 Method를 호출하는 Message를 Enqueue, Dequeue 하는 역할을 합니다.

 

다음 시간에 가장 중요한 Message Priority Queue 클래스를 다룰 예정인데 이 클래스에서 Low, Normal, High, Critical 우선순위의 Queue를 생성하고 Enqueue, Dequeue 등 핵심 알고리즘이 포함되어 있습니다. Message Priority Queue 클래스까지 소스코드를 분석하고 나면 Actor Framework의 Queue구조를 제대로 이해할 수 있을 것입니다.

 

 

 

감사합니다.

기여자