모듈 ara::phm — Platform Health Management
모듈 가이드AI 생성
시간적 및 논리적 프로그램 실행을 모니터링하고 오류 발생 시 조정된 안전 반응을 트리거합니다.
시간적 및 논리적 프로그램 실행을 모니터링하고 오류 발생 시 조정된 안전 반응을 트리거합니다.
Platform Health Management는 중앙 데몬으로서 AUTOSAR_AP_SWS_PlatformHealthManagement 15쪽에 따라 애플리케이션 및 플랫폼 서비스의 기능 안전과 런타임 무결성을 모니터링합니다. 모니터링 대상 엔티티는 체크포인트를 시스템에 주기적 또는 이벤트 기반으로 보고하며, 시스템은 데드라인, 얼라이브 주기 및 논리적 제어 흐름을 평가합니다. 오류가 감지되면 모듈은 [SWS_PHM_01142]을(를) 통해 목표 복구 조치를 개시하도록 State Management에 통보합니다. 복구가 이루어지지 않거나 중앙 인스턴스에 장애가 발생하면 워치독 트리거가 안전한 머신 상태를 강제합니다.
Platform Health Management(PHM)는 ISO 26262 AUTOSAR_AP_SWS_PlatformHealthManagement 15쪽에 따라 기능 안전 및 소프트웨어 무결성을 확보하기 위한 AUTOSAR Adaptive Platform의 중앙 백그라운드 서비스를 구성합니다. 이는 결정론적 체크포인트 보고를 통해 애플리케이션 프로세스와 플랫폼 프로세스를 모두 모니터링하며, 주기적인 워치독 트리거를 통해 하드웨어를 보호합니다 AUTOSAR_AP_SWS_PlatformHealthManagement 46쪽.
컨텍스트 다이어그램: 모니터링 대상 애플리케이션, State Management, Execution Management, 워치독 및 IdsM과의 상호작용 속 PHM 데몬의 아키텍처적 임베딩. 출처: AUTOSAR_AP_SWS_PlatformHealthManagement 46쪽, AUTOSAR_AP_SWS_PlatformHealthManagement 15쪽, AUTOSAR_AP_EXP_SWArchitecture 131쪽.
기능 모니터링은 프로세스가 ReportCheckpoint()을(를) 통해 체크포인트를 보고하는 인터페이스 ara::phm::SupervisedEntity에 기반합니다([SWS_PHM_01123], [SWS_PHM_01127]). PHM은 검증을 세 가지 모니터링 유형으로 구분합니다 [SWS_PHM_01138]:
- 주기적 주파수 제어를 위한 Alive Supervision AUTOSAR_FO_ASWS_HealthMonitoring 22쪽,
- 최대 실행 기한 모니터링을 위한 Deadline Supervision AUTOSAR_AP_SWS_PlatformHealthManagement 15쪽,
- 정의된 제어 흐름 그래프 준수를 위한 Logical Supervision AUTOSAR_AP_SWS_PlatformHealthManagement 15쪽.
GlobalSupervisionStatus(으)로 압축됩니다([SWS_PHM_01137], SWS_PlatformHealthManagement 39쪽).
위반이 감지되면 PHM은 State Management가 Offer()을(를) 통해 서비스 준비 완료를 보고한 후 인터페이스 RecoveryAction의 RecoveryHandler()을(를) 거쳐 오류 처리를 State Management에 위임합니다([SWS_PHM_01142], [SWS_PHM_01143]). State Management가 오류를 해결할 수 없거나 중앙 데몬 자체에 장애가 발생하면 안전 에스컬레이션이 개입합니다. 즉, PHM이 FireWatchdogReaction()이(가) 포함된 네이티브 WatchdogInterface을(를) 통해 즉각적인 하드웨어 리셋을 트리거합니다([SWS_PHM_01256], AUTOSAR_AP_EXP_SWArchitecture 220쪽).
시퀀스 다이어그램: RecoveryHandler를 통한 State Management로의 오류 에스컬레이션 및 오류 발생 시 워치독 트리거로의 분기. 출처: [SWS_PHM_01142], [SWS_PHM_01256], AUTOSAR_AP_EXP_SWArchitecture 234쪽, AUTOSAR_AP_EXP_SWArchitecture 220쪽, AUTOSAR_AP_EXP_SWArchitecture 220쪽.
Health Management의 시스템 경계 및 기능적 임베딩
Platform Health Management(PHM)는 AUTOSAR Adaptive Platform 내에서 ISO 26262 AUTOSAR_AP_SWS_PlatformHealthManagement 15쪽에 따른 실행 무결성, 서비스 가용성 및 기능 안전을 모니터링하기 위한 중앙 기능 인스턴스를 구성합니다. 독립적인 백그라운드 서비스(daemon-based)로서 이 모듈은 안전 관련 프로세스에서 시간적 및 논리적 제어 흐름의 결정론적 검증을 구현합니다 AUTOSAR_AP_EXP_SWArchitecture 128쪽. 시스템 경계는 세 가지 주요 상호작용 축을 포함합니다: 모니터링 대상 소프트웨어 단위의 체크포인트 보고 수신, State Management로의 오류 에스컬레이션, 그리고 하드웨어 밀접 워치독으로의 주기적인 생존 신호 메시지 트리거링 AUTOSAR_AP_SWS_PlatformHealthManagement 46쪽.
모니터링 의무는 일반 사용자 애플리케이션(Adaptive Applications)에만 국한되지 않습니다. 오히려 Execution Management, State Management, Diagnostic Manager 및 시간 동기화와 같은 기본 플랫폼 서비스 또한 자체적으로 모니터링 대상 엔티티로 동작하고 체크포인트를 Health Management에 전송함으로써 PHM에 의한 모니터링 대상이 됩니다 AUTOSAR_AP_EXP_SWArchitecture 130쪽. 내부 보조 기능을 위해 PHM 데몬은 Execution Management의 인터페이스(프로세스 상태 보고용 ExecutionClient) 및 로깅 서브시스템(Log and Trace의 Logger)에 의존합니다 AUTOSAR_AP_EXP_SWArchitecture 131쪽.
컨텍스트 다이어그램: 모니터링 대상 애플리케이션, State Management, Execution Management, 워치독 및 IdsM과의 상호작용 속 PHM 데몬의 아키텍처적 임베딩. 출처: AUTOSAR_AP_SWS_PlatformHealthManagement 46쪽, AUTOSAR_AP_SWS_PlatformHealthManagement 15쪽, AUTOSAR_AP_EXP_SWArchitecture 131쪽.
모니터링 대상 엔티티의 계측 및 라이프사이클
프로세스 내의 논리적 모니터링 단위는 인터페이스 ara::phm::SupervisedEntity에 의해 매핑됩니다 [SWS_PHM_01123]. 인스턴스화는 시스템 매니페스트의 구성된 포트 경로를 참조하는 ara::core::InstanceSpecifier 타입의 형식화된 식별자를 명시적으로 지정하여 수행됩니다 AUTOSAR_TPS_ManifestSpecification 141쪽. 인스턴스 무결성을 보호하기 위해 복사 생성자 및 복사 할당 연산자는 삭제되었습니다([SWS_PHM_01212], [SWS_PHM_01213]). 단, 인스턴스의 이동은 허용됩니다([SWS_PHM_01214], [SWS_PHM_01215]). 폐기 시 소멸자가 엔티티를 정리합니다 [SWS_PHM_01211].
계측된 소프트웨어는 동기식 호출 ReportCheckpoint()을(를) 통해 지정된 프로그램 지점 도달을 보고합니다 [SWS_PHM_01127]. 파라미터로는 인터페이스 헤더에서 생성된 형식화된 체크포인트 열거형이 사용됩니다([SWS_PHM_00424], [SWS_PHM_00425]). PHM 데몬은 각 보고 시 프로세스 권한을 확인하며, 매니페스트에 모델링되지 않은 프로세스가 해당 메서드를 호출하면 접근 위반이 감지됩니다 [SWS_PHM_01127]. 보안에 중요한 이상 징후가 발생할 경우 PHM은 접근 오류를 Intrusion Detection System Manager(IdsM)로 전달할 수 있습니다 AUTOSAR_AP_EXP_SWArchitecture 236쪽.
엔티티 모니터링은 런타임에 상태에 따라 제어될 수 있습니다: 관련 Function Group의 현재 상태가 이를 허용하는 경우 Enable()을(를) 통해 모니터링이 활성화됩니다 [SWS_PHM_01130]. Disable()을(를) 사용하면 모니터링을 다시 중단할 수 있습니다 [SWS_PHM_01380]. 두 메서드 모두 ara::core::Future<void>을(를) 반환하며, 예를 들어 PhmErrc::kServiceNotReady과(와) 같은 비동기 제공 오류를 신호합니다 [SWS_PHM_01130].
시퀀스 다이어그램: 권한 검사 및 IdsM에 의한 보안 모니터링을 포함한 SupervisedEntity를 통한 체크포인트 보고 절차. 출처: [SWS_PHM_01127], AUTOSAR_AP_EXP_SWArchitecture 236쪽.
모니터링 유형 및 다단계 상태 집계
Platform Health Management는 세 가지 주요 기본 모니터링 유형을 구분합니다([SWS_PHM_01138], AUTOSAR_AP_EXP_SWArchitecture 128쪽):
- Alive Supervision(
kAliveSupervision): 주기적인 프로그램 부분이 정의된 시간 창 내에서 구성된 최소 및 최대 횟수의 체크포인트 보고를 전송하는지 확인합니다 AUTOSAR_FO_ASWS_HealthMonitoring 22쪽. - Deadline Supervision(
kDeadlineSupervision): 구성된 최소 및 최대 기한 준수 여부에 대해 두 체크포인트 간의 실행 시간을 모니터링합니다 AUTOSAR_AP_SWS_PlatformHealthManagement 15쪽. - Logical Supervision(
kLogicalSupervision): 허용되지 않는 점프나 제어 흐름 분기를 식별하기 위해 모델링된 전이 그래프를 기반으로 실행 순서를 검증합니다 AUTOSAR_AP_SWS_PlatformHealthManagement 15쪽.
각각의 개별 모니터링은 기본 상태(ElementarySupervisionStatus)에 대한 자체 상태 머신을 보유합니다 [SWS_PHM_01358]. PHM 시작 시 모든 기본 상태 머신은 kDEACTIVATED 상태로 초기화되고 오류 카운터는 0으로 설정됩니다 SWS_PlatformHealthManagement 31쪽. 활성화 후 모든 검사 기준이 충족되는 한 모니터링은 kOK(으)로 전환됩니다. 위반이 발생하면 상태는 kFailed(으)로 전환됩니다 [SWS_PHM_01358].
상태 다이어그램: kDEACTIVATED에서 kOK를 거쳐 kFailed에 이르는 기본 모니터링(ElementarySupervisionStatus)의 상태 전이. 출처: [SWS_PHM_01358], SWS_PlatformHealthManagement 31쪽.
여러 기본 모니터링은 상위 글로벌 모니터링으로 통합됩니다 SWS_PlatformHealthManagement 24쪽. 사양에 따르면 구성된 Global Supervision당 정확히 하나의 GlobalSupervisionStatus이(가) 존재하며, 이는 단일 Function Group에 엄격히 바인딩되고 여러 Function Group에 걸쳐 있을 수 없습니다([SWS_PHM_01137], SWS_PlatformHealthManagement 39쪽). 글로벌 상태는 kDEACTIVATED, kOK, kFAILED, kEXPIRED 및 kSTOPPED 상태를 통해 결과를 집계합니다 AUTOSAR_AP_SWS_PlatformHealthManagement 39쪽. kOK 상태는 관련된 모니터링 중 적어도 하나가 오류 없이 작동하고 단 하나도 오류 상태에 머물러 있지 않아야 함을 전제로 합니다 [SWS_PHM_01137].
상태 다이어그램: kDEACTIVATED, kOK, kFAILED, kEXPIRED 및 kSTOPPED를 포함하는 글로벌 모니터링 상태(GlobalSupervisionStatus)의 상태 모델. 출처: [SWS_PHM_01137], AUTOSAR_AP_SWS_PlatformHealthManagement 39쪽, SWS_PlatformHealthManagement 39쪽.
주기적 워치독 서비스 및 하드웨어 보호
정지(hang) 또는 치명적인 시스템 다운에 대비하여 전체 연산 장치의 실행 가능성을 보호하기 위해 PHM은 인터페이스 apext::phm::WatchdogInterface을(를) 통해 하드웨어 밀접 워치독 서브시스템을 연결합니다 [SWS_PHM_01255]. 이 네이티브 플랫폼 확장(Platform Extension)은 서비스 미들웨어를 통해 구현되지 않고 결정론적 네이티브 드라이버 호출로 실행됩니다 AUTOSAR_AP_EXP_SWArchitecture 130쪽.
구성 가능한 주기마다 PHM은 내부적으로 모든 활성 모니터링 메트릭을 확인하고, 전체 상태가 긍정적일 경우 AliveNotification()을(를) 통해 워치독으로 생존 신호 메시지를 전송합니다([SWS_PHM_01255], AUTOSAR_AP_EXP_SWArchitecture 233쪽). 구성된 시간 창 내에 이 메시지가 누락되면(예: PHM 데몬이 차단되었거나 중요 모니터링이 실패한 경우) 워치독 인터페이스는 자체적으로 하드웨어 안전 반응을 개시합니다 [SWS_PHM_01255].
시퀀스 다이어그램: 모니터링 결과의 주기적 평가 및 워치독 인터페이스로의 Alive 신호 전송. 출처: [SWS_PHM_01255], AUTOSAR_AP_EXP_SWArchitecture 233쪽, AUTOSAR_AP_EXP_SWArchitecture 130쪽.
State Management와의 복구 조치 조정
PHM은 모니터링 조건의 위반을 감지하면 자체적으로 오류 복구를 개시하지 않고 중앙 조정 인스턴스로서 State Management에 조치를 위임합니다(AUTOSAR_AP_EXP_SWArchitecture 129쪽, AUTOSAR_AP_EXP_SWArchitecture 220쪽). 이러한 디커플링은 기능적 시스템 상태 및 프로세스 재시작에 대한 결정이 State Management에 남아 있어야 한다는 아키텍처 원칙을 유지합니다 AUTOSAR_AP_SWS_StateManagement 28쪽.
State Management는 포트 인터페이스 ara::phm::RecoveryAction을(를) 통해 오류 인계 준비 상태를 등록합니다 [SWS_PHM_01141]. Offer() 호출을 통해 오류 메시지 수신이 활성화되며 [SWS_PHM_01143], StopOffer()을(를) 사용하여 State Management는 서비스 준비 상태를 다시 비활성화할 수 있습니다 [SWS_PHM_01144]. 파생 클래스의 완전한 생성 이전에 조기 콜백이 호출됨으로써 발생하는 치명적인 경쟁 조건 및 정의되지 않은 동작을 배제하기 위해 RecoveryAction에 대한 복사 및 이동 연산은 명시적으로 금지됩니다([SWS_PHM_01149], [SWS_PHM_01150], [SWS_PHM_01151], [SWS_PHM_01152]).
오류 발생 시 PHM은 State Management의 순수 가상 콜백 함수 RecoveryHandler()을(를) 호출하고 오류 이벤트 ara::exec::ExecutionErrorEvent 및 위반된 모니터링 유형 TypeOfSupervision을(를) 전달합니다 [SWS_PHM_01142]. 그런 다음 State Management는 Function Group의 후속 상태를 결정하고 Execution Management에 상태 변경 또는 영향받는 프로세스의 재시작을 지시합니다(AUTOSAR_AP_EXP_SWArchitecture 169쪽, AUTOSAR_AP_EXP_SWArchitecture 220쪽).
시퀀스 다이어그램: RecoveryHandler를 통한 State Management로의 오류 에스컬레이션 및 오류 발생 시 워치독 트리거로의 분기. 출처: [SWS_PHM_01142], [SWS_PHM_01256], AUTOSAR_AP_EXP_SWArchitecture 234쪽, AUTOSAR_AP_EXP_SWArchitecture 220쪽, AUTOSAR_AP_EXP_SWArchitecture 220쪽.
오류 발생 시 동작 및 다단계 에스컬레이션 경로
Platform Health Management는 런타임 오류 제어를 위해 단계적 에스컬레이션 전략을 구현합니다 AUTOSAR_AP_EXP_SWArchitecture 200쪽. 모니터링 오류가 발생하면 먼저 기본 경로를 따릅니다: 모니터링이 State Management에 오류를 보고하고, State Management는 RecoveryHandler()을(를) 통해 제어된 재구성을 수행합니다 [SWS_PHM_01142].
State Management가 복구를 수행할 수 없거나(예: 오류 코드 PhmErrc::kSMCanNotHandleRecovery(으)로 응답됨) 응답이 타임아웃되는 경우 보조 에스컬레이션 경로가 개입합니다([SWS_PHM_01240], AUTOSAR_AP_EXP_SWArchitecture 220쪽). 이 경우 PHM은 소프트웨어 계층을 우회하고 FireWatchdogReaction()을(를) 통해 즉각적인 하드웨어 밀접 비상 반응(시스템 리셋 또는 Safe State로의 전환)을 강제합니다([SWS_PHM_01256], AUTOSAR_AP_EXP_SWArchitecture 201쪽).
중앙 플랫폼 데몬 자체의 장애는 특히 치명적입니다: Execution Management 또는 State Management에 장애가 발생하면 운영체제 수준에서의 조정된 복구가 더 이상 불가능합니다(AUTOSAR_AP_EXP_SWArchitecture 235쪽, AUTOSAR_AP_EXP_SWArchitecture 235쪽). PHM은 이러한 데몬의 잘못되었거나 누락된 체크포인트를 통해 이 상태를 감지하고 지체 없이 워치독 반응을 트리거합니다 [SWS_PHM_01256].
C++ API의 모든 오류 상황은 오류 도메인 ara::phm::PhmErrorDomain을(를) 통해 유형화됩니다([SWS_PHM_01247], [SWS_PHM_01251]). 오류 코드는 열거형 PhmErrc에 요약되어 있습니다([SWS_PHM_01240], [SWS_PHM_01245]). 동기식 인터페이스 및 예외를 위해 MakeErrorCode() [SWS_PHM_01244]과(와) 같은 보조 함수 및 예외 타입 PhmException이(가) 제공됩니다([SWS_PHM_01243], [SWS_PHM_01250]).
매니페스트 모델링, ID 동기화 및 인스턴스화
애플리케이션 코드와 PHM 데몬 간의 올바른 연결은 AUTOSAR 매니페스트에서의 엄격한 ID 동기화를 기반으로 합니다 AUTOSAR_AP_TPS_ManifestSpecification 566쪽. 애플리케이션 설계에서 엔티티는 집계된 PhmCheckpoint 요소를 갖는 PhmSupervisedEntityInterface(으)로 모델링됩니다 AUTOSAR_AP_TPS_ManifestSpecification 208쪽. 머신 수준 배포를 위해 프로세스 인스턴스당 SupervisionCheckpoint이(가) 생성되며, 이는 포트 및 실행 컨텍스트(Process)에 대한 인스턴스 참조를 확인합니다 TPS_ManifestSpecification 568쪽.
동일한 소프트웨어 컴포넌트 타입이 동일한 프로세스 내에서든 여러 프로세스에 걸쳐서든 다중 인스턴스화되는 경우, 매니페스트 구성은 각 포트에 대해 고유한 InstanceSpecifier을(를) 생성합니다 AUTOSAR_AP_SWS_PlatformHealthManagement 51쪽. 이를 통해 PHM 데몬은 소스 코드의 동일한 체크포인트 ID를 해당 컴포넌트 인스턴스 및 프로세스 신원에 명확하게 매핑할 수 있습니다 AUTOSAR_AP_TPS_ManifestSpecification 566쪽. 해석: C++ 클래스 SupervisedEntity이(가) 전송 세부 사항을 투명하게 캡슐화하므로, 애플리케이션 유저 공간과 PHM 데몬 간의 프로세스 간 통신은 운영체제별로 최적화(예: 공유 메모리 또는 POSIX 도메인 소켓을 통해)되어 있을 것으로 추정됩니다 [SWS_PHM_01123]. 질문 (열림)
오류 처리 측면에서 매니페스트는 State Management의 PPortPrototype에 할당된 RecoveryNotification 요소를 모델링합니다 AUTOSAR_AP_TPS_ManifestSpecification 587쪽. 이때 타임아웃 값(recoveryNotificationTimeout)도 정의되며, 이 시간이 만료되면 오류 처리는 실패한 것으로 분류됩니다 AUTOSAR_AP_TPS_ManifestSpecification 587쪽.
더 자세한 증거
릴리스 R25-11에서 Platform Health Management의 구속력 있는 규범적 설계는 특히 다음과 같은 사양 앵커에 기반합니다:
- 모니터링 핵심 요소: [SWS_PHM_01123] 및 [SWS_PHM_01127]은(는) C++ 클래스
SupervisedEntity및 보고 메커니즘ReportCheckpoint()을(를) 정의하며, [SWS_PHM_01130] 및 [SWS_PHM_01380]은(는) 활성화 및 비활성화를 규정합니다. - 상태 모델: [SWS_PHM_01358]은(는) 기본 상태(
kDEACTIVATED,kOK,kFailed)를 지정하며, [SWS_PHM_01137]은(는) Function Group별 글로벌 상태 집계 SWS_PlatformHealthManagement 39쪽을(를) 명시합니다. - 복구 및 에스컬레이션: [SWS_PHM_01141], [SWS_PHM_01142] 및 [SWS_PHM_01143]는 State Management에서
RecoveryHandler()의 프로비저닝 및 실행을 제어하고, [SWS_PHM_01256]는 하드웨어 워치독을 통한 비상 에스컬레이션을 보장합니다. - 오류 도메인 및 예외: [SWS_PHM_01240]은
PhmErrorDomain([SWS_PHM_01247], [SWS_PHM_01251]) 및PhmException[SWS_PHM_01243]을 통해 전달되는 오류 코드(PhmErrc)를 도입합니다.
이 모듈 가이드는 AUTOSAR Adaptive 릴리스 R25-11의 표준 사양 및 시스템 아키텍처 요구사항을 기반으로 합니다.
function: 27 class: 5 enumeration: 5 type alias: 2 header file: 1 variable: 1
ara::phm::supervised_entities::{ <hierarchical-namespace-list-lower-skeleton>}
<SE><Checkpoint>주제 맵
이 릴리스에 대한 요소 데이터가 없습니다
apext::phm
class for interface to hardware watchdog Note: class WatchdogInterface although identifiable in code as an interface, it is a PlatformExtens
ara::phm
Defines the error domain for Platform Health Management.
상속 대상 ara::core::ErrorDomain
Exception type thrown by Platform Health Management.
상속 대상 ara::core::Exception
RecoveryAction abstract class.
SupervisedEntity Class.
Returns the global PhmErrorDomain object.
constexpr const ara::core::ErrorDomain & GetPhmDomain () noexcept;Creates an error code.
constexpr ara::core::ErrorCode MakeErrorCode (PhmErrc code, ara::core::ErrorDomain::SupportDataType data) noexcept;Enumeration of elementary supervision status. Scoped Enumeration of uint32_t.
enum class ElementarySupervisionStatus : std::uint32_t {...};Enumeration of global supervision status. Scoped Enumeration of uint32_t.
enum class GlobalSupervisionStatus : std::uint32_t {...};Defines an enumeration class for the Platform Health Management error codes.
enum class PhmErrc : ara::core::ErrorDomain::CodeType {...};Enumeration of type of supervision. Scoped Enumeration of uint32_t.
enum class TypeOfSupervision : std::uint32_t {...};ara::phm::supervised_entities::{ <hierarchical-namespace-list-lower-skeleton>}
Defines the checkpoints for the ara::phm::PhmSupervisedEntityInterface
enum class {<phmssi-sn>} : std::uint32_t {...};For each enumeration in {<phm-checkpoint-list>} in [SWS_PHM_00424] there shall exist a C++ enumerator declaration.
{<symbol-phm-checkpoint>} = {<phm-checkpoint-value>};네임스페이스
- apext::phm 1 Klassen, 0 freie Funktionen
- ara::phm 4 Klassen, 2 freie Funktionen
- ara::phm::supervised_entities::{ <hierarchical-namespace-list-lower-skeleton>} 0 Klassen, 0 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 · 독일어 원문