Automotive Software

실행 관리자(EM : Execution Manager) 기초 본문

아답티브 오토사 (Adaptive AUTOSAR)/실행 관리자 (Execution Manager)

실행 관리자(EM : Execution Manager) 기초

AutoSW 2020. 10. 12. 18:31
  1. 개관
    • 클래식 오토사에 EcuM, BswM 그리고 SchM 이 있었다면 아답티브 오토사에는 하나의 기능군(Functional Cluster, 이하 FC)에 속하는 Execution Manager(하위, EM)가 있다. EM은 전반적인 관점에서 플랫폼의 전체적인 초기화 그리고 플랫폼상에서 구동될 애플리케이션들의 시작과 종료를 제어하는 모듈이다.
    • 아답티브 오토사가 POSIX기반 운영체제에서 구동되다 보니 애플리케이션 제어를 위해 구동 운영체제 의존성 (프로세스 제어를 위해 OS API 사용) 을 가지며, 이 제어정보는 매니페스트 파일들(Machine Manifest, Execution Manifest)을 통해 기술되어진다.
    • 아답티브 플랫폼 소프트웨어 중 가장 먼저 실행되며, 실행 중 동적 업데이트를 위해 UCM FC와 상호 작용한다.
  2. 주기능
    • 아답티브 프로세스들(플랫폼 또는 애플리케이션)의 생존 주기(실행에서 종료까지) 관리
      • > 어떻게 실행시킬 것인지
    • 각 프로세스들의 스케줄링 정책 정의 (구동 중 실제 스케줄링은 해당 운영체제에 따름)
    • 상태 관리(Machine State와 Function Group State 등)를 통한 프로세스 제어
      • > 언제 실행하고 종료할 것인지
    • 애플리케이션 제어(에러 상황 시 종료 및 재실행 등) 및 자원 모니터링
      • > 할당 자원 제약
  3. 매니페스트
    • Execution Manifest : 설계시 생성되며 실행자(Executable)과 같이 머신상에 배치
      • 배치관련된 정보와 모델된 프로세스의 정보(시작 파라미터, 자원 그룹 할당, 스케줄링 정책 등)를 표준화된 방식으로 기술
    • Service Instance Manifest : 설계시 Execution Manifest와 함게 생성되어 머신상에 배치
      • 애플리케이션에서 사용되는 서비스 관련된 정보 기술
    • Machine Manifest : 특정 모신을 위해 통합시에 생성되며 Execution Manifest 와 같이 내부 변경이 있을 시 교체
      • 특정 실행자나 그것의 인스턴스등에 할당될수 없는 모든 정보 포함
    • 포맷 : 표준 ARXML 파일 형식에서 플랫폼에 특성화된 처리된 매니페스트(Processed manifest) 형식으로 변경하여 사용
  4.  인터페이스
    • AUTOASR Runtime for Adaptive (ARA) : 애플리케이션(Adaptive Application)에서 사용하는 API
    • Inter-Functional cluster (IFC) interface : 아답티트 플랫폼 소프트웨어 간 사용되는 API (ARA와 구분)
  5. 시스템 구동 순서
    • 운영체제 시작 -> EM 프로세스 가장 먼저 구동 -> EM이 다른 플랫폼 프로세스들 구동 -> EM이 다른 애플리케이션 프로세스 구동
  6. 종료
    • 대부분의 경우, EM의 요청에 의해 종료되나 프로세스가 스스로 종료할 수 있도록 옵션을 설정할 수 있음
    • M2::AUTOSARTemplates::AdaptivePlatform::ExecutionManifest::TerminationBehaviorEnum
      • processIsNotSelfTerminating : EM의 요청에 의해서만 종료
      • processIsSelfTerminating : EM의 요청없이도 종료할 수 있도록 허용
  7. 상태 관리
    • 머신 상태(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에 보고

그림 1. 수행객체(Executable)에서 쓰레드까지 관리 절차

 

그림 2. EM과 관련된 Manifest 파일들, 최종적으로 EM은 Processed Manifest를 참조한다.