28
WONKWANG UNIVERSITY TMO 소소 소 소소 소소소 소소소소 (Ver 4.1.x) 2005 소 12 소 27 소

TMO 소개 및 구조 그리고 사용방법 (Ver 4.1.x)

  • Upload
    oceana

  • View
    66

  • Download
    6

Embed Size (px)

DESCRIPTION

2005 년 12 월 27 일. TMO 소개 및 구조 그리고 사용방법 (Ver 4.1.x). 목차. TMO 개요 TMO(Time-Triggered Message-Triggered Object) 개념 TMO 특성 TMO 구조 TMO Programming 환경 TMO Program 구조 TMO 설정 (.net 환경 ) 프로젝트 설정 (console/windows mode) config.ini 설정 TMO 프로그래밍 방법 TMO 선언 및 등록. TMO 개요. TMO 개념 - PowerPoint PPT Presentation

Citation preview

Page 1: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 소개 및 구조 그리고 사용방법(Ver 4.1.x)

2005 년 12 월 27 일

Page 2: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

목차 TMO 개요

TMO(Time-Triggered Message-Triggered Object) 개념 TMO 특성 TMO 구조 TMO Programming 환경 TMO Program 구조

TMO 설정 (.net 환경 ) 프로젝트 설정 (console/windows mode) config.ini 설정

TMO 프로그래밍 방법 TMO 선언 및 등록

Page 3: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 개요 TMO 개념

Time-triggered Message-triggered Object 기존 객체 모델에 대한 확장으로 객체 자체적인 실시간 특성에 따라

동작하는 실시간 객체 기존 객체는 클라이언트의 서비스 요청 메시지에 의해 동작하지만 , TMO 는

기존 객체 특성에 자치적인 동작 추가 TMO 특성

C++ TMO C++ 객체 타입 분산 컴퓨팅 객체

원격 메소드 호출을 통해서 상호동작 TCP/IP 통신 프로토콜의 투명성 각 TMO 名은 전역적으로 유일해야 한다

실시간 컴퓨팅 객체 자체적 동작 객체

AAC (Autonomous Activation Condition) 실시간 동작을 위한 시간 명세

또한 , TMO 는 논리적 멀티캐스트 채널 ( 즉 , RMMC) 을 통해서 상호동작

E.g.,{ “start-during (10am, 10:05am) finish-by 10:10am:, “for t = from 10am to 10:50am every 30min start-during (t,t+5 min) finish-by t+10min” }

Page 4: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 개요 TMO 구조

ODS (Object Data Store) EAC (Environment Access Capability) AAC (Autonomous Activation Condition)

SpM 실행에 대한 주기 (time-windows) 명세 SpM (Spontaneous Methods)

AAC 의 명세에 따라 동작 실제 정확하고 유연하게 시간을 정할 수 있는 SpM 스스로 동작 유지 ( 사람의 심장처럼 ) SpM 이 SvM 보다 우선순위

SvM (Service Methods) C++/Java 멤버함수의 확장 local/remote Client 에서 특정 SvM 호출

Page 5: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO Programming 환경 Hardware Operating System

Windows XP,2000, NT, Windows CE, Linux

TMO Support Middleware (TMOSM) OS 의 위에서 동작 TMO 프로그램 실행 동안 TMOSM 은

모든 시스템자원을 관리 ( CPU time, network access, disk I/O)

TMO Support Library (TMOSL) TMO 프로그램이 직접적으로 TMOSM 과

통신하지 않고 안정된 수준의 API( 현 C++ API ) 인 TMOSL 이용

MSI( Middleware Service Interface) 를 통해 application 요청을 TMOSM 에 전달

C++ complier suite TMOSM 4.xx 는 .NET 2003 에서

test

그림 1. TMO Execution Environment

Page 6: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO Programming 구조 TMO Network 의 구조 고려할 필요 없음

Processes & Threads 객체의 위치 Low-level comm protocol

s

No specification of timing requirements in indirect terms (ex, priorities) 단지 , 객체 함수에

대해서 실행시작과 실행에 대한 Deadline 그리고 출력 동작의 time-windows

Page 7: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO Programming 구조 TMO Execution Engine - TMOSM (TMO Support Middleware)

WTST (Watchdog Timer & Scheduler Thread): Super-Micro-Thread TMOSM 에서 다른 모든 쓰레드 동작 / 스케쥴링 관리 그리고 데드라인

VMAT (Virtual Machine for Main Application Threads) SpMthread, SvMthread 등

VCT (Virtual Machine for Communication Threads) 통신 네트워크를 통해서 들어오는 메시지를 분산시켜서 목적지에 전달

VAT (Virtual Machine for Auxiliary Threads) I/O 관련 관련 동작 쓰레드

Page 8: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO Programming 구조 EAC (Environment Access Capability) 부분 (an ODS

extension)Gate 객체는 원격 객체 메소드를 효율적으로 호출하는 통로를 제공

