모듈 ara::exec — Execution Management
모듈 가이드AI 생성
AUTOSAR Adaptive Platform에서 프로세스의 결정론적 수명 주기를 조정하고 상태 변경을 실행합니다.
AUTOSAR Adaptive Platform에서 프로세스의 결정론적 수명 주기를 조정하고 상태 변경을 실행합니다.
Execution Management 모듈은 중앙 플랫폼 데몬으로서 AUTOSAR Adaptive Platform에서 POSIX 프로세스의 결정론적 수명 주기를 관리합니다(AUTOSAR AP SWS ExecutionManagement 18쪽). 이는 ExecutionClient을 통해 실행 상태를 수신하고([SWS_EM_02003]), 프로세스를 시작 및 종료하여 State Management에서 요청한 Function Group 전환을 비동기식으로 구현합니다([SWS_EM_02278]). 주요 제약 조건으로는 Function Group 간 시작 종속성 금지 및 기한 초과 시 엄격한 오류 에스컬레이션이 있습니다(SWS ExecutionManagement 65쪽).
기능 클러스터 Execution Management(EM)는 POSIX 사용자 공간에서 결정론적 프로세스 관리 및 수명 주기 제어를 위한 AUTOSAR Adaptive Platform의 중앙 플랫폼 데몬을 형성합니다(AUTOSAR AP SWS ExecutionManagement 18쪽). 이는 정책 결정(Policy)과 기술적 집행(Mechanism)을 엄격히 분리합니다: State Management가 목표 상태를 지정하는 동안, EM은 프로세스 생성, 순서 및 시그널 처리를 제어합니다(AUTOSAR AP EXP SWArchitecture 56쪽). 애플리케이션 및 플랫폼 서비스는 [SWS_EM_02562] ExecutionClient을 통해 [SWS_EM_02003] ReportExecutionState()으로 자신의 상태 [SWS_EM_02000] kRunning를 보고하는 반면, State Management는 [SWS_EM_02276] StateClient을 통해 상태 전환을 요청합니다(AUTOSAR AP EXP SWArchitecture 48쪽).
컨텍스트 다이어그램: State Management, POSIX 운영체제 및 클라이언트 프로세스 간 중앙 데몬으로서의 Execution Management 임베딩. 출처: AUTOSAR AP EXP SWArchitecture 56쪽, AUTOSAR AP SWS ExecutionManagement 18쪽, [SWS_EM_02003], [SWS_EM_02278].
운영체제에 의해 시작된 후 EM은 State Management를 초기화하고 [SWS_EM_02279] GetInitialMachineStateTransitionResult()을 통해 이를 머신 상태 Startup로 동기화합니다(AUTOSAR AP SWS ExecutionManagement 52쪽). [SWS_EM_02586] FunctionGroup 상태의 후속 전환은 [SWS_EM_02278] SetState()을 통해 비동기식으로 트리거됩니다: EM은 더 이상 필요하지 않은 프로세스를 SIGTERM을 통해 질서 정연하게 종료하고, 로컬 시작 종속성을 고려하여 후속 프로세스를 시작하며, 모든 프로세스가 작동 준비가 완료되는 즉시 결과 Future을 해결(resolve)합니다(AUTOSAR AP SWS ExecutionManagement 53쪽, SWS ExecutionManagement 71쪽).
시퀀스 다이어그램: 질서 정연한 프로세스 종료 및 프로세스 재시작을 포함한 Function Group의 성공적인 상태 전환. 출처: AUTOSAR AP SWS ExecutionManagement 53쪽, AUTOSAR AP SWS StateManagement 26쪽, [SWS_EM_02278], [SWS_EM_02003].
실시간 요구사항을 충족하기 위해 EM은 페이지 폴트(Page Fault)를 방지하기 위한 결정론적 프로세스 프리매핑(Pre-mapping)(SWS ExecutionManagement 82쪽)과 결정론적 워커 풀 및 동기화 메커니즘을 지원합니다(SWS ExecutionManagement 86쪽, SWS ExecutionManagement 92쪽). 프로세스가 시작 타임 윈도우를 위반하면 오류 처리가 적용됩니다: EM은 프로세스를 종료하고 Function Group을 Undefined State로 전환하며 등록된 콜백을 호출하고([SWS_EM_02276]) [SWS_EM_02542] GetExecutionError() 및 모듈 오류 도메인 [SWS_EM_02281] ExecErrc을 통해 오류 세부 정보를 제공합니다(AUTOSAR AP SWS ExecutionManagement 54쪽).
Execution Management의 시스템 경계 및 기능적 역할
exec 모듈(Execution Management, EM)은 POSIX 기반 사용자 공간에서 결정론적 프로세스 및 수명 주기 관리를 위한 AUTOSAR Adaptive Platform의 중앙 플랫폼 서비스를 구성합니다(AUTOSAR AP SWS ExecutionManagement 18쪽). 아키텍처의 특징은 제어 결정(Policy)과 기술적 집행(Mechanism)의 엄격한 분리입니다: 기능 클러스터 State Management가 상위 운영 모드 및 전환 결정을 내리는 동안, Execution Management는 프로세스 할당, 시작 순서, 모니터링 및 종료를 실행하는 인스턴스로 작동합니다(AUTOSAR AP EXP SWArchitecture 56쪽).
Execution Management는 두 가지 상호 보완적인 역할을 위한 네이티브 C++ 런타임 인터페이스를 구현합니다: [SWS_EM_02562] ara::exec::ExecutionClient 클래스를 통해 애플리케이션 프로세스 및 플랫폼 내부 데몬(Diagnostic Management, Platform Health Management 또는 Communication Management 등)이 자신의 실행 상태를 데몬에 보고합니다(AUTOSAR AP EXP SWArchitecture 48쪽, AUTOSAR AP SWS CommunicationManagement 34쪽). State Management는 [SWS_EM_02276] ara::exec::StateClient 인터페이스를 통해 데몬과 상호작용하여 Function Group 및 머신 전환을 요청하고 상태 메시지를 쿼리합니다(AUTOSAR AP SWS ExecutionManagement 17쪽).
컨텍스트 다이어그램: State Management, POSIX 운영체제 및 클라이언트 프로세스 간 중앙 데몬으로서의 Execution Management 임베딩. 출처: AUTOSAR AP EXP SWArchitecture 56쪽, AUTOSAR AP SWS ExecutionManagement 18쪽, [SWS_EM_02003], [SWS_EM_02278].
상태 아키텍처 및 다단계 수명 주기 모델
Execution Management의 상태 관리는 서로 상관관계가 있는 세 가지 계층 수준에서 작동합니다: 상위 Function Group 상태(Function Group States), 데몬 관점에서의 외부 운영체제 수명 주기 상태(Process States) 및 프로세스 내부 상태(Execution States) (AUTOSAR EXP PlatformDesign 29쪽, AUTOSAR AP SWS ExecutionManagement 62쪽). 데몬 수준에서 구성된 프로세스는 일반적으로 Idle, Starting, Running, Terminating 및 Terminated 체인을 통과합니다(AUTOSAR AP SWS StateManagement 32쪽).
프로세스 내부 관점을 위해 모듈은 열거형 [SWS_EM_02000] ara::exec::ExecutionState을 정의합니다. 이때 [SWS_EM_02003] ReportExecutionState() 멤버 함수를 통해 Execution Management에 표준적으로 보고 가능한 상태는 kRunning입니다. Initializing와 같은 이전 단계는 Execution Management의 경우 사용자 코드 실행 전 POSIX 프로세스의 첫 번째 스케줄링과 함께 즉시 시작되는 암시적 상태입니다([SWS_EM_02000], AUTOSAR EXP AdaptivePlatformInterfacesGuidelines 11쪽). 애플리케이션 운영 및 전력 모드(PowerModes)는 운영체제 상태를 나타내지 않으며, 활성 수명 주기 단계 Running에 논리적으로 연결됩니다(AUTOSAR AP SWS StateManagement 32쪽).
상태 다이어그램: Function Group 상태와 Execution Management의 수명 주기 단계 및 내부 프로세스 상태와의 상관관계. 출처: AUTOSAR EXP PlatformDesign 29쪽, AUTOSAR AP SWS ExecutionManagement 32쪽, [SWS_EM_02000].
결정론적 플랫폼 시동 및 초기화
AUTOSAR Adaptive Platform의 시작은 운영체제 커널에서 시작되는 엄격하게 조정된 시퀀스로 수행됩니다(AUTOSAR EXP SWArchitecture 148쪽). 운영체제는 프로그램 진입점 main()을 통해 Execution Management를 시작합니다(AUTOSAR AP SWS ExecutionManagement 52쪽). 자체 초기화 직후 Execution Management는 State Management 프로세스를 생성합니다(AUTOSAR AP SWS StateManagement 25쪽).
State Management는 초기화되자마자 ExecutionClient를 통해 [SWS_EM_02003] ReportExecutionState(ExecutionState::kRunning)로 작동 준비 완료 상태를 Execution Management에 보고합니다(AUTOSAR AP SWS ExecutionManagement 52쪽). 이어서 State Management는 [SWS_EM_02279] GetInitialMachineStateTransitionResult()를 통해 상태 Startup으로의 초기 머신 전환 완료에 동기화되며, 이 메서드는 ara::core::Future<void>을 반환합니다([SWS_EM_02279], AUTOSAR EXP SWArchitecture 151쪽). 이 Future가 성공적으로 해결된 후에만 State Management는 후속 Function Group 상태로의 변경을 요청합니다(AUTOSAR AP SWS StateManagement 24쪽).
시퀀스 다이어그램: 운영체제 개시부터 State Management 시작 및 후속 상태 릴리스까지의 플랫폼 시동. 출처: AUTOSAR AP SWS ExecutionManagement 52쪽, AUTOSAR AP SWS StateManagement 25쪽, [SWS_EM_02279], [SWS_EM_02003].
Function Group 제어 및 비동기 상태 전환
상태 변경은 [SWS_EM_02586] ara::exec::FunctionGroup 및 [SWS_EM_02324] ara::exec::FunctionGroupState 클래스의 대표 인스턴스를 통해 애플리케이션 수준에서 모델링됩니다. 결정론적 리소스 관리를 보장하기 위해 FunctionGroup는 복사할 수 없으며([SWS_EM_02322], [SWS_EM_02327]) 이동만 가능하고([SWS_EM_02328], [SWS_EM_02329]) 인스턴스 비교를 통해 평가할 수 있습니다([SWS_EM_02267], [SWS_EM_02268]). FunctionGroupState은 Function Group을 목표 상태와 연결하며([SWS_EM_02324]) 복사 및 이동 시맨틱을 모두 지원합니다([SWS_EM_02325], [SWS_EM_02330], [SWS_EM_02331], [SWS_EM_02332], [SWS_EM_02273], [SWS_EM_02274]).
State Management는 [SWS_EM_02278] StateClient::SetState()을 호출하여 전환을 시작하며, 이는 ara::core::Future<void>을 동기식으로 반환합니다(AUTOSAR AP SWS StateManagement 31쪽). 그런 다음 Execution Management는 전환 체인을 실행합니다: 대상 상태에서 더 이상 구성되지 않은 실행 중인 프로세스는 SIGTERM 시그널을 수신합니다(AUTOSAR AP SWS ExecutionManagement 53쪽). 프로세스가 종료된 후 EM은 대상 상태에 대해 지정된 프로세스를 시작하고 [SWS_EM_02003] ReportExecutionState()을 통해 이들의 상태 보고를 대기합니다(AUTOSAR AP SWS StateManagement 26쪽, AUTOSAR SWS ExecutionManagement 49쪽). 관련된 모든 프로세스가 성공적으로 시작된 후에야 SetState()의 Future가 긍정적으로 해결(resolve)됩니다(AUTOSAR AP SWS ExecutionManagement 53쪽).
시작 종속성(Execution Dependencies)은 개별 Function Group의 경계를 넘거나 서로 다른 상태에 걸쳐 정의되어서는 안 됩니다(SWS ExecutionManagement 65쪽). 상태 변경 시 Execution Management는 요청된 대상 상태(RequestedState)의 프로세스에 대해 시작 종속성 해결을 엄격히 수행합니다(SWS ExecutionManagement 71쪽). 시작 상태와 대상 상태 간에 프로세스의 시작 구성이 다른 경우 Execution Management는 프로세스 재시작을 강제합니다(SWS ExecutionManagement 65쪽).
시퀀스 다이어그램: 질서 정연한 프로세스 종료 및 프로세스 재시작을 포함한 Function Group의 성공적인 상태 전환. 출처: AUTOSAR AP SWS ExecutionManagement 53쪽, AUTOSAR AP SWS StateManagement 26쪽, [SWS_EM_02278], [SWS_EM_02003].
프로세스 구성, 메모리 할당 및 사전 매핑
실제 시스템에는 표준 애플리케이션 외에도 상태 보고 기능이 통합되지 않은 프로세스(Non-reporting Processes)가 존재합니다. 이러한 프로세스는 시작 후 자동으로 Running 실행 상태로 전환됩니다(SWS ExecutionManagement 44쪽). 그럼에도 불구하고 종속성 체인을 보호하기 위해 프로젝트별 컴패니언 프로세스(Companion Process)를 선행 배치할 수 있으며, 이 프로세스는 비보고 프로세스의 기능적 작동 준비 상태를 평가하고 종속 후속 프로세스가 시작되기 전에 대리로 [SWS_EM_02003] kRunning을 보고합니다(SWS ExecutionManagement 44쪽, SWS ExecutionManagement 48쪽).
리소스 요구사항과 관련하여 매개변수 resourceConsumption.memoryUsage은 프로세스 자체가 할당할 수 있는 메인 메모리를 제한하며, 이는 POSIX 시스템에서 일반적으로 RLIMIT_AS을 통해 구현됩니다(SWS ExecutionManagement 82쪽, SWS ExecutionManagement 104쪽). 시간적 결정론과 기능 안전을 보장하기 위해 Execution Management는 사전 매핑(Pre-mapping)을 지원합니다: 매니페스트에서 Process.preMapping가 활성화된 경우 EM은 프로세스의 코드와 데이터 영역을 물리 메모리에 미리 완전히 매핑합니다(SWS ExecutionManagement 82쪽). 이는 초기 접근 시 온디맨드 로딩(Demand-Loading)으로 인한 지연을 방지하고, 안전 필수 오류 처리 루틴의 상시 가용성을 보장하며, 손상된 파일 시스템으로 인한 후속 오류를 방지합니다(SWS ExecutionManagement 82쪽).
결정론적 실행 시간 및 동기화 모델
실시간 중요 애플리케이션을 위해 Execution Management는 결정론적 실행을 위한 메커니즘을 제공합니다(SWS ExecutionManagement 79쪽). 주기적 프로세스는 서비스 디스커버리, 초기화, 실행 및 종료와 같은 모드를 제어하는 대기 지점 API를 통해 클라이언트와 상호작용합니다(SWS ExecutionManagement 79쪽). 병렬 데이터 처리는 워커 풀을 통해 추상화됩니다. 데이터 결정론을 보장하기 위해 WorkerRunnable의 동시 인스턴스 간 데이터 교환은 금지됩니다(SWS ExecutionManagement 86쪽).
여러 이중화 또는 분산 프로세스를 동기화하기 위해 DeterministicSyncMaster이 사용됩니다(SWS ExecutionManagement 92쪽). 이벤트 기반 활성화의 경우 구성 가능한 정책(예: M-out-of-N 다수결 결정)이 동기화 응답을 전송할 시점을 결정합니다(SWS ExecutionManagement 92쪽). 주기적 활성화의 경우 시작 시 일회성 동기화가 수행된 후, 글로벌 타임스탬프 버퍼가 시작 주기를 결정하고 후속 주기는 로컬 카운터 및 기한 모니터링을 통해 자율적으로 제어됩니다(SWS ExecutionManagement 92쪽). 동기화 마스터는 독립 실행형 프로세스로 배포되거나 소프트웨어 락스텝 프레임워크 내에서 라이브러리로 통합될 수 있습니다(SWS ExecutionManagement 94쪽, SWS ExecutionManagement 95쪽).
오류가 발생한 경우의 동작
오류 발생 시 아키텍처는 일반적인 결함 허용 방식에 따라 오류 감지(Error Detection) 및 후속 오류 복구(Error Recovery)로 구분됩니다(SWS ExecutionManagement 86쪽, SWS ExecutionManagement 107쪽). Function Group 상태 전환 중에 스타트업 타임아웃이 발생하는 경우(예: 시작 중인 프로세스가 파라미터화된 기한 내에 [SWS_EM_02003] ReportExecutionState(kRunning)을 발행하지 않음), Execution Management는 정규 시퀀스를 중단합니다(AUTOSAR AP SWS ExecutionManagement 54쪽).
이 경우 내부 에스컬레이션에는 SIGKILL을 통한 결함 프로세스의 강제 종료가 포함될 수 있습니다. 구성된 재시작 시도가 모두 소진된 후 해당 Function Group은 정의되지 않은 상태(Undefined Function Group State)로 전환됩니다(AUTOSAR AP SWS ExecutionManagement 54쪽, [SWS_EM_02542]). 정의되지 않은 상태로 진입 시 Execution Management는 StateClient 인스턴스화 시 전달된 콜백 undefinedStateCallback를 트리거합니다([SWS_EM_02276], [SWS_EM_02561]). 그러면 State Management는 [SWS_EM_02542] GetExecutionError()을 통해 관련 이벤트 ara::exec::ExecutionErrorEvent를 쿼리할 수 있으며, 이 이벤트는 결함이 있는 Function Group([SWS_EM_02546]) 및 오류 코드 [SWS_EM_02541] ExecutionError([SWS_EM_02545])를 제공합니다([SWS_EM_02542]). Function Group이 다시 정의된 상태에 있으면 GetExecutionError()이 실패합니다([SWS_EM_02542]). 질문 Q-5a8b6ad2e9e22eb4 (열림)
시퀀스 다이어그램: 상태 전환 중 프로세스의 스타트업 타임아웃 시 오류 처리. 출처: AUTOSAR AP SWS ExecutionManagement 54쪽, [SWS_EM_02278], [SWS_EM_02276], [SWS_EM_02542].
일관된 오류 처리를 위해 이 모듈에는 오류 도메인 [SWS_EM_02286] ara::exec::ExecErrorDomain이 포함되어 있습니다([SWS_EM_02290] GetExecErrorDomain()을 통해 조회 가능, 식별 이름은 [SWS_EM_02287] Name()를 통해, 텍스트 메시지는 [SWS_EM_02288] Message()을 통해 확인 가능). 특정 실행 오류는 열거형 코드 [SWS_EM_02281] ExecErrc로 매핑되며(예: kNoCommunication) [SWS_EM_02291] MakeErrorCode()를 통해 생성됩니다. 예외 처리가 활성화된 경우 [SWS_EM_02289] ThrowAsException()를 통해 오류가 [SWS_EM_02283] ExecException(으)로 발생할 수 있습니다. 또한 소멸자 [SWS_EM_02002] ~ExecutionClient()은 SIGTERM에 대해 이전에 할당된 핸들러가 원래 값으로 재설정되도록 보장하며, 프로세스 생성 시 전달된 중단 콜백은 종료 신호 수신 시 적용됩니다([SWS_EM_02560], [SWS_EM_02562]). 추가적인 복구 조치(프로세스 재시작 또는 비상 운전 전환과 같은 Recovery Actions)는 Platform Health Management와의 협력을 통해 조율됩니다(AUTOSAR SWS ExecutionManagement 54쪽).
더 자세한 증거
다음 개요는 주요 명세 요구사항 및 참조 위치를 다루는 주제 영역에 매핑합니다.
| 주제 영역 | 주요 참조 위치 | 기능적 의미 |
|---|---|---|
| 프로세스 상태 보고 | [SWS_EM_02000], [SWS_EM_02003], [SWS_EM_02562] | ExecutionState 정의, ExecutionClient 생성 및 kRunning 보고. |
| Function Group 제어 | [SWS_EM_02278], [SWS_EM_02586], [SWS_EM_02324] | SetState()을 통한 비동기 상태 전환, FunctionGroup 및 FunctionGroupState의 인스턴스화. |
| 플랫폼 스타트업 | [SWS_EM_02279], AUTOSAR AP SWS ExecutionManagement S. 52 | 초기 머신 상태 Startup에 대한 State Management 동기화. |
| 오류 처리 및 콜백 | [SWS_EM_02276], [SWS_EM_02542], [SWS_EM_02281] | undefinedStateCallback 등록, ExecutionErrorEvent 쿼리, 오류 도메인 ExecErrc. |
| 메모리 결정론 | SWS ExecutionManagement S. 82 | 디맨드 로딩으로 인한 지연 시간을 방지하기 위한 프로세스의 완전한 사전 매핑. |
이 모듈 가이드는 AUTOSAR Adaptive Platform 릴리스 R25-11의 명세 데이터를 기반으로 자동 생성되었습니다.
function: 42 class: 6 enumeration: 2 variable: 2 type alias: 1 struct: 1
주제 맵
이 릴리스에 대한 요소 데이터가 없습니다
ara::exec
Defines a class representing the Execution Management error domain.
상속 대상 ara::core::ErrorDomain
Defines a class for exceptions to be thrown by the Execution Management.
상속 대상 ara::core::Exception
The ara::exec::ExecutionClient API provides the functionality for a Process to report its Execution State to the Execution Management.
Represents an execution error event which happens in a Function Group.
Class representing Function Group defined in meta-model (ARXML)
Class representing Function Group State defined in meta-model (ARXML)
ara::exec::StateClient is an interface of Execution Management that is used by State Management to request transitions between Function Grou
Returns a reference to the global ExecErrorDomain object.
const ara::core::ErrorDomain & GetExecErrorDomain () noexcept;Creates an instance of ErrorCode.
ara::core::ErrorCode MakeErrorCode (ara::exec::ExecErrc code, ara::core::ErrorDomain::SupportDataType data) noexcept;Defines an enumeration class for the Execution Management error codes.
enum class ExecErrc : ara::core::ErrorDomain::CodeType {...};Defines the internal states of a Process. Scoped enumeration of uint32_t. Please note that ara::exec::ExecutionState includes only states reportable by the Process to Execution Management and therefore does not include enumerations e.g. the "Initializing" state mentioned in Figure 7.2 and Figure 7.12, which are an implied states for Execution Management. The Initializing state starts when Process is first scheduled (so no code executed yet) and ends when kRunning is reported ([SWS_EM_01004]). The Terminating state starts when termination is requested by Execution Management and ends when the Process terminates ([SWS_EM_01404]). For the reasons mentioned, Execution Management assumes that Process is in initializing state until kRunning will be reported by it.
enum class ExecutionState : std::uint32_t {...};Represents the execution error.
using ExecutionError = std::uint32_t;네임스페이스
- ara::exec 7 Klassen, 2 freie Funktionen
모듈의 UML 클래스 다이어그램
Abgerundete Rahmen = Namespaces; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = modulfremde bzw. externe Basisklassen. Klicken öffnet die Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · 독일어 원문