관리 메뉴
Automotive Software
실행 관리자(EM : Execution Manager) 기초 본문
아답티브 오토사 (Adaptive AUTOSAR)/실행 관리자 (Execution Manager)
실행 관리자(EM : Execution Manager) 기초
AutoSW 2020. 10. 12. 18:31- 개관
- 클래식 오토사에 EcuM, BswM 그리고 SchM 이 있었다면 아답티브 오토사에는 하나의 기능군(Functional Cluster, 이하 FC)에 속하는 Execution Manager(하위, EM)가 있다. EM은 전반적인 관점에서 플랫폼의 전체적인 초기화 그리고 플랫폼상에서 구동될 애플리케이션들의 시작과 종료를 제어하는 모듈이다.
- 아답티브 오토사가 POSIX기반 운영체제에서 구동되다 보니 애플리케이션 제어를 위해 구동 운영체제 의존성 (프로세스 제어를 위해 OS API 사용) 을 가지며, 이 제어정보는 매니페스트 파일들(Machine Manifest, Execution Manifest)을 통해 기술되어진다.
- 아답티브 플랫폼 소프트웨어 중 가장 먼저 실행되며, 실행 중 동적 업데이트를 위해 UCM FC와 상호 작용한다.
- 주기능
- 아답티브 프로세스들(플랫폼 또는 애플리케이션)의 생존 주기(실행에서 종료까지) 관리
- > 어떻게 실행시킬 것인지
- 각 프로세스들의 스케줄링 정책 정의 (구동 중 실제 스케줄링은 해당 운영체제에 따름)
- 상태 관리(Machine State와 Function Group State 등)를 통한 프로세스 제어
- > 언제 실행하고 종료할 것인지
- 애플리케이션 제어(에러 상황 시 종료 및 재실행 등) 및 자원 모니터링
- > 할당 자원 제약
- 아답티브 프로세스들(플랫폼 또는 애플리케이션)의 생존 주기(실행에서 종료까지) 관리
- 매니페스트
- Execution Manifest : 설계시 생성되며 실행자(Executable)과 같이 머신상에 배치
- 배치관련된 정보와 모델된 프로세스의 정보(시작 파라미터, 자원 그룹 할당, 스케줄링 정책 등)를 표준화된 방식으로 기술
- Service Instance Manifest : 설계시 Execution Manifest와 함게 생성되어 머신상에 배치
- 애플리케이션에서 사용되는 서비스 관련된 정보 기술
- Machine Manifest : 특정 모신을 위해 통합시에 생성되며 Execution Manifest 와 같이 내부 변경이 있을 시 교체
- 특정 실행자나 그것의 인스턴스등에 할당될수 없는 모든 정보 포함
- 포맷 : 표준 ARXML 파일 형식에서 플랫폼에 특성화된 처리된 매니페스트(Processed manifest) 형식으로 변경하여 사용
- Execution Manifest : 설계시 생성되며 실행자(Executable)과 같이 머신상에 배치
- 인터페이스
- AUTOASR Runtime for Adaptive (ARA) : 애플리케이션(Adaptive Application)에서 사용하는 API
- Inter-Functional cluster (IFC) interface : 아답티트 플랫폼 소프트웨어 간 사용되는 API (ARA와 구분)
- 시스템 구동 순서
- 운영체제 시작 -> EM 프로세스 가장 먼저 구동 -> EM이 다른 플랫폼 프로세스들 구동 -> EM이 다른 애플리케이션 프로세스 구동
- 종료
- 대부분의 경우, EM의 요청에 의해 종료되나 프로세스가 스스로 종료할 수 있도록 옵션을 설정할 수 있음
- M2::AUTOSARTemplates::AdaptivePlatform::ExecutionManifest::TerminationBehaviorEnum
- processIsNotSelfTerminating : EM의 요청에 의해서만 종료
- processIsSelfTerminating : EM의 요청없이도 종료할 수 있도록 허용
- 상태 관리
- 머신 상태(Machine State)
- 제어기의 최상위 상태(startup/shoutdown/restart)와 플랫폼 계층의 상태를 정의
- Machine Manifest에 정의
- 기능군 상태(Function Group State)
- 기능적으로 관련된 애플리케이션들의 구동 상태(start/stop) 관리
- Machine Manifest에 정의
- 프로세스 상태(Process State)
- 에플리케이션 생존 주기 관리 (다중 객체 => 다중 실행 상태)
- 유휴(Idle)->시작(Starting)->구동(Running)->종료 중(Terminating)->종료(Terminated)
- 유휴 : 프로세스 생성 및 자원 할당 전
- 시작 : 프로세스 생성 및 자원 할당 후
- 구동 : 프로세스가 스케줄링되었을 때
- 종료 중 : 종료 신호를 받거나 스스로 종료를 결정한 후
- 종료 : 프로세스가 종료되고 자원 반납 후
- 상태 관리는 waitpid()를 통해 구현될 수 있음
- EM 내부 상태 머신에 의해 구현
- 그림 1에서와 같이 EM은 프로세스의 생성과 종료만을 관리하고, 쓰레드는 직접 운영체제의 API를 사용하여 프로세스 내부적으로 관리
- 실행 상태(Execution State)
- 해당 애플리케이션 객체별 내부 실행 상태 변화 관리
- 프로세스의 시작부터 종료까지의 상태
- 초기화(Initializing)->실행(Running)->종료(Terminating)
- 종료
- EM -> 프로세스 : SIGTERM 신호 전송
- 프로세스 -> EM : EM의 인터페이스를 통해 응답(ExecutionClient::ReportExecutionState) 후 종료 진행
- 내부 상태 변경 시, EM에 보고
- 머신 상태(Machine State)
'아답티브 오토사 (Adaptive AUTOSAR) > 실행 관리자 (Execution Manager)' 카테고리의 다른 글
실행 관리자(EM) : 기능 그룹 상태 (Function Group State) (0) | 2023.07.18 |
---|---|
실행 관리자(EM) : 머신 상태 (Machine State) (0) | 2023.07.17 |
실행 관리자(EM) : 프로세스 시작과 종료 (0) | 2020.10.16 |