I/O device interfaces, channel interfaces 등

각 원격 서비스 메소드를 위한 gate 는 보장된 서비스 시간 또는 통계적 서비스 시간과 관련

gate 에 대한 client 의 호출은 결과 도착을 위해 데드라인과 관련될 수 있다 .

Page 9: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO Programming 구조 Time-triggered (TT-) or spontaneous methods (SpM’s)

Clients 로 부터의 메시지에 의한 service methods (SvM’s) 와는 분명히 분리된다

Page 10: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO Programming 구조 Time-triggered (TT-) or spontaneous methods (SpM’s)

Page 11: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO Programming 구조 Deadline, GETB, lst~by

Page 12: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO Programming 구조

tmoNode1

TMO 에서 AAC 에 의한 동작

1 sec 2 sec 3 sec 4 sec 1 minuntil

estfrom

est est est

lst = 1.1 sec

lst = 2.1 sec

lst = 3.1 sec

lst = 4.1 sec

by = 1.2 sec

by = 2.2 sec

by = 3.2 sec

by = 4.2 sec

Deadline = 50 * 1000;GETB = 300 * 1000;

MicroSec from = 1 * 1000 * 1000;MicroSec until = 60 * 1000 * 1000;MicroSec every = 1 * 1000 * 1000;MicroSec est = 0;MicroSec lst = 100 * 1000;MicroSec by = 200 * 1000;

tmoNode2

1 sec 2 sec 3 sec 4 sec 1 minuntil

estfrom

est est est

est = 1.3 seclst = 1.4 sec

est = 2.3 seclst = 2.4 sec

est = 3.3 seclst = 3.4 sec

est = 4.3 seclst = 4.4 sec

by = 1.5 sec

by = 2.5 sec

by = 3.5 sec

by = 4.5 sec

Deadline = 50 * 1000;GETB = 300 * 1000;

MicroSec from = 1 * 1000 * 1000;MicroSec until = 60 * 1000 * 1000;MicroSec every = 1 * 1000 * 1000;MicroSec est = 300 * 1000;MicroSec lst = 400 * 1000;MicroSec by = 500 * 1000;

Page 13: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO Programming 구조 Time-Based Coordination of Distributed Actions

Page 14: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO Programming 구조 Time-triggered (TT-) or spontaneous methods (SpM’s) Time-window imposed on each output action and method comple

tion Guaranteed service time Client's deadline demand Statistical assurances of better service times

Page 15: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO Programming 구조 BCC ( Basic Concurrency Constraint)

같은 ODSS(Data) 에 대한 접근을 원할 때 , SvM 의 time-windows 에서 수행하는 SpM 이 없을 경우에만 SvM 이 수행하도록 허락

SpM 실행은 SvM 실행보다 더 높은 우선순위BCC 는 SpM 과 SvM 사이의 잠재적 충돌 방지

BCC 는 SpMs 의 동시 실행이나 SvMs 의 동시실행에 제약을 가하지 않는다

Page 16: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO Programming 구조 Example: SpM1 과 SvM1 은 같은 ODSS 에 접근한다고

가정하자 .두 method 의 하나가 ODSS 에 쓸 때의 SpM1 의 호출간격은 1sec 이고 SpM1 의 GCT 는 0.2sec 이고 SvM1 의 GCT 는 0.9초라고 가정한다 . SvM1 의 최대 실행시간이 너무 길기 때문에 , SpM1 의 실행의 하나 주기의

끝과 SpM1 실행의 다음 주기의 시작 사이에 scheduled 할 수 없다 . BCC 인해 SvM1 이 수행하도록 허락되지 않음 SvM1 은 여러 개의 더 작은 SvM 으로 잘라질 것임

Page 17: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 설정 TMO Programming Tool-Kit Download

http://dream.eng.uci.edu/TMODownload/agree.asp TMOSL(4.1.8-d) 의 Appendix G 에 설정 방법 소개 . Appendix G 단점 – 불편하다 .

프로젝트 설정 시 라이브러리 등 모든 경로가 절대 경로로 잡힘 . TMO 지원 라이브러리의 위치가 변경될 경우 ,

프로젝트 속성 재설정 . TMO 프로그램을 다른 컴퓨터로 옮길 경우 ,

해당 컴퓨터에 설치된 TMO 지원 라이브러리 위치로 프로젝트 속성 재설정

새로운 설정 방법 상대 경로 이용

Page 18: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 설정 새 프로젝트 생성 (Console Mode)

새 프로젝트 Visual C++ 프로젝트 Win32 콘솔 프로젝트 응용 프로그램 설정 빈 프로젝트 체크

Build 실행 Debug 폴더 생성 ( 추가 파일 첨부하기 위해서 )

Page 19: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 설정 새 프로젝트 생성 (Windows Mode)

