[Archive] 강좌게시판

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

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

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

 

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

 

 

지난 시간까지 Actor Framework로 이루어진 예제(더하기, 곱하기 계산기)를 실습하면서 Actor Framework의 메커니즘을 느껴보았습니다. 바로 Actor Framework의 메커니즘을 이론상으로 알아보는 것보단 간단한 예제를 통해서 몸으로 체험한 후에 이론적으로 공부하는 것이 훨씬 도움이 될 것이라는 판단 때문이었습니다.
 

이번 시간부터는 Actor Framework의 라이브러리를 하나하나 분해하면서 원리를 이론적으로 알아보는 시간을 가지도록 하겠습니다.

 

Actor Framework 라이브러리는 지난 강의에 자주 설명한 바와 같이 LabVIEW를 설치할 때 기본적으로 LabVIEW가 설치된 폴더에 함께 설치됩니다. LabVIEW 2015버전 기준으로
National Instruments\LabVIEW 2015\vi.lib\ActorFramework 폴더에 설치됩니다.

 

Actor Framework.lvlib 파일을 실행하게 되면 Actor Framework 라이브러리를 사용할 수 있습니다.

 

 

 

  1. Actor Framework 구성요소
    Actor Framework는 크게 Message 클래스, Actor 클래스, Queue 구조 클래스 이렇게 3가지로 이루어져 있습니다.

 

그림 1 Actor Framework 라이브러리 구성요소그림 1 Actor Framework 라이브러리 구성요소

 

그림 과 같이 각각의 구성요소는 하나 또는 여러 개의 클래스로 구성되어 있습니다
각각의 구성요소에 대해서 간단히 알아보면

 

  1. Messages 클래스
    Actor 클래스의 Method를 실행합니다. Actor 클래스의 Method는 각자 자신의 Message 클래스를 가질 수 있습니다. Actor Framework에서는 Messages 클래스를 통해서 Actor 클래스의 Method를 호출해서 프로그램의 기능을 실행시킵니다.
    쉽게 설명하면 기존의 QDMH에서 생산자루프에서 Queue에 소비자 루프에서 실행할 명령을 생산하는 과정으로 생각하시면 됩니다.

 

  1. Actor 클래스
    Actor 클래스는 프로그램에서 구현해야 할 중요 데이터나 기능을 가집니다. 데이터는 Data멤버로, 기능은 Method 형태로 이루어집니다. Actor Framework에서 가장 중요한 역할을 하고 프로그램 설계할 때 Actor 클래스의 상속 구조 설계에 따라 프로그램의 완성, 유지보수 및 기능 확장에 큰 영향을 미칩니다.

 

  1. Queue 구조 클래스
    Actor Framework구조도 QDMH구조와 마찬가지로 Queue를 이용한 구조입니다. Queue를 통해 Actor의 Method 실행명령을 생산하고 소비합니다. 그렇기 때문에 Actor Framework에서는 Queue의 기능을 좀더 효율적이고 Actor Framework에 맞는 형태로 클래스형태로 구현되어 있습니다.

 

  1. Queue - Messages Queue 클래스
    Actor Framework구조의 소스코드를 분석하기 위해서 제일 먼저 분석해야 할 부분은 프로그램의 흐름을 관장하는 Queue 관련 클래스부터 살펴보아야 합니다.
    그 중에서도 가장 상위개념으로 존재하는 Messages Queue 클래스의 소스코드를 분석하도록 하겠습니다.

 

  • Message Queue 클래스의 Data멤버

 

 

그림 2 Messages Queue 클래스의 Data멤버그림 2 Messages Queue 클래스의 Data멤버

 

그림의 클래스의 멤버의 구성은 클래스로 이루어져 있습니다이 클래스들은 그림 에서 명시한 구조 클래스의 한 부분입니다즉클래스는 다른 관련 클래스의 상속구조에서는 상위클래스는 아니지만 멤버로 해당 클래스의 정보를 가짐으로써 상위개념으로 생각할 수 있습니다

 

  • Messages Queue 클래스의 Method

 

 

그림 3 Messages Queue 클래스의 Method그림 3 Messages Queue 클래스의 Method

 

 

 

Messages Queue 클래스는 그림 3과 같이 Obtain Message Queue, Read Dequeuer, Read Enqueuer, Release Message Queue 총 4개의 Method를 가집니다.

 

  • Messages Queue 클래스의 Method - Obtain Messages Queue

 

 

4.png 그림 4 Obtain Messages Queue그림 4 Obtain Messages Queue

 

 

Actor Framework는 우선순위를 할당해서 다양한 조건의 Queue를 사용하기 위해 Queue Buffers, Wait Msg, Wait Prior 등의 Queue를 생성합니다.
* Message Priority Queue에서 자세하게 다룹니다.
생성한 Queue 정보는 Message Queue 클래스의 Data멤버에 저장합니다.

 

  • Messages Queue 클래스의 Method - Read Enqueuer

 

 

5.png

 

그림 5 Read Enqueuer그림 5 Read Enqueuer

 

 

Obtain Messages Queue에서 Enqueue 용도 사용하기 위해 저장한 Queue 정보를 가져옵니다.

 

  • Messages Queue 클래스의 Method - Read Dequeuer

 

 

 

6.png

 

그림 6 Read Dequeuer그림 6 Read Dequeuer

 

 

 Obtain Messages Queue에서 Dequeue 용도 사용하기 위해 저장한 Queue 정보를 가져옵니다.

 

  • Messages Queue 클래스의 Method - Release Message Queue

 

7.png

 

그림 7 Release Message Queue그림 7 Release Message Queue

 

 

Obtain Messages Queue에서 생성한 Queue를 해제합니다. 해제하면서 아직 소비되지 못한 Queue를 확인할 수 있습니다.

 

 

 

Actor Framework 라이브러리와 라이브러리의 구성요소(Messages, Actor, Queue구조)를 알아보고 그 중 Queue구조 중 하나인 Message Queue 클래스의 소스코드를 알아보았습니다.

 

Message Queue클래스는 Queue 생성, Queue를 생성하거나 소비하기 위한 Queue정보 가져오기, Queue해제 등 Queue구조를 이루기 위한 기본 기능을 합니다.

 

다음 시간에는 Queue를 활용하는 Message Enqueuer, Messages Dequeuer, Messages Priority Queue 클래스의 Data멤버, Method를 분석하면서 그 역할에 대해서 알아보는 시간을 가지도록 하겠습니다

기여자