새 프로젝트 Visuall C++ 프로젝트 Win32 프로젝트 응용 프로그램 설정 콘솔 응용 프로그램 빈 프로젝트

Page 20: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 설정 라이브러리 파일 생성된 Debug 폴더로 복사

config.ini msvcp71d.dll msvcr71d.dll TMOSL.dll TMOSL.h TMOSL.lib

프로젝트 속성 설정 소스 파일에 cpp 파일 추가

속성 설정을 위해 최소 하나 필요 프로젝트 명 오른쪽 버튼 클릭 속성 선택

Page 21: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 설정 디버깅 작업 디렉터리

./Debug C/C++ 일반 추가 포함 디렉터리

./Debug C/C++ 전처리기 전처리기 정의

클릭 후 UNICODE;_UNICODE 입력 C/C++ 코드 생성 런타임 라이브러리

다중 스레드 디버그 DLL (/MDd) 선택 링커 일반 추가 라이브러리 디렉터리

./Debug 링커 입력 추가 종속성

TMOSL.lib

확인 버튼 클릭

Page 22: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 설정 기타설정

TMO 에서 소켓 사용 시 ‘링커명령줄추가옵션’ 에 ‘ ws2_32.lib’ 입력 Windows 관련 API 사용시 (ex, winmm.lib) TMO 라이브러리를 이용한 객체 선언 시 상단에 아래 소스 추가

예 ) TMO 선언부 , RMMC 선언부 , ODSS 선언부

#include "TMOSL.h"#pragma comment(lib, "TMOSL")#pragma comment(lib, “winmm”) etc…

using namespace TMO;

Page 23: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 설정 config.ini 파일 설정

ip_addr = 서버 IP 입력

local_ip = 로컬 IP 입력

num_of_DC_nodes = 분산 노드 개수

num_of_links = 분산 노드 개수

(본인 IP, 본인 IP) = 0 (본인 IP, 분산 노드 IP) = 0

… < 분산 노드 개수 만큼 >

(본인 IP, 분산 노드 IP) = 0

서버 IP

로컬 IP

분산 노드 개수

Page 24: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 프로그래밍 방법 main() 함수에서 TMO 인스턴스 생성

void main(){ StartTMOengine ();

tms TMO_start_time1 = tm4_DCS_age(3*1000*1000); Ahn_TMO Ahn(_T("Ahn_TMO"),_T("Ahn_SvM"), _T("RMMC1"), TMO_start_time1);

MainThrSleep ();}

Page 25: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 프로그래밍 방법 TMO 선언 및 등록

Ahn_TMO::Ahn_TMO(TCHAR * TMO_name, TCHAR * SvM_name, TCHAR * RMMC_name, tms TMO_start_time):RMMC1(RMMC_name, SvM_name){

// register SvM …

// register SpM …

// register TMO …}

class Ahn_TMO: public CTMOBase{public:

Ahn_TMO (TCHAR * TMO_name, TCHAR * SvM_name, TCHAR * RMMC_name, tms TMO_start_time);private:

Ahn_ODSS ODSS1;int Ahn_SpM();int Ahn_SvM(ParamStruct *); // SvM to be trigger by a SvM Parameter MessageCRMMC RMMC1;

};

< 생성자 : TMO 등록 >

< 클래스 : TMO 선언 >

Page 26: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 프로그래밍 방법 register SvM

// register SvM

SvM_RegistParam svm_spec; svm_spec.GETB = 20 * 1000; _tcscpy(svm_spec.name, SvM_name);

svm_spec.build_regist_info_ODSS(RMMC1.GetId(), RW);svm_spec.build_regist_info_ODSS(ODSS1.GetId(), RW);RegisterSvM((PFSvMBody)Ahn_SvM, &svm_spec);

Page 27: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 프로그래밍 방법 register SpM

// register SpM

SpM_RegistParam spm_spec;

MicroSec from = 4 * 1000 * 1000;MicroSec until = 1 * 60 * 60; until *= 1000 * 1000;MicroSec every = 1 * 1000 * 1000;MicroSec est = 0;MicroSec lst = 150 * 1000;MicroSec by = 400 * 1000;

AAC aac_spec(_T(""), tm4_DCS_age(from), tm4_DCS_age(until), every, est, lst, by);

spm_spec.build_regist_info_AAC(aac_spec);spm_spec.build_regist_info_ODSS(RMMC1.GetId(), RW);spm_spec.build_regist_info_ODSS(ODSS1.GetId(), RW);RegisterSpM((PFSpMBody)Ahn_SpM, &spm_spec);

Page 28: TMO  소개 및 구조 그리고 사용방법 (Ver 4.1.x)

WONKWANG UNIVERSITY

TMO 프로그래밍 방법 register TMO

// register TMO

TMO_RegistParam tmo_spec; _tcscpy(tmo_spec.global_name, TMO_name); tmo_spec.start_time = TMO_start_time; RegisterTMO(&tmo_spec);